aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla4xxx/ql4_isr.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_isr.c')
-rw-r--r--drivers/scsi/qla4xxx/ql4_isr.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_isr.c b/drivers/scsi/qla4xxx/ql4_isr.c
index 49032f640da1..df3fd9b4561e 100644
--- a/drivers/scsi/qla4xxx/ql4_isr.c
+++ b/drivers/scsi/qla4xxx/ql4_isr.c
@@ -1022,7 +1022,8 @@ void qla4_82xx_interrupt_service_routine(struct scsi_qla_host *ha,
1022 uint32_t intr_status) 1022 uint32_t intr_status)
1023{ 1023{
1024 /* Process response queue interrupt. */ 1024 /* Process response queue interrupt. */
1025 if (intr_status & HSRX_RISC_IOCB_INT) 1025 if ((intr_status & HSRX_RISC_IOCB_INT) &&
1026 test_bit(AF_INIT_DONE, &ha->flags))
1026 qla4xxx_process_response_queue(ha); 1027 qla4xxx_process_response_queue(ha);
1027 1028
1028 /* Process mailbox/asynch event interrupt.*/ 1029 /* Process mailbox/asynch event interrupt.*/
@@ -1399,6 +1400,7 @@ qla4_8xxx_msix_rsp_q(int irq, void *dev_id)
1399{ 1400{
1400 struct scsi_qla_host *ha = dev_id; 1401 struct scsi_qla_host *ha = dev_id;
1401 unsigned long flags; 1402 unsigned long flags;
1403 int intr_status;
1402 uint32_t ival = 0; 1404 uint32_t ival = 0;
1403 1405
1404 spin_lock_irqsave(&ha->hardware_lock, flags); 1406 spin_lock_irqsave(&ha->hardware_lock, flags);
@@ -1412,8 +1414,15 @@ qla4_8xxx_msix_rsp_q(int irq, void *dev_id)
1412 qla4xxx_process_response_queue(ha); 1414 qla4xxx_process_response_queue(ha);
1413 writel(0, &ha->qla4_83xx_reg->iocb_int_mask); 1415 writel(0, &ha->qla4_83xx_reg->iocb_int_mask);
1414 } else { 1416 } else {
1415 qla4xxx_process_response_queue(ha); 1417 intr_status = readl(&ha->qla4_82xx_reg->host_status);
1416 writel(0, &ha->qla4_82xx_reg->host_int); 1418 if (intr_status & HSRX_RISC_IOCB_INT) {
1419 qla4xxx_process_response_queue(ha);
1420 writel(0, &ha->qla4_82xx_reg->host_int);
1421 } else {
1422 ql4_printk(KERN_INFO, ha, "%s: spurious iocb interrupt...\n",
1423 __func__);
1424 goto exit_msix_rsp_q;
1425 }
1417 } 1426 }
1418 ha->isr_count++; 1427 ha->isr_count++;
1419exit_msix_rsp_q: 1428exit_msix_rsp_q: