struct pci_bus * __devinit pcibios_scan_root(int busnum)
 {
-       LIST_HEAD(resources);
        struct pci_bus *bus = NULL;
-       struct pci_sysdata *sd;
 
        while ((bus = pci_find_next_bus(bus)) != NULL) {
                if (bus->number == busnum) {
                }
        }
 
-       /* Allocate per-root-bus (not per bus) arch-specific data.
-        * TODO: leak; this memory is never freed.
-        * It's arguable whether it's worth the trouble to care.
-        */
-       sd = kzalloc(sizeof(*sd), GFP_KERNEL);
-       if (!sd) {
-               printk(KERN_ERR "PCI: OOM, not probing PCI bus %02x\n", busnum);
-               return NULL;
-       }
-
-       sd->node = get_mp_bus_to_node(busnum);
-
-       printk(KERN_DEBUG "PCI: Probing PCI hardware (bus %02x)\n", busnum);
-       x86_pci_root_bus_resources(busnum, &resources);
-       bus = pci_scan_root_bus(NULL, busnum, &pci_root_ops, sd, &resources);
-       if (!bus) {
-               pci_free_resource_list(&resources);
-               kfree(sd);
-       }
-
-       return bus;
+       return pci_scan_bus_on_node(busnum, &pci_root_ops,
+                                       get_mp_bus_to_node(busnum));
 }
+
 void __init pcibios_set_cache_line_size(void)
 {
        struct cpuinfo_x86 *c = &boot_cpu_data;
        }
        sd->node = node;
        x86_pci_root_bus_resources(busno, &resources);
+       printk(KERN_DEBUG "PCI: Probing PCI hardware (bus %02x)\n", busno);
        bus = pci_scan_root_bus(NULL, busno, ops, sd, &resources);
        if (!bus) {
                pci_free_resource_list(&resources);