Patchwork [U-Boot] powerpc: Fix device tree padding associated with ramdisk

login
register
mail settings
Submitter Kumar Gala
Date July 7, 2011, 1:16 a.m.
Message ID <1310001388-4084-1-git-send-email-galak@kernel.crashing.org>
Download mbox | patch
Permalink /patch/103598/
State Accepted
Commit 9e9579bbf9780ced1153371cdc6aeb1ea8f0c0b6
Delegated to: Wolfgang Denk
Headers show

Comments

Kumar Gala - July 7, 2011, 1:16 a.m.
When booting with a ramdisk we bump the amount of memory reserved for
the device tree by FDT_RAMDISK_OVERHEAD.  However we did not increase
the actual size in the device tree blob to match.

Its possible on boundary cases that we dont have enough memory according
to the device tree blob and get errors like:

WARNING: could not set linux,initrd-end FDT_ERR_NOSPACE

We can easily fix this by setting the device tree size at the same time
we bump the amount of memory reserved for the device tree.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
 arch/powerpc/lib/bootm.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
Kumar Gala - July 14, 2011, 1:30 p.m.
On Jul 6, 2011, at 8:16 PM, Kumar Gala wrote:

> When booting with a ramdisk we bump the amount of memory reserved for
> the device tree by FDT_RAMDISK_OVERHEAD.  However we did not increase
> the actual size in the device tree blob to match.
> 
> Its possible on boundary cases that we dont have enough memory according
> to the device tree blob and get errors like:
> 
> WARNING: could not set linux,initrd-end FDT_ERR_NOSPACE
> 
> We can easily fix this by setting the device tree size at the same time
> we bump the amount of memory reserved for the device tree.
> 
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> ---
> arch/powerpc/lib/bootm.c |    4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)

Jerry,

Any comments on this.

- k

> 
> diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c
> index e01787d..4e0cb8f 100644
> --- a/arch/powerpc/lib/bootm.c
> +++ b/arch/powerpc/lib/bootm.c
> @@ -288,8 +288,10 @@ static int boot_body_linux(bootm_headers_t *images)
> 			return ret;
> 		of_size = ret;
> 
> -		if (*initrd_start && *initrd_end)
> +		if (*initrd_start && *initrd_end) {
> 			of_size += FDT_RAMDISK_OVERHEAD;
> +			fdt_set_totalsize(*of_flat_tree, of_size);
> +		}
> 		/* Create a new LMB reservation */
> 		lmb_reserve(lmb, (ulong)*of_flat_tree, of_size);
> 
> -- 
> 1.7.3.4
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Jerry Van Baren - July 14, 2011, 2:47 p.m.
Hi Kumar, Wolfgang

On 07/06/2011 09:16 PM, Kumar Gala wrote:
> When booting with a ramdisk we bump the amount of memory reserved for
> the device tree by FDT_RAMDISK_OVERHEAD.  However we did not increase
> the actual size in the device tree blob to match.
>
> Its possible on boundary cases that we dont have enough memory according
> to the device tree blob and get errors like:
>
> WARNING: could not set linux,initrd-end FDT_ERR_NOSPACE
>
> We can easily fix this by setting the device tree size at the same time
> we bump the amount of memory reserved for the device tree.
>
> Signed-off-by: Kumar Gala<galak@kernel.crashing.org>
> ---
>   arch/powerpc/lib/bootm.c |    4 +++-
>   1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c
> index e01787d..4e0cb8f 100644
> --- a/arch/powerpc/lib/bootm.c
> +++ b/arch/powerpc/lib/bootm.c
> @@ -288,8 +288,10 @@ static int boot_body_linux(bootm_headers_t *images)
>   			return ret;
>   		of_size = ret;
>
> -		if (*initrd_start&&  *initrd_end)
> +		if (*initrd_start&&  *initrd_end) {
>   			of_size += FDT_RAMDISK_OVERHEAD;
> +			fdt_set_totalsize(*of_flat_tree, of_size);
> +		}
>   		/* Create a new LMB reservation */
>   		lmb_reserve(lmb, (ulong)*of_flat_tree, of_size);

This looks good to me.  Since it is in bootm.c and not in libfdt, I'll 
let Wolfgang pick it up unless I hear otherwise.

Acked-by: Gerald Van Baren <vanbaren@cideas.com>

Thanks,
gvb
Wolfgang Denk - July 26, 2011, 11:55 a.m.
Dear Kumar Gala,

In message <1310001388-4084-1-git-send-email-galak@kernel.crashing.org> you wrote:
> When booting with a ramdisk we bump the amount of memory reserved for
> the device tree by FDT_RAMDISK_OVERHEAD.  However we did not increase
> the actual size in the device tree blob to match.
> 
> Its possible on boundary cases that we dont have enough memory according
> to the device tree blob and get errors like:
> 
> WARNING: could not set linux,initrd-end FDT_ERR_NOSPACE
> 
> We can easily fix this by setting the device tree size at the same time
> we bump the amount of memory reserved for the device tree.
> 
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> ---
>  arch/powerpc/lib/bootm.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Patch

diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c
index e01787d..4e0cb8f 100644
--- a/arch/powerpc/lib/bootm.c
+++ b/arch/powerpc/lib/bootm.c
@@ -288,8 +288,10 @@  static int boot_body_linux(bootm_headers_t *images)
 			return ret;
 		of_size = ret;
 
-		if (*initrd_start && *initrd_end)
+		if (*initrd_start && *initrd_end) {
 			of_size += FDT_RAMDISK_OVERHEAD;
+			fdt_set_totalsize(*of_flat_tree, of_size);
+		}
 		/* Create a new LMB reservation */
 		lmb_reserve(lmb, (ulong)*of_flat_tree, of_size);