Commit f2a3ce15 authored by Bjorn Helgaas's avatar Bjorn Helgaas

Merge branch 'pci/reset'

- Wait for each level of downstream bus, not just the first, to become
  accessible before restoring devices on that bus (Ilpo Järvinen)

* pci/reset:
  PCI: Wait for Link before restoring Downstream Buses
parents d774674f 3e40aa29
...@@ -5694,9 +5694,11 @@ static void pci_bus_restore_locked(struct pci_bus *bus) ...@@ -5694,9 +5694,11 @@ static void pci_bus_restore_locked(struct pci_bus *bus)
list_for_each_entry(dev, &bus->devices, bus_list) { list_for_each_entry(dev, &bus->devices, bus_list) {
pci_dev_restore(dev); pci_dev_restore(dev);
if (dev->subordinate) if (dev->subordinate) {
pci_bridge_wait_for_secondary_bus(dev, "bus reset");
pci_bus_restore_locked(dev->subordinate); pci_bus_restore_locked(dev->subordinate);
} }
}
} }
/* /*
...@@ -5729,9 +5731,11 @@ static void pci_slot_restore_locked(struct pci_slot *slot) ...@@ -5729,9 +5731,11 @@ static void pci_slot_restore_locked(struct pci_slot *slot)
if (!dev->slot || dev->slot != slot) if (!dev->slot || dev->slot != slot)
continue; continue;
pci_dev_restore(dev); pci_dev_restore(dev);
if (dev->subordinate) if (dev->subordinate) {
pci_bridge_wait_for_secondary_bus(dev, "slot reset");
pci_bus_restore_locked(dev->subordinate); pci_bus_restore_locked(dev->subordinate);
} }
}
} }
static int pci_slot_reset(struct pci_slot *slot, bool probe) static int pci_slot_reset(struct pci_slot *slot, bool probe)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment