drivers/fsl_pci_init: Fix inbound window mapping bug
authorBecky Bruce <becky.bruce@freescale.com>
Sat, 22 Nov 2008 01:24:22 +0000 (19:24 -0600)
committerAndrew Fleming-AFLEMING <afleming@freescale.com>
Thu, 4 Dec 2008 04:48:50 +0000 (22:48 -0600)
The current code will cause the creation of a 4GB window
starting at 0 if we have more than 4GB of RAM installed,
which overlaps with PCI_MEM space and causes pci_bus_to_phys()
to return erroneous information. Limit the size to 4GB - 1;
which causes the code to create one 2GB and one 1GB window
instead.

Signed-off-by: Becky Bruce <beckyb@kernel.crashing.org>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Acked-by: Andy Fleming <afleming@freescale.com>
drivers/pci/fsl_pci_init.c

index 7625cccec7ebc9455efb87351d7e627b4339a4c0..e57acba0d27e7ce425109410d4399d82b9514e3e 100644 (file)
@@ -58,7 +58,7 @@ void pciauto_config_init(struct pci_controller *hose);
 int fsl_pci_setup_inbound_windows(struct pci_region *r)
 {
        struct pci_region *rgn_base = r;
-       u64 sz = min((u64)gd->ram_size, 1ull << 32);
+       u64 sz = min((u64)gd->ram_size, (1ull << 32) - 1);
 
        phys_addr_t phys_start = CONFIG_SYS_PCI_MEMORY_PHYS;
        pci_addr_t bus_start = CONFIG_SYS_PCI_MEMORY_BUS;