PCI: Delay final fixups until resources are assigned
[cascardo/linux.git] / drivers / pci / bus.c
index 8647dc6..32e66a6 100644 (file)
@@ -174,6 +174,7 @@ int pci_bus_add_device(struct pci_dev *dev)
         * Can not put in pci_device_add yet because resources
         * are not assigned yet for some devices.
         */
+       pci_fixup_device(pci_fixup_final, dev);
        pci_create_sysfs_dev_files(dev);
 
        dev->match_driver = true;
@@ -202,20 +203,16 @@ void pci_bus_add_devices(const struct pci_bus *bus)
                if (dev->is_added)
                        continue;
                retval = pci_bus_add_device(dev);
+               if (retval)
+                       dev_err(&dev->dev, "Error adding device (%d)\n",
+                               retval);
        }
 
        list_for_each_entry(dev, &bus->devices, bus_list) {
                BUG_ON(!dev->is_added);
-
                child = dev->subordinate;
-
-               if (!child)
-                       continue;
-               pci_bus_add_devices(child);
-
-               if (child->is_added)
-                       continue;
-               child->is_added = 1;
+               if (child)
+                       pci_bus_add_devices(child);
        }
 }