diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2024-09-19 14:25:27 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2024-09-19 14:25:27 -0500 |
commit | f2a3ce1597b3e1aec96458f80c6cda31a3542b79 (patch) | |
tree | 5e7bba9f9f7eb81a989ec88068f252e115ada58e | |
parent | d774674f3492740503a3cd3f5da131d088202f1b (diff) | |
parent | 3e40aa29d47e231a54640addf6a09c1f64c5b63f (diff) |
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
-rw-r--r-- | drivers/pci/pci.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 7148a3d4ec8d..04b0bf2e827f 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5694,8 +5694,10 @@ static void pci_bus_restore_locked(struct pci_bus *bus) list_for_each_entry(dev, &bus->devices, bus_list) { 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); + } } } @@ -5729,8 +5731,10 @@ static void pci_slot_restore_locked(struct pci_slot *slot) if (!dev->slot || dev->slot != slot) continue; 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); + } } } |