[PATCH 1/2] firmware: Remove the unhelpful alignment codes before fdt relocation

Anup Patel anup at brainfault.org
Sat Jul 17 04:57:22 PDT 2021


On Sat, Jul 10, 2021 at 7:58 PM Bin Meng <bmeng.cn at gmail.com> wrote:
>
> If the device tree is at an address that is not __SIZEOF_POINTER__
> aligned, the fdt relocation code tries to align both source and
> destination address to __SIZEOF_POINTER__ before the memory copy.
> But such alignment can lead to unexpected results if either source
> or destination address is not aligned.
>
> In fact libfdt requires that the device tree must be at an 8-byte
> aligned address. Hence remove the unhelpful alignment codes.
>
> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>

With libfdt checking alignment of FDT address, we certainly don't
need any alignment check or adjustment in FDT relocation

Reviewed-by: Anup Patel <anup.patel at wdc.com>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
>
>  firmware/fw_base.S | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/firmware/fw_base.S b/firmware/fw_base.S
> index 8e40562..abf21cd 100644
> --- a/firmware/fw_base.S
> +++ b/firmware/fw_base.S
> @@ -349,8 +349,7 @@ _scratch_init:
>          * previous booting stage.
>          */
>         beqz    a1, _fdt_reloc_done
> -       /* Mask values in a3 and a4 */
> -       li      a3, ~(__SIZEOF_POINTER__ - 1)
> +       /* Mask values in a4 */
>         li      a4, 0xff
>         /* t1 = destination FDT start address */
>         MOV_3R  s0, a0, s1, a1, s2, a2
> @@ -359,10 +358,8 @@ _scratch_init:
>         MOV_3R  a0, s0, a1, s1, a2, s2
>         beqz    t1, _fdt_reloc_done
>         beq     t1, a1, _fdt_reloc_done
> -       and     t1, t1, a3
>         /* t0 = source FDT start address */
>         add     t0, a1, zero
> -       and     t0, t0, a3
>         /* t2 = source FDT size in big-endian */
>  #if __riscv_xlen == 64
>         lwu     t2, 4(t0)
> --
> 2.25.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list