(resent using my proper email address) On Tue, 2018-08-14 at 14:52 +0530, poza@xxxxxxxxxxxxxx wrote: > > > if (result == PCI_ERS_RESULT_RECOVERED) { > > > if (pcie_wait_for_link(udev, true)) > > > pci_rescan_bus(udev->bus); > > > - pci_info(dev, "Device recovery from fatal error successful\n"); > > > + /* find the pci_dev after rescanning the bus */ > > > + dev = pci_get_domain_bus_and_slot(domain, bus, devfn); > > > > one of the motivations was to remove and re-enumerate rather then > > going thorugh driver's recovery sequence > > was; it might be possible that hotplug capable bridge, the device > > might have changed. > > hence this check will fail Under what circumstances do you actually "unplug" the device ? We are trying to cleanup/fix some of the PowerPC EEH code which is in a way similar to AER, and we found that this unplug/replug, which we do if the driver doesn't have recovery callbacks only, is causing more problems than it solves. We are moving toward instead unbinding the driver, resetting the device, then re-binding the driver instead of unplug/replug. Also why would you ever bypass the driver callbacks if the driver has some ? The whole point is to keep the driver bound while resetting the device (provided it has the right callbacks) so we don't lose the linkage between stroage devices and mounted filesystems. Cheers, Ben.