[PATCH v5 23/23] PCI: pciehp: movable BARs: Trigger a domain rescan on hp events
Sergey Miroshnichenko
s.miroshnichenko at yadro.com
Sat Aug 17 02:51:01 AEST 2019
With movable BARs, adding a hotplugged device is not local to its bridge
anymore, but it affects the whole domain: BARs, bridge windows and bus
numbers can be substantially rearranged. So instead of trying to fit the
new devices into preallocated reserved gaps, initiate a full domain rescan.
The pci_rescan_bus() covers all the operations of the replaced functions:
- assigning new bus numbers, as the pci_hp_add_bridge() does it;
- allocating BARs (pci_assign_unassigned_bridge_resources());
- cofiguring MPS settings (pcie_bus_configure_settings());
- binding devices to their drivers (pci_bus_add_devices()).
CC: Lukas Wunner <lukas at wunner.de>
Signed-off-by: Sergey Miroshnichenko <s.miroshnichenko at yadro.com>
---
drivers/pci/hotplug/pciehp_pci.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/pci/hotplug/pciehp_pci.c b/drivers/pci/hotplug/pciehp_pci.c
index d17f3bf36f70..66c4e6d88fe3 100644
--- a/drivers/pci/hotplug/pciehp_pci.c
+++ b/drivers/pci/hotplug/pciehp_pci.c
@@ -58,6 +58,11 @@ int pciehp_configure_device(struct controller *ctrl)
goto out;
}
+ if (pci_movable_bars_enabled()) {
+ pci_rescan_bus(parent);
+ goto out;
+ }
+
for_each_pci_bridge(dev, parent)
pci_hp_add_bridge(dev);
--
2.21.0
More information about the Linuxppc-dev
mailing list