diff options
author | Seokmann Ju <seokmann.ju@qlogic.com> | 2009-03-24 12:08:18 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-04-03 10:22:53 -0400 |
commit | b9b12f73dff15915914f51bbff7620f5dd49b3de (patch) | |
tree | 870f134a8d3c2bfe35dc112be6f1d43b2e32d8e6 /drivers/scsi/qla2xxx/qla_attr.c | |
parent | 6749ce362d38b47bd4669ccc0cafcc0014bff6e9 (diff) |
[SCSI] qla2xxx: Correct several PCI-EEH issues.
In addition to checking for potentially unnecessary iomem
readX()/writeX() operations, a pci_channel_io_perm_failure should
not trigger a full internal removal. Found during additional
testing with pSeries blade systems.
Signed-off-by: Seokmann Ju <seokmann.ju@qlogic.com>
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_attr.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_attr.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index 15573f6dc36b..b09993a06576 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c | |||
@@ -1282,7 +1282,10 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport) | |||
1282 | if (!fcport) | 1282 | if (!fcport) |
1283 | return; | 1283 | return; |
1284 | 1284 | ||
1285 | qla2x00_abort_fcport_cmds(fcport); | 1285 | if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) |
1286 | qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16); | ||
1287 | else | ||
1288 | qla2x00_abort_fcport_cmds(fcport); | ||
1286 | 1289 | ||
1287 | /* | 1290 | /* |
1288 | * Transport has effectively 'deleted' the rport, clear | 1291 | * Transport has effectively 'deleted' the rport, clear |
@@ -1302,6 +1305,10 @@ qla2x00_terminate_rport_io(struct fc_rport *rport) | |||
1302 | if (!fcport) | 1305 | if (!fcport) |
1303 | return; | 1306 | return; |
1304 | 1307 | ||
1308 | if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) { | ||
1309 | qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16); | ||
1310 | return; | ||
1311 | } | ||
1305 | /* | 1312 | /* |
1306 | * At this point all fcport's software-states are cleared. Perform any | 1313 | * At this point all fcport's software-states are cleared. Perform any |
1307 | * final cleanup of firmware resources (PCBs and XCBs). | 1314 | * final cleanup of firmware resources (PCBs and XCBs). |