scsi: qla2xxx: Fix driver reload for ISP82xx
authorHimanshu Madhani <hmadhani@marvell.com>
Fri, 30 Aug 2019 22:23:59 +0000 (15:23 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 7 Sep 2019 19:38:55 +0000 (15:38 -0400)
HINT_MBX_INT_PENDING is not guaranteed to be cleared by firmware. Remove
check that prevent driver load with ISP82XX.

Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Link: https://lore.kernel.org/r/20190830222402.23688-4-hmadhani@marvell.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_mbx.c
drivers/scsi/qla2xxx/qla_nx.c

index a82b6db2fa9dc537ca23804e4a80e187afad77cf..4c858e2d0ea8f5a3cddb8bd53890fdc88478ab9b 100644 (file)
@@ -253,21 +253,9 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
        if ((!abort_active && io_lock_on) || IS_NOPOLLING_TYPE(ha)) {
                set_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
 
-               if (IS_P3P_TYPE(ha)) {
-                       if (RD_REG_DWORD(&reg->isp82.hint) &
-                               HINT_MBX_INT_PENDING) {
-                               ha->flags.mbox_busy = 0;
-                               spin_unlock_irqrestore(&ha->hardware_lock,
-                                       flags);
-
-                               atomic_dec(&ha->num_pend_mbx_stage2);
-                               ql_dbg(ql_dbg_mbx, vha, 0x1010,
-                                   "Pending mailbox timeout, exiting.\n");
-                               rval = QLA_FUNCTION_TIMEOUT;
-                               goto premature_exit;
-                       }
+               if (IS_P3P_TYPE(ha))
                        WRT_REG_DWORD(&reg->isp82.hint, HINT_MBX_INT_PENDING);
-               else if (IS_FWI2_CAPABLE(ha))
+               else if (IS_FWI2_CAPABLE(ha))
                        WRT_REG_DWORD(&reg->isp24.hccr, HCCRX_SET_HOST_INT);
                else
                        WRT_REG_WORD(&reg->isp.hccr, HCCR_SET_HOST_INT);
index a79f8da38abe705c307d30b54bcd32a06c7863ca..2b2028f2383e60c9cc6cf0aadad3551e294de43a 100644 (file)
@@ -2287,7 +2287,8 @@ qla82xx_disable_intrs(struct qla_hw_data *ha)
 {
        scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev);
 
-       qla82xx_mbx_intr_disable(vha);
+       if (ha->interrupts_on)
+               qla82xx_mbx_intr_disable(vha);
 
        spin_lock_irq(&ha->hardware_lock);
        if (IS_QLA8044(ha))