aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/pci_64.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2008-01-20 19:32:50 -0500
committerPaul Mackerras <paulus@samba.org>2008-01-25 06:52:53 -0500
commit9d5f49283b85d925f17fa07af5e4879465e179d6 (patch)
tree3906b8f09e5bd75bb4771b82cc4d4aa6bbbffe7b /arch/powerpc/kernel/pci_64.c
parent335675a3a2e6f3dc8f47111f73362aae8acc36bc (diff)
[POWERPC] Always hookup PHB IO resource even when empty
We must always hookup the pci_bus resource 0 to the PHB io_resource even if the latter is empty (the bus has no IO support). Otherwise, some other code will end up hooking it up to something bogus and the resource tree will end up being broken. This fixes boot on QS20 Cell blades where the IDE driver failed to allocate the IO resources due to breakage of the resource tree. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/pci_64.c')
-rw-r--r--arch/powerpc/kernel/pci_64.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 1930f393d01c..52750745edfd 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -357,7 +357,6 @@ void __devinit scan_phb(struct pci_controller *hose)
357 struct pci_bus *bus; 357 struct pci_bus *bus;
358 struct device_node *node = hose->dn; 358 struct device_node *node = hose->dn;
359 int i, mode; 359 int i, mode;
360 struct resource *res;
361 360
362 DBG("PCI: Scanning PHB %s\n", node ? node->full_name : "<NO NAME>"); 361 DBG("PCI: Scanning PHB %s\n", node ? node->full_name : "<NO NAME>");
363 362
@@ -375,12 +374,10 @@ void __devinit scan_phb(struct pci_controller *hose)
375 pcibios_map_io_space(bus); 374 pcibios_map_io_space(bus);
376 375
377 /* Wire up PHB bus resources */ 376 /* Wire up PHB bus resources */
378 if (hose->io_resource.flags) { 377 DBG("PCI: PHB IO resource = %016lx-%016lx [%lx]\n",
379 DBG("PCI: PHB IO resource = %016lx-%016lx [%lx]\n", 378 hose->io_resource.start, hose->io_resource.end,
380 hose->io_resource.start, hose->io_resource.end, 379 hose->io_resource.flags);
381 hose->io_resource.flags); 380 bus->resource[0] = &hose->io_resource;
382 bus->resource[0] = res = &hose->io_resource;
383 }
384 for (i = 0; i < 3; ++i) { 381 for (i = 0; i < 3; ++i) {
385 DBG("PCI: PHB MEM resource %d = %016lx-%016lx [%lx]\n", i, 382 DBG("PCI: PHB MEM resource %d = %016lx-%016lx [%lx]\n", i,
386 hose->mem_resources[i].start, 383 hose->mem_resources[i].start,