+++ /dev/null
-From: Kleber S. Souza <klebers@linux.vnet.ibm.com>
-Date: Mon, 4 May 2009 13:41:02 +0000 (-0300)
-Subject: [SCSI] ipr: fix PCI permanent error handler
-Patch-mainline: 2.6.31, expected
-References: bnc#505925
-
-[SCSI] ipr: fix PCI permanent error handler
-
-The ipr driver can hang if it encounters enough PCI errors
-to trigger the permanent error handler. The driver will attempt
-to initiate a "bringdown" of the adapter and fail all pending
-ops back. However, this bringdown is unlike any other bringdown
-of the adapter in the code as the driver. In this code path we
-end up failing back ops with allow_cmds still set to 1. This results
-in some commands, the HCAM commands in particular, getting immediately
-re-issued to the adapter on the done call, which results in
-an infinite loop in ipr_fail_all_ops. Fix this by setting allow_cmds
-to zero in this path.
-
-Signed-off-by: Kleber S. Souza <klebers@linux.vnet.ibm.com>
-[brking@linux.vnet.ibm.com: alternate patch substituted]
-Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
-Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-Acked-by: Jeff Mahoney <jeffm@suse.com>
----
-
- drivers/scsi/ipr.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/scsi/ipr.c
-+++ b/drivers/scsi/ipr.c
-@@ -7007,6 +7007,7 @@ static void ipr_pci_perm_failure(struct
- ioa_cfg->sdt_state = ABORT_DUMP;
- ioa_cfg->reset_retries = IPR_NUM_RESET_RELOAD_RETRIES;
- ioa_cfg->in_ioa_bringdown = 1;
-+ ioa_cfg->allow_cmds = 0;
- ipr_initiate_ioa_reset(ioa_cfg, IPR_SHUTDOWN_NONE);
- spin_unlock_irqrestore(ioa_cfg->host->host_lock, flags);
- }