linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / i386 / pci / pcbios.c
index ed1512a..b9d65f0 100644 (file)
@@ -371,7 +371,8 @@ void __devinit pcibios_sort(void)
                        list_for_each(ln, &pci_devices) {
                                d = pci_dev_g(ln);
                                if (d->bus->number == bus && d->devfn == devfn) {
-                                       list_move_tail(&d->global_list, &sorted_devices);
+                                       list_del(&d->global_list);
+                                       list_add_tail(&d->global_list, &sorted_devices);
                                        if (d == dev)
                                                found = 1;
                                        break;
@@ -389,7 +390,8 @@ void __devinit pcibios_sort(void)
                if (!found) {
                        printk(KERN_WARNING "PCI: Device %s not found by BIOS\n",
                                pci_name(dev));
-                       list_move_tail(&dev->global_list, &sorted_devices);
+                       list_del(&dev->global_list);
+                       list_add_tail(&dev->global_list, &sorted_devices);
                }
        }
        list_splice(&sorted_devices, &pci_devices);
@@ -474,12 +476,14 @@ int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq)
 }
 EXPORT_SYMBOL(pcibios_set_irq_routing);
 
-void __init pci_pcbios_init(void)
+static int __init pci_pcbios_init(void)
 {
        if ((pci_probe & PCI_PROBE_BIOS) 
                && ((raw_pci_ops = pci_find_bios()))) {
                pci_probe |= PCI_BIOS_SORT;
                pci_bios_present = 1;
        }
+       return 0;
 }
 
+arch_initcall(pci_pcbios_init);