CFE 1.2.5 and earlier fails to turn on the ExpMemEn bit in the PCIFeatureControl register, which means that DMA does not work beyond physical address 01_0000_0000, ergo to DRAM beyond 1GB. With ExpMemEn turned on, 01_0000_0000-0f_ffff_ffff is mapped, so DMA works for up to 61 GB of DRAM. Will be fixed in CFE 1.2.6 (yet to be released). Signed-Off-By: Andy Isaacson <adi@xxxxxxxxxxxx> arch/mips/pci/pci-bcm1480.c | 8 ++++++++ 1 files changed, 8 insertions(+) Index: lmo/arch/mips/pci/pci-bcm1480.c =================================================================== --- lmo.orig/arch/mips/pci/pci-bcm1480.c 2005-10-19 22:34:13.000000000 -0700 +++ lmo/arch/mips/pci/pci-bcm1480.c 2005-10-19 22:34:13.000000000 -0700 @@ -232,6 +232,14 @@ bcm1480_bus_status |= PCI_BUS_ENABLED; } + /* turn on ExpMemEn */ + cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40)); + printk("PCIFeatureCtrl = %x\n", cmdreg); + WRITECFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40), + cmdreg | 0x10); + cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40)); + printk("PCIFeatureCtrl = %x\n", cmdreg); + /* * Establish mappings in KSEG2 (kernel virtual) to PCI I/O * space. Use "match bytes" policy to make everything look