[SCSI] mpt2sas: driver fails to recover from injected PCIe bus errors
authorEric Moore <eric.moore@lsi.com>
Thu, 8 Jul 2010 20:44:34 +0000 (14:44 -0600)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 27 Jul 2010 17:04:03 +0000 (12:04 -0500)
commit3cb5469a2ab4b87a7c63dd218fdc1625bc73eccc
tree65b46a61abf39654b8a367ff40c1ec880ad606fa
parenta2f1d139df42df6f3a2641591dea9e068b68f68c
[SCSI] mpt2sas: driver fails to recover from injected PCIe bus errors

fixes surrounding PCIe enhanced error handling:

(1) We need to reject all request generated internaly inside the driver as well
as request arriving from the scsi mid layer when PCIe EEH is active. The fix is
to add a per adapter flag called pci_error_recovery which is checked thru out
the driver when request are generated.

(2) We don't need to call the pci_driver->remove directly from the PCIe
callbacks becuase its already called from the PCIe EEH code. In its place we are
shutting down the watchdog timer, and flushing back all pending IO.

(3) We need to save and restore the pci state across PCIe EEH handling.

Signed-off-by: Eric Moore <eric.moore@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/mpt2sas/mpt2sas_base.c
drivers/scsi/mpt2sas/mpt2sas_base.h
drivers/scsi/mpt2sas/mpt2sas_config.c
drivers/scsi/mpt2sas/mpt2sas_ctl.c
drivers/scsi/mpt2sas/mpt2sas_scsih.c
drivers/scsi/mpt2sas/mpt2sas_transport.c