From af2e3a009e7f73c3def283a768ea2cef69ae883e Mon Sep 17 00:00:00 2001 From: Russell Currey Date: Mon, 12 Sep 2016 14:17:24 +1000 Subject: powerpc/eeh: Skip finding bus until after failure reporting In eeh_handle_special_event(), eeh_pe_bus_get() is called before calling eeh_report_failure() on every device under a PE. If a PE was missing a bus for some reason, the error would occur before reporting failure, even though eeh_report_failure() doesn't require a bus. Fix this by moving the bus retrieval and error check after the eeh_report_failure() calls. Signed-off-by: Russell Currey Reviewed-by: Andrew Donnellan Signed-off-by: Michael Ellerman --- arch/powerpc/kernel/eeh_driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c index 29aa8d1ce273..a62be72da274 100644 --- a/arch/powerpc/kernel/eeh_driver.c +++ b/arch/powerpc/kernel/eeh_driver.c @@ -993,6 +993,8 @@ static void eeh_handle_special_event(void) /* Notify all devices to be down */ eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); + eeh_pe_dev_traverse(pe, + eeh_report_failure, NULL); bus = eeh_pe_bus_get(phb_pe); if (!bus) { pr_err("%s: Cannot find PCI bus for " @@ -1002,8 +1004,6 @@ static void eeh_handle_special_event(void) pe->addr); break; } - eeh_pe_dev_traverse(pe, - eeh_report_failure, NULL); pci_hp_remove_devices(bus); } pci_unlock_rescan_remove(); -- cgit v1.2.3