diff options
author | Chad Dupuis <chad.dupuis@qlogic.com> | 2013-10-30 03:38:16 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-12-19 10:38:58 -0500 |
commit | f3ddac1918fe963bcbf8d407a3a3c0881b47248b (patch) | |
tree | 307e736319180d8930154ce40309f017e3696673 /drivers/scsi/qla2xxx/qla_gbl.h | |
parent | fe1b806f4f7172b1eae18ddeebb7d8fb351043f7 (diff) |
[SCSI] qla2xxx: Disable adapter when we encounter a PCI disconnect.
If we become disconnected from the PCI bus/PCIe fabric, there can be long delays
in register reads which can cause erroneous decisions to be made and cause a
soft lockup if a lock is held too long. As a preventative measure, check for a
disconnection (register reads that return -1) and then disable the board if we
find ourselves in this condition. For now, check in our interrupt handlers and
the per adapter one second timer.
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_gbl.h')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_gbl.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index df52f73acabd..359d0d9e09d9 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h | |||
@@ -159,6 +159,9 @@ extern int qla83xx_clear_drv_presence(scsi_qla_host_t *vha); | |||
159 | extern int __qla83xx_clear_drv_presence(scsi_qla_host_t *vha); | 159 | extern int __qla83xx_clear_drv_presence(scsi_qla_host_t *vha); |
160 | extern int qla2x00_post_uevent_work(struct scsi_qla_host *, u32); | 160 | extern int qla2x00_post_uevent_work(struct scsi_qla_host *, u32); |
161 | 161 | ||
162 | extern int qla2x00_post_uevent_work(struct scsi_qla_host *, u32); | ||
163 | extern void qla2x00_disable_board_on_pci_error(struct work_struct *); | ||
164 | |||
162 | /* | 165 | /* |
163 | * Global Functions in qla_mid.c source file. | 166 | * Global Functions in qla_mid.c source file. |
164 | */ | 167 | */ |
@@ -454,6 +457,7 @@ extern uint8_t *qla25xx_read_nvram_data(scsi_qla_host_t *, uint8_t *, uint32_t, | |||
454 | extern int qla25xx_write_nvram_data(scsi_qla_host_t *, uint8_t *, uint32_t, | 457 | extern int qla25xx_write_nvram_data(scsi_qla_host_t *, uint8_t *, uint32_t, |
455 | uint32_t); | 458 | uint32_t); |
456 | extern int qla2x00_is_a_vp_did(scsi_qla_host_t *, uint32_t); | 459 | extern int qla2x00_is_a_vp_did(scsi_qla_host_t *, uint32_t); |
460 | bool qla2x00_check_reg_for_disconnect(scsi_qla_host_t *, uint32_t); | ||
457 | 461 | ||
458 | extern int qla2x00_beacon_on(struct scsi_qla_host *); | 462 | extern int qla2x00_beacon_on(struct scsi_qla_host *); |
459 | extern int qla2x00_beacon_off(struct scsi_qla_host *); | 463 | extern int qla2x00_beacon_off(struct scsi_qla_host *); |