qla2xxx: Shutdown board on thermal shutdown aen.
authorJoe Carnuccio <joe.carnuccio@qlogic.com>
Wed, 6 Jul 2016 15:14:19 +0000 (11:14 -0400)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 15 Jul 2016 19:31:31 +0000 (15:31 -0400)
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>
drivers/scsi/qla2xxx/qla_dbg.c
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_isr.c
drivers/scsi/qla2xxx/qla_os.c

index b985fcbdf79b8b8342533a21bf5522a853643647..0671f07a0974b5e0b02a4048b2a13466d93ec3e1 100644 (file)
@@ -27,7 +27,7 @@
  * |                              |                    | 0x303a                |
  * | DPC Thread                   |       0x4023       | 0x4002,0x4013  |
  * | Async Events                 |       0x5089       | 0x502b-0x502f  |
- * |                              |                    | 0x505e         |
+ * |                             |                    | 0x5047         |
  * |                              |                    | 0x5084,0x5075 |
  * |                              |                    | 0x503d,0x5044  |
  * |                              |                    | 0x507b,0x505f |
index 7f861474d7b52a2387f477b415ffb75457688ad3..2b7e4f5574bb99f50c06cb280d61799f35589217 100644 (file)
@@ -829,6 +829,7 @@ struct mbx_cmd_32 {
 #define MBA_FW_RESTART_CMPLT   0x8060  /* Firmware restart complete */
 #define MBA_INIT_REQUIRED      0x8061  /* Initialization required */
 #define MBA_SHUTDOWN_REQUESTED 0x8062  /* Shutdown Requested */
+#define MBA_TEMPERATURE_ALERT  0x8070  /* Temperature Alert */
 #define MBA_DPORT_DIAGNOSTICS  0x8080  /* D-port Diagnostics */
 #define MBA_FW_INIT_FAILURE    0x8401  /* Firmware initialization failure */
 #define MBA_MIRROR_LUN_CHANGE  0x8402  /* Mirror LUN State Change
index ea8641b47c86b8df3f216932f40af2404781d920..a2d7935ffeea06896a02a6b0bcae1d250d2aa144 100644 (file)
@@ -1158,6 +1158,13 @@ global_port_update:
                    mb[1] == 2 ? "done (error)" : "other");
                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:
                ql_dbg(ql_dbg_async, vha, 0x5057,
                    "Unknown AEN:%04x %04x %04x %04x\n",
index 7c0b60ca158f82724c4809a2e986f174df75fc36..dc608ce46340875a5f7f8c6298ee3655004b36b0 100644 (file)
@@ -2901,6 +2901,10 @@ skip_dpc:
        qlt_add_target(ha, base_vha);
 
        clear_bit(PFLG_DRIVER_PROBING, &base_vha->pci_flags);
+
+       if (test_bit(UNLOADING, &base_vha->dpc_flags))
+               return -ENODEV;
+
        return 0;
 
 probe_init_failed:
@@ -2947,7 +2951,10 @@ iospace_config_failed:
        ha = NULL;
 
 probe_out:
+       pci_disable_pcie_error_reporting(pdev);
        pci_disable_device(pdev);
+       if (test_bit(UNLOADING, &base_vha->dpc_flags))
+               return -ENODEV;
        return ret;
 }
 
@@ -5002,6 +5009,9 @@ qla2x00_do_dpc(void *data)
                    "DPC handler waking up, dpc_flags=0x%lx.\n",
                    base_vha->dpc_flags);
 
+               if (test_bit(UNLOADING, &base_vha->dpc_flags))
+                       break;
+
                qla2x00_do_work(base_vha);
 
                if (IS_P3P_TYPE(ha)) {