[U-Boot] [PATCH] fdt_support.c: Correct linux, initrd-start/end setting

FengHua fenghua at phytium.com.cn
Tue Jan 21 11:09:32 CET 2014


> -----Original Messages-----
> From: "Tom Rini" <trini at ti.com>
> Sent Time: 2014-01-21 06:47:25 (Tuesday)
> To: u-boot at lists.denx.de
> Cc: 
> Subject: [U-Boot] [PATCH] fdt_support.c: Correct linux, initrd-start/end setting
> 
> The change to add 64bit initrd support broke 32bit initrd support as it
> always set 64bits worth of data into the properties, even on 32bit
> systems.  The fix is to use addr_cell_len (which already says how much
> data is in 'tmp') to set the property, rather than always setting 8.
> Thanks to Stephen Warren for pointing out the fix here.
> 
> Reported-by: Otavio Salvador <otavio at ossystems.com.br>
> Signed-off-by: Tom Rini <trini at ti.com>
> ---
>  common/fdt_support.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/common/fdt_support.c b/common/fdt_support.c
> index b9dce99..f9f358e 100644
> --- a/common/fdt_support.c
> +++ b/common/fdt_support.c
> @@ -204,7 +204,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
>  	if ((path == NULL) || force) {
>  		write_cell((u8 *)&tmp, initrd_start, addr_cell_len);
>  		err = fdt_setprop(fdt, nodeoffset,
> -			"linux,initrd-start", &tmp, sizeof(tmp));
> +			"linux,initrd-start", &tmp, addr_cell_len);
>  		if (err < 0) {
>  			printf("WARNING: "
>  				"could not set linux,initrd-start %s.\n",
> @@ -213,7 +213,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
>  		}
>  		write_cell((u8 *)&tmp, initrd_end, addr_cell_len);
>  		err = fdt_setprop(fdt, nodeoffset,
> -			"linux,initrd-end", &tmp, sizeof(tmp));
> +			"linux,initrd-end", &tmp, addr_cell_len);
>  		if (err < 0) {
>  			printf("WARNING: could not set linux,initrd-end %s.\n",
>  				fdt_strerror(err));
> -- 
> 1.7.9.5
> 

It should be like this. Acked.








More information about the U-Boot mailing list