Browse Source

[SCSI] qla2xxx: Stop unconditional completion of mailbox commands issued in interrupt mode during firmware hang.

Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Giridhar Malavali 13 years ago
parent
commit
841c5e5cee
2 changed files with 8 additions and 2 deletions
  1. 4 1
      drivers/scsi/qla2xxx/qla_nx.c
  2. 4 1
      drivers/scsi/qla2xxx/qla_os.c

+ 4 - 1
drivers/scsi/qla2xxx/qla_nx.c

@@ -4075,7 +4075,10 @@ qla82xx_chip_reset_cleanup(scsi_qla_host_t *vha)
 				ha->flags.isp82xx_fw_hung = 1;
 				if (ha->flags.mbox_busy) {
 					ha->flags.mbox_int = 1;
-					complete(&ha->mbx_intr_comp);
+					if (test_bit(MBX_INTR_WAIT,
+					    &ha->mbx_cmd_flags)) {
+						complete(&ha->mbx_intr_comp);
+					}
 				}
 				break;
 			}

+ 4 - 1
drivers/scsi/qla2xxx/qla_os.c

@@ -4014,7 +4014,10 @@ qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
 				ql_dbg(ql_dbg_aer, vha, 0x9001,
 				    "Due to pci channel io frozen, doing premature "
 				    "completion of mbx command.\n");
-				complete(&ha->mbx_intr_comp);
+				if (test_bit(MBX_INTR_WAIT,
+				    &ha->mbx_cmd_flags)) {
+					complete(&ha->mbx_intr_comp);
+				}
 			}
 		}
 		qla2x00_free_irqs(vha);