From d9e62e513081c66d85bb0b91740ce3313c56b546 Mon Sep 17 00:00:00 2001 From: Vikas Chaudhary Date: Wed, 22 Aug 2012 07:45:25 -0400 Subject: [PATCH] [SCSI] qla4xxx: Clear interrupt while unloading driver. 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 Reviewed-by: Mike Christie Signed-off-by: James Bottomley --- drivers/scsi/qla4xxx/ql4_os.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index fa1a3594edd5..f06b7c5b6b9a 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);