[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