mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
qla2xxx: Shutdown board on thermal shutdown aen.
Signed-off-by: Joe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
ad1ef1777d
commit
a29b3dd7aa
4 changed files with 19 additions and 1 deletions
|
@ -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 {
|
||||||
#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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
"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)) {
|
||||||
|
|
Loading…
Reference in a new issue