[U-Boot] [PATCH] fdt_shrink_to_minimum: do not mark fdt space reserved unconditionally
Lokesh Vutla
lokeshvutla at ti.com
Sat May 4 07:04:52 UTC 2019
On 04/05/19 12:49 AM, Simon Goldschmidt wrote:
> This function merely relocates the fdt blob, so don't let it alter
> it by adding reservations that didn't exist before.
>
> Instead, if the memory used for the fdt blob has been reserved
> before calling this function, ensure the relocated memory is
> marked as reserved instead.
>
> Reported-by: Keerthy <j-keerthy at ti.com>
> Reported-by: Lokesh Vutla <lokeshvutla at ti.com>
> Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
Reviewed-by: Lokesh Vutla <lokeshvutla at ti.com>
Thanks and regards,
Lokesh
> ---
>
> common/fdt_support.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/common/fdt_support.c b/common/fdt_support.c
> index ab08a0114f..4e7cf6ebe9 100644
> --- a/common/fdt_support.c
> +++ b/common/fdt_support.c
> @@ -597,6 +597,7 @@ int fdt_shrink_to_minimum(void *blob, uint extrasize)
> uint64_t addr, size;
> int total, ret;
> uint actualsize;
> + int fdt_memrsv = 0;
>
> if (!blob)
> return 0;
> @@ -606,6 +607,7 @@ int fdt_shrink_to_minimum(void *blob, uint extrasize)
> fdt_get_mem_rsv(blob, i, &addr, &size);
> if (addr == (uintptr_t)blob) {
> fdt_del_mem_rsv(blob, i);
> + fdt_memrsv = 1;
> break;
> }
> }
> @@ -627,10 +629,12 @@ int fdt_shrink_to_minimum(void *blob, uint extrasize)
> /* Change the fdt header to reflect the correct size */
> fdt_set_totalsize(blob, actualsize);
>
> - /* Add the new reservation */
> - ret = fdt_add_mem_rsv(blob, map_to_sysmem(blob), actualsize);
> - if (ret < 0)
> - return ret;
> + if (fdt_memrsv) {
> + /* Add the new reservation */
> + ret = fdt_add_mem_rsv(blob, map_to_sysmem(blob), actualsize);
> + if (ret < 0)
> + return ret;
> + }
>
> return actualsize;
> }
>
More information about the U-Boot
mailing list