From: Vikas Chaudhary <[email protected]>

while processing the stop firmware mailbox command on driver unload,
a interrupt is processed which causes kernel panic as the response
queue is not valid.

Fix is to clear the interrupt in free_adapter call just after
disabling the interrupts.

Signed-off-by: Vikas Chaudhary <[email protected]>
---
 drivers/scsi/qla4xxx/ql4_os.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index fa1a359..f06b7c5 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -3487,6 +3487,15 @@ static void qla4xxx_free_adapter(struct scsi_qla_host 
*ha)
                ha->isp_ops->disable_intrs(ha);
        }
 
+       if (is_qla40XX(ha)) {
+               writel(set_rmask(CSR_SCSI_PROCESSOR_INTR),
+                      &ha->reg->ctrl_status);
+               readl(&ha->reg->ctrl_status);
+       } else if (is_qla8022(ha)) {
+               writel(0, &ha->qla4_8xxx_reg->host_int);
+               readl(&ha->qla4_8xxx_reg->host_int);
+       }
+
        /* Remove timer thread, if present */
        if (ha->timer_active)
                qla4xxx_stop_timer(ha);
-- 
1.7.8.GIT

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to