#endif /* CONFIG_PCI_IOV */
 
-void pcibios_bus_add_device(struct pci_dev *pdev)
-{
-       if (ppc_md.pcibios_bus_add_device)
-               ppc_md.pcibios_bus_add_device(pdev);
-}
-
 static resource_size_t pcibios_io_size(const struct pci_controller *hose)
 {
 #ifdef CONFIG_PPC64
                ppc_md.pci_irq_fixup(dev);
 }
 
-int pcibios_add_device(struct pci_dev *dev)
+void pcibios_bus_add_device(struct pci_dev *pdev)
 {
-       /*
-        * We can only call pcibios_setup_device() after bus setup is complete,
-        * since some of the platform specific DMA setup code depends on it.
-        */
-       if (dev->bus->is_added)
-               pcibios_setup_device(dev);
+       /* Perform platform-specific device setup */
+       pcibios_setup_device(pdev);
+
+       if (ppc_md.pcibios_bus_add_device)
+               ppc_md.pcibios_bus_add_device(pdev);
+}
 
+int pcibios_add_device(struct pci_dev *dev)
+{
 #ifdef CONFIG_PCI_IOV
        if (ppc_md.pcibios_fixup_sriov)
                ppc_md.pcibios_fixup_sriov(dev);
 
        /* Now fixup the bus bus */
        pcibios_setup_bus_self(bus);
-
-       /* Now fixup devices on that bus */
-       pcibios_setup_bus_devices(bus);
 }
 EXPORT_SYMBOL(pcibios_fixup_bus);