diff options
author | hauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-11-13 20:32:47 +0000 |
---|---|---|
committer | hauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-11-13 20:32:47 +0000 |
commit | 3fb97947af0248bba15050c336496f6dace4ff2d (patch) | |
tree | ef7db535b0aa0df328f81587cedc76239df26ffb | |
parent | fa989620af714ced8136c5a91c2495119f0ce0a3 (diff) |
[brcm47xx] fix problem with 128MB ram.
This patch is out of broadcoms official source code
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18413 3c298f89-4303-0410-b956-a3cf2f4a3e73
4 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/brcm-2.4/files/arch/mips/bcm947xx/prom.c b/target/linux/brcm-2.4/files/arch/mips/bcm947xx/prom.c index be628da62..f635b4a6c 100644 --- a/target/linux/brcm-2.4/files/arch/mips/bcm947xx/prom.c +++ b/target/linux/brcm-2.4/files/arch/mips/bcm947xx/prom.c @@ -31,6 +31,15 @@ prom_init(int argc, const char **argv) *(unsigned long *)(prom_init)) break; } + + /* Ignoring the last page when ddr size is 128M. Cached + * accesses to last page is causing the processor to prefetch + * using address above 128M stepping out of the ddr address + * space. + */ + if (mem == 0x8000000) + mem -= 0x1000; + add_memory_region(0, mem, BOOT_MEM_RAM); } diff --git a/target/linux/brcm47xx/patches-2.6.28/170-128MB_ram_bugfix.patch b/target/linux/brcm47xx/patches-2.6.28/170-128MB_ram_bugfix.patch new file mode 100644 index 000000000..e54e3de40 --- /dev/null +++ b/target/linux/brcm47xx/patches-2.6.28/170-128MB_ram_bugfix.patch @@ -0,0 +1,17 @@ +--- a/arch/mips/bcm47xx/prom.c ++++ b/arch/mips/bcm47xx/prom.c +@@ -141,6 +141,14 @@ static __init void prom_init_mem(void) + break; + } + ++ /* Ignoring the last page when ddr size is 128M. Cached ++ * accesses to last page is causing the processor to prefetch ++ * using address above 128M stepping out of the ddr address ++ * space. ++ */ ++ if (mem == 0x8000000) ++ mem -= 0x1000; ++ + add_memory_region(0, mem, BOOT_MEM_RAM); + } + diff --git a/target/linux/brcm47xx/patches-2.6.30/170-128MB_ram_bugfix.patch b/target/linux/brcm47xx/patches-2.6.30/170-128MB_ram_bugfix.patch new file mode 100644 index 000000000..e54e3de40 --- /dev/null +++ b/target/linux/brcm47xx/patches-2.6.30/170-128MB_ram_bugfix.patch @@ -0,0 +1,17 @@ +--- a/arch/mips/bcm47xx/prom.c ++++ b/arch/mips/bcm47xx/prom.c +@@ -141,6 +141,14 @@ static __init void prom_init_mem(void) + break; + } + ++ /* Ignoring the last page when ddr size is 128M. Cached ++ * accesses to last page is causing the processor to prefetch ++ * using address above 128M stepping out of the ddr address ++ * space. ++ */ ++ if (mem == 0x8000000) ++ mem -= 0x1000; ++ + add_memory_region(0, mem, BOOT_MEM_RAM); + } + diff --git a/target/linux/brcm47xx/patches-2.6.31/170-128MB_ram_bugfix.patch b/target/linux/brcm47xx/patches-2.6.31/170-128MB_ram_bugfix.patch new file mode 100644 index 000000000..e54e3de40 --- /dev/null +++ b/target/linux/brcm47xx/patches-2.6.31/170-128MB_ram_bugfix.patch @@ -0,0 +1,17 @@ +--- a/arch/mips/bcm47xx/prom.c ++++ b/arch/mips/bcm47xx/prom.c +@@ -141,6 +141,14 @@ static __init void prom_init_mem(void) + break; + } + ++ /* Ignoring the last page when ddr size is 128M. Cached ++ * accesses to last page is causing the processor to prefetch ++ * using address above 128M stepping out of the ddr address ++ * space. ++ */ ++ if (mem == 0x8000000) ++ mem -= 0x1000; ++ + add_memory_region(0, mem, BOOT_MEM_RAM); + } + |