Yijing, On Thu, 2013-08-01 at 21:06 +0800, Yijing Wang wrote: > diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c > index 7fe9dbd..db5f597 100644 > --- a/drivers/pci/hotplug/pciehp_core.c > +++ b/drivers/pci/hotplug/pciehp_core.c > [...] > @@ -315,10 +317,36 @@ static int pciehp_resume (struct pcie_device *dev) > if (status) { > if (list_empty(&pbus->devices)) > pciehp_enable_slot(slot); > - } else if (!list_empty(&pbus->devices)) { > - pciehp_disable_slot(slot); > + > + pdev = pci_get_slot(pbus, PCI_DEVFN(0, 0)); > + if (!pdev) > + return 0; > + ret = pci_serial_number_changed(pdev); > + pci_dev_put(pdev); > + if (ret) { > + /* > + * first power off slot, avoid the old driver > + * .remove() method touch the new hardware > + */ > + if (POWER_CTRL(ctrl)) { > + ret = pciehp_power_off_slot(slot); > + if (ret) { > + ctrl_err(ctrl, > + "Issue of Slot Disable command failed\n"); > + return 0; > + } > + msleep(1000); > + pciehp_unconfigure_device(slot); > + /* call child devices driver->suspend() for symmetry */ > + list_for_each_entry(pdev, &pbus->devices, bus_list) > + if (pdev->driver) > + pdev->driver->driver.pm->suspend(&pdev->dev); > + pciehp_enable_slot(slot); > + } > + } else if (!list_empty(&pbus->devices)) { > + pciehp_disable_slot(slot); > + } > } > - I ran into a problem with this change. This line, removing a line consisting of only a single tab, appears to conflict with a patch earlier in this series. I had to manually remove just the change that removed that line to get this patch to apply. Any idea what's going on? > return 0; > } > #endif /* PM */ Paul Bolle -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html