From: Russell Currey Date: Mon, 12 Sep 2016 04:17:24 +0000 (+1000) Subject: powerpc/eeh: Skip finding bus until after failure reporting X-Git-Tag: v4.9-rc1~84^2~105 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=af2e3a009e7f73c3def283a768ea2cef69ae883e;p=karo-tx-linux.git 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 --- 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();