On Sat, Mar 10, 2012 at 12:00 AM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > It will rediscover removed pci root buses. > > Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> > --- > drivers/pci/pci-sysfs.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c > index 4d122cb..fc0a7de 100644 > --- a/drivers/pci/pci-sysfs.c > +++ b/drivers/pci/pci-sysfs.c > @@ -284,6 +284,7 @@ msi_bus_store(struct device *dev, struct device_attribute *attr, > > #ifdef CONFIG_HOTPLUG > static DEFINE_MUTEX(pci_remove_rescan_mutex); > +void __weak arch_pci_root_rescan(void) { } > static ssize_t bus_rescan_store(struct bus_type *bus, const char *buf, > size_t count) > { > @@ -295,6 +296,7 @@ static ssize_t bus_rescan_store(struct bus_type *bus, const char *buf, > > if (val) { > mutex_lock(&pci_remove_rescan_mutex); > + arch_pci_root_rescan(); > while ((b = pci_find_next_bus(b)) != NULL) > pci_rescan_bus(b); > mutex_unlock(&pci_remove_rescan_mutex); This is gross. We used to rescan every previously-discovered PCI root bus. Now, we do the same, plus: 1) Scan the ACPI namespace for PCI host bridges, adding and scanning any we haven't seen before, and 2) scan domain 0, buses 0 - pcibios_last_bus, looking for any we haven't seen before. These just don't fit with the previous functionality. The scan should be done on the *ACPI namespace*, which is where any new bridges would live. It shouldn't be done in the PCI namespace. The new bridges aren't part of PCI. -- 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