diff options
author | Linas Vepstas <linas@austin.ibm.com> | 2007-03-19 14:59:59 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-03-22 22:52:56 +1100 |
commit | fa1be476a2baa0961f63161caee6733cdc353adb (patch) | |
tree | d847ecf51c128069049d35ed126c9beda4d879a7 /arch/powerpc/platforms/pseries/eeh_driver.c | |
parent | d0ab95ca9854174029cef2f08acf1859441cb547 (diff) | |
download | linux-stable-fa1be476a2baa0961f63161caee6733cdc353adb.tar.gz linux-stable-fa1be476a2baa0961f63161caee6733cdc353adb.tar.bz2 linux-stable-fa1be476a2baa0961f63161caee6733cdc353adb.zip |
[POWERPC] EEH: verify state change
After requesting a state change, verify that the state change
actually ocurred, and the system ends up in the expected state.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/platforms/pseries/eeh_driver.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/eeh_driver.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c b/arch/powerpc/platforms/pseries/eeh_driver.c index 6493f593687f..f5b4f7c20d7a 100644 --- a/arch/powerpc/platforms/pseries/eeh_driver.c +++ b/arch/powerpc/platforms/pseries/eeh_driver.c @@ -300,7 +300,7 @@ static int eeh_reset_device (struct pci_dn *pe_dn, struct pci_bus *bus) /* The longest amount of time to wait for a pci device * to come back on line, in seconds. */ -#define MAX_WAIT_FOR_RECOVERY 15 +#define MAX_WAIT_FOR_RECOVERY 150 struct pci_dn * handle_eeh_events (struct eeh_event *event) { @@ -393,6 +393,8 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) if (result == PCI_ERS_RESULT_CAN_RECOVER) { rc = rtas_pci_enable(frozen_pdn, EEH_THAW_MMIO); + if (rc < 0) + goto hard_fail; if (rc) { result = PCI_ERS_RESULT_NEED_RESET; } else { @@ -405,6 +407,8 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) if (result == PCI_ERS_RESULT_CAN_RECOVER) { rc = rtas_pci_enable(frozen_pdn, EEH_THAW_DMA); + if (rc < 0) + goto hard_fail; if (rc) result = PCI_ERS_RESULT_NEED_RESET; else |