From 609b0188b7b8d23aad00c5e995461a56f47dc5df Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Sun, 20 Apr 2003 00:27:02 -0700 Subject: [PATCH] [PATCH] Make PCI scanning order the same as 2.4 From: Chuck Ebbert <76306.1226@compuserve.com> 2.4 builds its global PCI device list in breadth-first order. 2.5 is doing the scan that way but defers the construction of the global list until later and then does it depth-first. This causes devices to found in different order by drivers. The below fixed that problem for me. Russell King has acked this change. --- drivers/pci/bus.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c index b37429ad5e658..bee04f53a84b6 100644 --- a/drivers/pci/bus.c +++ b/drivers/pci/bus.c @@ -75,7 +75,8 @@ pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, * Add newly discovered PCI devices (which are on the bus->devices * list) to the global PCI device list, add the sysfs and procfs * entries. Where a bridge is found, add the discovered bus to - * the parents list of child buses, and recurse. + * the parents list of child buses, and recurse (breadth-first + * to be compatible with 2.4) * * Call hotplug for each new devices. */ @@ -98,6 +99,12 @@ void __devinit pci_bus_add_devices(struct pci_bus *bus) #endif pci_create_sysfs_dev_files(dev); + } + + list_for_each_entry(dev, &bus->devices, bus_list) { + + BUG_ON(list_empty(&dev->global_list)); + /* * If there is an unattached subordinate bus, attach * it and then scan for unattached PCI devices. -- 2.53.0