]> git.hungrycats.org Git - linux/commitdiff
[PATCH] Make PCI scanning order the same as 2.4
authorAndrew Morton <akpm@digeo.com>
Sun, 20 Apr 2003 07:27:02 +0000 (00:27 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sun, 20 Apr 2003 07:27:02 +0000 (00:27 -0700)
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

index b37429ad5e6587a487dcba242984acd1da39de56..bee04f53a84b6bb7c7e6be7f1ca6079928fc4f90 100644 (file)
@@ -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.