/* Wire up PHB bus resources */
        pcibios_setup_phb_resources(hose, &resources);
 
+       hose->busn.start = hose->first_busno;
+       hose->busn.end   = hose->last_busno;
+       hose->busn.flags = IORESOURCE_BUS;
+       pci_add_resource(&resources, &hose->busn);
+
        /* Create an empty bus for the toplevel */
        bus = pci_create_root_bus(hose->parent, hose->first_busno,
                                  hose->ops, hose, &resources);
                pci_free_resource_list(&resources);
                return;
        }
-       bus->busn_res.start = hose->first_busno;
        hose->bus = bus;
 
        /* Get probe mode and perform scan */
        if (node && ppc_md.pci_probe_mode)
                mode = ppc_md.pci_probe_mode(bus);
        pr_debug("    probe mode: %d\n", mode);
-       if (mode == PCI_PROBE_DEVTREE) {
-               bus->busn_res.end = hose->last_busno;
+       if (mode == PCI_PROBE_DEVTREE)
                of_scan_bus(node, bus);
-       }
 
-       if (mode == PCI_PROBE_NORMAL)
-               hose->last_busno = bus->busn_res.end = pci_scan_child_bus(bus);
+       if (mode == PCI_PROBE_NORMAL) {
+               pci_bus_update_busn_res_end(bus, 255);
+               hose->last_busno = pci_scan_child_bus(bus);
+               pci_bus_update_busn_res_end(bus, hose->last_busno);
+       }
 
        /* Platform gets a chance to do some global fixups before
         * we proceed to resource allocation