powerpc/eeh: Don't report error in eeh_pe_reset_and_recover()
[firefly-linux-kernel-4.4.55.git] / arch / powerpc / kernel / eeh_driver.c
index 8d14feb40f121129854a7760818e926f7b5b742c..3c42cbf2634d44f8cfd02d654a3c8234040b396c 100644 (file)
@@ -418,8 +418,7 @@ static void *eeh_rmv_device(void *data, void *userdata)
                eeh_pcid_put(dev);
                if (driver->err_handler &&
                    driver->err_handler->error_detected &&
-                   driver->err_handler->slot_reset &&
-                   driver->err_handler->resume)
+                   driver->err_handler->slot_reset)
                        return NULL;
        }
 
@@ -505,9 +504,6 @@ int eeh_pe_reset_and_recover(struct eeh_pe *pe)
        /* Save states */
        eeh_pe_dev_traverse(pe, eeh_dev_save_state, NULL);
 
-       /* Report error */
-       eeh_pe_dev_traverse(pe, eeh_report_error, &result);
-
        /* Issue reset */
        ret = eeh_reset_pe(pe);
        if (ret) {
@@ -564,6 +560,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus)
         */
        eeh_pe_state_mark(pe, EEH_PE_KEEP);
        if (bus) {
+               eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
                pci_lock_rescan_remove();
                pcibios_remove_pci_devices(bus);
                pci_unlock_rescan_remove();
@@ -803,6 +800,7 @@ perm_error:
         * the their PCI config any more.
         */
        if (frozen_bus) {
+               eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
                eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
 
                pci_lock_rescan_remove();
@@ -886,6 +884,7 @@ static void eeh_handle_special_event(void)
                                        continue;
 
                                /* Notify all devices to be down */
+                               eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
                                bus = eeh_pe_bus_get(phb_pe);
                                eeh_pe_dev_traverse(pe,
                                        eeh_report_failure, NULL);