[U-Boot] [PATCH] Fix condition where bootm_size not set and wrong memory size reported
Sergei Shtylyov
sshtylyov at mvista.com
Thu Jul 8 11:43:47 CEST 2010
Hello.
Matthew McClintock wrote:
> If the user sets bootm_low and does not set bootm_size, u-boot will
> report the memory node in the flat device tree incorrectly. Instead
> of reporting the remaining size of memory, it will report the total
> available memory which is incorrect.
> Specifically this fixes the situation when booting a relocatable
> kernel and the memory is reported as an offset and size in the
> device tree, and the size needs to be adjusted accordingly.
> Signed-off-by: Matthew McClintock <msm at freescale.com>
> ---
> common/image.c | 12 +++++++++---
> 1 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/common/image.c b/common/image.c
> index 2b6007e..bf2acb0 100644
> --- a/common/image.c
> +++ b/common/image.c
> @@ -433,17 +433,23 @@ ulong getenv_bootm_low(void)
>
> phys_size_t getenv_bootm_size(void)
> {
> + phys_size_t tmp;
> char *s = getenv ("bootm_size");
> if (s) {
> - phys_size_t tmp;
> tmp = (phys_size_t)simple_strtoull (s, NULL, 16);
> return tmp;
> }
> + s = getenv("bootm_low");
> + if (s)
> + tmp = (phys_size_t)simple_strtoull (s, NULL, 16);
> + else
> + tmp = 0;
> +
>
> #if defined(CONFIG_ARM)
> - return gd->bd->bi_dram[0].size;
> + return (gd->bd->bi_dram[0].size - tmp);
> #else
> - return gd->bd->bi_memsize;
> + return (gd->bd->bi_memsize - tmp);
Parens not useful here and above.
WBR, Sergei
More information about the U-Boot
mailing list