int end;
 };
 
-static void __init pcibios_allocate_resources(int pass)
+static void __init pcibios_allocate_dev_resources(struct pci_dev *dev, int pass)
 {
-       struct pci_dev *dev = NULL;
        int idx, disabled, i;
        u16 command;
        struct resource *r;
 #endif
        };
 
-       for_each_pci_dev(dev) {
-               pci_read_config_word(dev, PCI_COMMAND, &command);
-               for (i = 0; i < ARRAY_SIZE(idx_range); i++)
+       pci_read_config_word(dev, PCI_COMMAND, &command);
+       for (i = 0; i < ARRAY_SIZE(idx_range); i++)
                for (idx = idx_range[i].start; idx <= idx_range[i].end; idx++) {
                        r = &dev->resource[idx];
-                       if (r->parent)          /* Already allocated */
+                       if (r->parent)  /* Already allocated */
                                continue;
-                       if (!r->start)          /* Address not assigned at all */
+                       if (!r->start)  /* Address not assigned at all */
                                continue;
                        if (r->flags & IORESOURCE_IO)
                                disabled = !(command & PCI_COMMAND_IO);
                                }
                        }
                }
-               if (!pass) {
-                       r = &dev->resource[PCI_ROM_RESOURCE];
-                       if (r->flags & IORESOURCE_ROM_ENABLE) {
-                               /* Turn the ROM off, leave the resource region,
-                                * but keep it unregistered. */
-                               u32 reg;
-                               dev_dbg(&dev->dev, "disabling ROM %pR\n", r);
-                               r->flags &= ~IORESOURCE_ROM_ENABLE;
-                               pci_read_config_dword(dev,
-                                               dev->rom_base_reg, ®);
-                               pci_write_config_dword(dev, dev->rom_base_reg,
+       if (!pass) {
+               r = &dev->resource[PCI_ROM_RESOURCE];
+               if (r->flags & IORESOURCE_ROM_ENABLE) {
+                       /* Turn the ROM off, leave the resource region,
+                        * but keep it unregistered. */
+                       u32 reg;
+                       dev_dbg(&dev->dev, "disabling ROM %pR\n", r);
+                       r->flags &= ~IORESOURCE_ROM_ENABLE;
+                       pci_read_config_dword(dev, dev->rom_base_reg, ®);
+                       pci_write_config_dword(dev, dev->rom_base_reg,
                                                reg & ~PCI_ROM_ADDRESS_ENABLE);
-                       }
                }
        }
 }
 
+static void __init pcibios_allocate_resources(int pass)
+{
+       struct pci_dev *dev = NULL;
+
+       for_each_pci_dev(dev)
+               pcibios_allocate_dev_resources(dev, pass);
+}
+
 static int __init pcibios_assign_resources(void)
 {
        struct pci_dev *dev = NULL;