From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: To: From: Benjamin Herrenschmidt Date: Tue, 07 Nov 2006 18:22:49 +1100 Subject: [PATCH 17/31] powerpc: Resolve the parent address of a PCI bus range In-Reply-To: <1162884150.435786.961370643810.qpush@grosgo> Message-Id: <20061107072406.2AC9568295@ozlabs.org> List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , When parsing the OF "ranges" properties of PCI host busses to determine the mapping of a PCI bus, we need to translate the "parent" address using the prom_parse.c routines in order to obtain a CPU physical address. This wasn't necessary while PCI busses were always at the root of the device-tree but this is no longer the case on Cell where they can be anywhere in the tree. Signed-off-by: Benjamin Herrenschmidt arch/powerpc/kernel/pci_64.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) Index: linux-cell/arch/powerpc/kernel/pci_64.c =================================================================== --- linux-cell.orig/arch/powerpc/kernel/pci_64.c 2006-10-26 17:23:09.000000000 +1000 +++ linux-cell/arch/powerpc/kernel/pci_64.c 2006-10-26 17:23:29.000000000 +1000 @@ -1002,11 +1002,7 @@ void __devinit pci_process_bridge_OF_ran res = NULL; pci_space = ranges[0]; pci_addr = ((unsigned long)ranges[1] << 32) | ranges[2]; - - cpu_phys_addr = ranges[3]; - if (na >= 2) - cpu_phys_addr = (cpu_phys_addr << 32) | ranges[4]; - + cpu_phys_addr = of_translate_address(dev, &ranges[3]); size = ((unsigned long)ranges[na+3] << 32) | ranges[na+4]; ranges += np; if (size == 0)