|
@@ -1637,6 +1637,11 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
|
|
|
/* 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);
|
|
@@ -1646,7 +1651,6 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
|
|
|
pci_free_resource_list(&resources);
|
|
|
return;
|
|
|
}
|
|
|
- bus->busn_res.start = hose->first_busno;
|
|
|
hose->bus = bus;
|
|
|
|
|
|
/* Get probe mode and perform scan */
|
|
@@ -1654,13 +1658,14 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
|
|
|
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
|