From: Hauke Mehrtens Date: Fri, 13 Nov 2009 20:32:47 +0000 (+0000) Subject: [brcm47xx] fix problem with 128MB ram. X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=commitdiff_plain;hb=eaf08e6f0bcaab3689d448ec0ea763dacfbf539a [brcm47xx] fix problem with 128MB ram. This patch is out of broadcoms official source code SVN-Revision: 18413 --- 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 be628da625..f635b4a6c6 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 0000000000..e54e3de409 --- /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 0000000000..e54e3de409 --- /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 0000000000..e54e3de409 --- /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); + } +