I submitted an almost identical patch. See 
https://github.com/u-boot/u-boot/commit/eb39d8ba5f0d1468b01b89a2a464d18612d3ea76

This patch eventually had to be reverted 
(https://github.com/u-boot/u-boot/commit/5675ed7cb645f5ec13958726992daeeed16fd114),
 because it was causing issues on some platforms that had FIT on 32 bit 
boundary. However I continue to use it in production code, as without it the 
boot on my platform aborts.

I don't have time to investigate why this was happening, but you need to check 
this code won't just cause exactly the same faults.

> -----Original Message-----
> From: U-Boot <u-boot-boun...@lists.denx.de> On Behalf Of Bin Meng
> Sent: Monday, 12 July 2021 3:53 pm
> To: Tom Rini <tr...@konsulko.com>; Simon Glass <s...@chromium.org>; u-
> b...@lists.denx.de
> Cc: Bin Meng <bmeng...@gmail.com>
> Subject: [PATCH] spl: Align device tree blob address at 8-byte boundary
> 
> Since libfdt v1.6.1, a new requirement on the device tree address via:
> 
>   commit 5e735860c478 ("libfdt: Check for 8-byte address alignment in
> fdt_ro_probe_()")
> 
> must be met that the device tree must be loaded in to memory at an 8-byte
> aligned address.
> 
> Signed-off-by: Bin Meng <bmeng...@gmail.com>
> ---
> 
>  common/spl/spl_fit.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index
> f41abca0cc..9baf6aca9f 100644
> --- a/common/spl/spl_fit.c
> +++ b/common/spl/spl_fit.c
> @@ -374,6 +374,12 @@ static int spl_fit_append_fdt(struct spl_image_info
> *spl_image,
>        */
>       image_info.load_addr = spl_image->load_addr + spl_image->size;
> 
> +     /*
> +      * Since libfdt v1.6.1, the device tree must be loaded in to memory
> +      * at an 8-byte aligned address.
> +      */
> +     image_info.load_addr = roundup(image_info.load_addr, 8);
> +
>       /* Figure out which device tree the board wants to use */
>       node = spl_fit_get_image_node(ctx, FIT_FDT_PROP, index++);
>       if (node < 0) {
> --
> 2.25.1

Reply via email to