On Tue, 18 Mar 2025 at 11:23, Pawel Kochanowski <pkochanow...@sii.pl> wrote: > > U-Boot currently reserves only 0x3000 bytes when copying the FDT > in copy_fdt(), which may not be sufficient if additional nodes > (such as FMAN firmware) are added later. > > This patch uses the exisitng SYS_FDT_PAD to reserve space for FDT fixup > instead of hardcoded value. > > This change prevents potential corruption when resizing FDT after > EFI boot, especially when firmware like FMAN requires additional > space. > > Signed-off-by: Gabriel Nesteruk <gneste...@sii.pl> > Signed-off-by: Pawel Kochanowski <pkochanow...@sii.pl> > --- > Changes since version 1: > - Removed custom CONFIG_FDT_EXTRA_SPACE in favor of already present > SYS_FDT_PAD > - Use the define also in efi_dt_fixup.c > > lib/efi_loader/efi_dt_fixup.c | 2 +- > lib/efi_loader/efi_helper.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/lib/efi_loader/efi_dt_fixup.c b/lib/efi_loader/efi_dt_fixup.c > index 26928cfc454..544e1aa9808 100644 > --- a/lib/efi_loader/efi_dt_fixup.c > +++ b/lib/efi_loader/efi_dt_fixup.c > @@ -168,7 +168,7 @@ efi_dt_fixup(struct efi_dt_fixup_protocol *this, void > *dtb, > /* Check size */ > required_size = fdt_off_dt_strings(dtb) + > fdt_size_dt_strings(dtb) + > - 0x3000; > + CONFIG_SYS_FDT_PAD; > total_size = fdt_totalsize(dtb); > if (required_size < total_size) > required_size = total_size; > diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c > index 04b2efc4a3b..40e5d31575a 100644 > --- a/lib/efi_loader/efi_helper.c > +++ b/lib/efi_loader/efi_helper.c > @@ -477,7 +477,7 @@ static efi_status_t copy_fdt(void **fdtp) > * needs to be expanded later. > */ > fdt = *fdtp; > - fdt_pages = efi_size_in_pages(fdt_totalsize(fdt) + 0x3000); > + fdt_pages = efi_size_in_pages(fdt_totalsize(fdt) + > CONFIG_SYS_FDT_PAD); > fdt_size = fdt_pages << EFI_PAGE_SHIFT; > > ret = efi_allocate_pages(EFI_ALLOCATE_ANY_PAGES, > -- > 2.43.0 >
Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>