From 2a7714ce64cfd954535f0c96f2809e2fd80d84f0 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Tue, 13 Sep 2011 23:06:11 +0000 Subject: [PATCH] km/common: fix ramfs development target Calucations of PRAM needs to take into account the 'rootfssize'. Memory available to the linux kernel 'mem=' is in all cases set to the total memory size minus the pram size. Signed-off-by: Andreas Huber Signed-off-by: Holger Brunck cc: Wolfgang Denk --- board/keymile/common/common.c | 16 ++++++++++++++-- board/keymile/scripts/develop-common.txt | 1 + board/keymile/scripts/ramfs-common.txt | 5 ++--- include/configs/km/keymile-common.h | 2 +- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c index fce9d582f2..a585f17fe3 100644 --- a/board/keymile/common/common.c +++ b/board/keymile/common/common.c @@ -64,20 +64,32 @@ int set_km_env(void) unsigned int pnvramaddr; unsigned int pram; unsigned int varaddr; + unsigned int kernelmem; + char *p; + unsigned long rootfssize = 0; pnvramaddr = gd->ram_size - CONFIG_KM_RESERVED_PRAM - CONFIG_KM_PHRAM - CONFIG_KM_PNVRAM; sprintf((char *)buf, "0x%x", pnvramaddr); setenv("pnvramaddr", (char *)buf); - pram = (CONFIG_KM_RESERVED_PRAM + CONFIG_KM_PHRAM + CONFIG_KM_PNVRAM) / - 0x400; + /* try to read rootfssize (ram image) from envrionment */ + p = getenv("rootfssize"); + if (p != NULL) + strict_strtoul(p, 16, &rootfssize); + pram = (rootfssize + CONFIG_KM_RESERVED_PRAM + CONFIG_KM_PHRAM + + CONFIG_KM_PNVRAM) / 0x400; sprintf((char *)buf, "0x%x", pram); setenv("pram", (char *)buf); varaddr = gd->ram_size - CONFIG_KM_RESERVED_PRAM - CONFIG_KM_PHRAM; sprintf((char *)buf, "0x%x", varaddr); setenv("varaddr", (char *)buf); + + kernelmem = gd->ram_size - 0x400 * pram; + sprintf((char *)buf, "0x%x", kernelmem); + setenv("kernelmem", (char *)buf); + return 0; } diff --git a/board/keymile/scripts/develop-common.txt b/board/keymile/scripts/develop-common.txt index 3ccd0397b2..93e2967454 100644 --- a/board/keymile/scripts/develop-common.txt +++ b/board/keymile/scripts/develop-common.txt @@ -4,3 +4,4 @@ configure=km_setboardid && saveenv && reset subbootcmds=tftpfdt tftpkernel nfsargs add_default boot nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:/opt/eldk/${arch} tftpkernel=tftpboot ${load_addr_r} ${hostname}/uImage +rootfssize=0 diff --git a/board/keymile/scripts/ramfs-common.txt b/board/keymile/scripts/ramfs-common.txt index 9315500aff..c1b45ab029 100644 --- a/board/keymile/scripts/ramfs-common.txt +++ b/board/keymile/scripts/ramfs-common.txt @@ -1,11 +1,10 @@ -addramfs=setenv bootargs "${bootargs} mem=${rootfsaddr} phram.phram=rootfs${boot_bank},${rootfsaddr},${rootfssize}" +addramfs=setenv bootargs "${bootargs} phram.phram=rootfs${boot_bank},${rootfsaddr},${rootfssize}" actual_bank=-1 altbootcmd=run ${subbootcmds} bootcmd=run ${subbootcmds} subbootcmds=tftpfdt tftpkernel setrootfsaddr tftpramfs flashargs add_default addpanic addramfs boot nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} -configure=km_setboardid && run setramfspram && saveenv && reset -setramfspram=setexpr value 0 + ${rootfssize} && setexpr value 0x${value} / 0x400 && setexpr value 0x${value} + ${pram} && setenv pram 0x${value} +configure=km_setboardid && saveenv && reset rootfsfile=${hostname}/rootfsImage setrootfsaddr=setexpr value ${pnvramaddr} - ${rootfssize} && setenv rootfsaddr 0x${value} tftpkernel=tftpboot ${load_addr_r} ${hostname}/uImage diff --git a/include/configs/km/keymile-common.h b/include/configs/km/keymile-common.h index bc1edafcb6..7d93417a25 100644 --- a/include/configs/km/keymile-common.h +++ b/include/configs/km/keymile-common.h @@ -170,7 +170,7 @@ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}" \ ":${hostname}:${netdev}:off3" \ " console=" CONFIG_KM_CONSOLE_TTY ",${baudrate}" \ - " mem=${pnvramaddr} init=${init}" \ + " mem=${kernelmem} init=${init}" \ " phram.phram=phvar,${varaddr}," xstr(CONFIG_KM_PHRAM) \ " ubi.mtd=" CONFIG_KM_UBI_LINUX_MTD_NAME " " \ CONFIG_KM_DEF_BOOT_ARGS_CPU \ -- 2.39.5