Commit a29b3dd7 authored by Joe Carnuccio's avatar Joe Carnuccio Committed by Martin K. Petersen

qla2xxx: Shutdown board on thermal shutdown aen.

Signed-off-by: default avatarJoe Carnuccio <joe.carnuccio@qlogic.com>
Signed-off-by: default avatarHimanshu Madhani <himanshu.madhani@qlogic.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent ad1ef177
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
* | | | 0x303a | * | | | 0x303a |
* | DPC Thread | 0x4023 | 0x4002,0x4013 | * | DPC Thread | 0x4023 | 0x4002,0x4013 |
* | Async Events | 0x5089 | 0x502b-0x502f | * | Async Events | 0x5089 | 0x502b-0x502f |
* | | | 0x505e | * | | | 0x5047 |
* | | | 0x5084,0x5075 | * | | | 0x5084,0x5075 |
* | | | 0x503d,0x5044 | * | | | 0x503d,0x5044 |
* | | | 0x507b,0x505f | * | | | 0x507b,0x505f |
......
...@@ -829,6 +829,7 @@ struct mbx_cmd_32 { ...@@ -829,6 +829,7 @@ struct mbx_cmd_32 {
#define MBA_FW_RESTART_CMPLT 0x8060 /* Firmware restart complete */ #define MBA_FW_RESTART_CMPLT 0x8060 /* Firmware restart complete */
#define MBA_INIT_REQUIRED 0x8061 /* Initialization required */ #define MBA_INIT_REQUIRED 0x8061 /* Initialization required */
#define MBA_SHUTDOWN_REQUESTED 0x8062 /* Shutdown Requested */ #define MBA_SHUTDOWN_REQUESTED 0x8062 /* Shutdown Requested */
#define MBA_TEMPERATURE_ALERT 0x8070 /* Temperature Alert */
#define MBA_DPORT_DIAGNOSTICS 0x8080 /* D-port Diagnostics */ #define MBA_DPORT_DIAGNOSTICS 0x8080 /* D-port Diagnostics */
#define MBA_FW_INIT_FAILURE 0x8401 /* Firmware initialization failure */ #define MBA_FW_INIT_FAILURE 0x8401 /* Firmware initialization failure */
#define MBA_MIRROR_LUN_CHANGE 0x8402 /* Mirror LUN State Change #define MBA_MIRROR_LUN_CHANGE 0x8402 /* Mirror LUN State Change
......
...@@ -1158,6 +1158,13 @@ qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb) ...@@ -1158,6 +1158,13 @@ qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb)
mb[1] == 2 ? "done (error)" : "other"); mb[1] == 2 ? "done (error)" : "other");
break; break;
case MBA_TEMPERATURE_ALERT:
ql_dbg(ql_dbg_async, vha, 0x505e,
"TEMPERATURE ALERT: %04x %04x %04x\n", mb[1], mb[2], mb[3]);
if (mb[1] == 0x12)
schedule_work(&ha->board_disable);
break;
default: default:
ql_dbg(ql_dbg_async, vha, 0x5057, ql_dbg(ql_dbg_async, vha, 0x5057,
"Unknown AEN:%04x %04x %04x %04x\n", "Unknown AEN:%04x %04x %04x %04x\n",
......
...@@ -2901,6 +2901,10 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2901,6 +2901,10 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
qlt_add_target(ha, base_vha); qlt_add_target(ha, base_vha);
clear_bit(PFLG_DRIVER_PROBING, &base_vha->pci_flags); clear_bit(PFLG_DRIVER_PROBING, &base_vha->pci_flags);
if (test_bit(UNLOADING, &base_vha->dpc_flags))
return -ENODEV;
return 0; return 0;
probe_init_failed: probe_init_failed:
...@@ -2947,7 +2951,10 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2947,7 +2951,10 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
ha = NULL; ha = NULL;
probe_out: probe_out:
pci_disable_pcie_error_reporting(pdev);
pci_disable_device(pdev); pci_disable_device(pdev);
if (test_bit(UNLOADING, &base_vha->dpc_flags))
return -ENODEV;
return ret; return ret;
} }
...@@ -5002,6 +5009,9 @@ qla2x00_do_dpc(void *data) ...@@ -5002,6 +5009,9 @@ qla2x00_do_dpc(void *data)
"DPC handler waking up, dpc_flags=0x%lx.\n", "DPC handler waking up, dpc_flags=0x%lx.\n",
base_vha->dpc_flags); base_vha->dpc_flags);
if (test_bit(UNLOADING, &base_vha->dpc_flags))
break;
qla2x00_do_work(base_vha); qla2x00_do_work(base_vha);
if (IS_P3P_TYPE(ha)) { if (IS_P3P_TYPE(ha)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment