[POWERPC] fix iSeries PCI resource management
The way iSeries manages PCI IO and Memory resources is a bit strange and is based on overriding the content of those resources with home cooked ones afterward. This changes it a bit to better integrate with the new resource handling so that the "virtual" tokens that iSeries replaces resources with are done from the proper per-device fixup hook, and bridge resources are set to enclose that token space. This fixes various things such as the output of /proc/iomem & ioports, among others. This also fixes up various boot messages as well. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
3fd94c6b1a
commit
50c9bc2fc8
@ -359,7 +359,7 @@ void __devinit scan_phb(struct pci_controller *hose)
|
||||
int i, mode;
|
||||
struct resource *res;
|
||||
|
||||
DBG("Scanning PHB %s\n", node ? node->full_name : "<NO NAME>");
|
||||
DBG("PCI: Scanning PHB %s\n", node ? node->full_name : "<NO NAME>");
|
||||
|
||||
/* Create an empty bus for the toplevel */
|
||||
bus = pci_create_bus(hose->parent, hose->first_busno, hose->ops, node);
|
||||
@ -375,9 +375,22 @@ void __devinit scan_phb(struct pci_controller *hose)
|
||||
pcibios_map_io_space(bus);
|
||||
|
||||
/* Wire up PHB bus resources */
|
||||
bus->resource[0] = res = &hose->io_resource;
|
||||
for (i = 0; i < 3; ++i)
|
||||
if (hose->io_resource.flags) {
|
||||
DBG("PCI: PHB IO resource = %016lx-%016lx [%lx]\n",
|
||||
hose->io_resource.start, hose->io_resource.end,
|
||||
hose->io_resource.flags);
|
||||
bus->resource[0] = res = &hose->io_resource;
|
||||
}
|
||||
for (i = 0; i < 3; ++i) {
|
||||
DBG("PCI: PHB MEM resource %d = %016lx-%016lx [%lx]\n", i,
|
||||
hose->mem_resources[i].start,
|
||||
hose->mem_resources[i].end,
|
||||
hose->mem_resources[i].flags);
|
||||
bus->resource[i+1] = &hose->mem_resources[i];
|
||||
}
|
||||
DBG("PCI: PHB MEM offset = %016lx\n", hose->pci_mem_offset);
|
||||
DBG("PCI: PHB IO offset = %08lx\n",
|
||||
(unsigned long)hose->io_base_virt - _IO_BASE);
|
||||
|
||||
/* Get probe mode and perform scan */
|
||||
mode = PCI_PROBE_NORMAL;
|
||||
|
Reference in New Issue
Block a user