]> Pileus Git - ~andy/linux/blobdiff - drivers/pci/bus.c
Merge branch 'for-linus' of git://repo.or.cz/cris-mirror
[~andy/linux] / drivers / pci / bus.c
index 52b54f053be092e4c589b03d1dd03c6be9deacb6..68f91a25259563c6bb7250d8ea3acfd636ad0b29 100644 (file)
@@ -133,7 +133,7 @@ int pci_bus_add_child(struct pci_bus *bus)
  *
  * Call hotplug for each new devices.
  */
-void pci_bus_add_devices(struct pci_bus *bus)
+void pci_bus_add_devices(const struct pci_bus *bus)
 {
        struct pci_dev *dev;
        struct pci_bus *child;
@@ -184,8 +184,10 @@ void pci_enable_bridges(struct pci_bus *bus)
 
        list_for_each_entry(dev, &bus->devices, bus_list) {
                if (dev->subordinate) {
-                       retval = pci_enable_device(dev);
-                       pci_set_master(dev);
+                       if (atomic_read(&dev->enable_cnt) == 0) {
+                               retval = pci_enable_device(dev);
+                               pci_set_master(dev);
+                       }
                        pci_enable_bridges(dev->subordinate);
                }
        }