Hi Ilias,

On Thu, 20 Feb 2025 at 06:50, Ilias Apalodimas
<ilias.apalodi...@linaro.org> wrote:
>
> Hi Simon,
>
> On Thu, 20 Feb 2025 at 15:31, Simon Glass <s...@chromium.org> wrote:
> >
> > Hi,
> >
> > On Thu, 20 Feb 2025 at 01:21, Heinrich Schuchardt <xypron.g...@gmx.de> 
> > wrote:
> > >
> > > On 2/20/25 07:58, Ilias Apalodimas wrote:
> > > > On Mon, 10 Feb 2025 at 18:07, Pawel Kochanowski <pkochanow...@sii.pl> 
> > > > wrote:
> > > >>
> > > >> From: Gabriel Nesteruk <gneste...@sii.pl>
> > > >>
> > > >> 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 introduces a new `CONFIG_FDT_EXTRA_SPACE` Kconfig option
> > > >> to allow users to define the amount of extra space reserved for FDT
> > > >> expansion. The default remains 0x3000.
> > > >>
> > > >> 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>
> > > >> ---
> > > >>   lib/efi_loader/Kconfig      | 9 +++++++++
> > > >>   lib/efi_loader/efi_helper.c | 2 +-
> > > >>   2 files changed, 10 insertions(+), 1 deletion(-)
> > > >>
> > > >> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> > > >> index d4f6b56afaa..bd2cbe995c9 100644
> > > >> --- a/lib/efi_loader/Kconfig
> > > >> +++ b/lib/efi_loader/Kconfig
> > > >> @@ -586,6 +586,15 @@ config BOOTEFI_TESTAPP_COMPILE
> > > >>            No additional space will be required in the resulting 
> > > >> U-Boot binary
> > > >>            when this option is enabled.
> > > >>
> > > >> +config EFI_FDT_EXTRA_SPACE
> > > >> +    hex "Extra space to allocate for FDT expansion"
> > >
> > > Hello Pawel,
> > >
> > > Is this problem really EFI specific? Wouldn't you have a similar problem
> > > when booting via booti?
> > >
> > > >> +    default 0x3000
> > > >> +    help
> > > >> +      Defines additional space (in bytes) reserved for expanding the
> > > >> +      Flattened Device Tree (FDT) when passed to the EFI system.
> > > >> +      Increase this value if your firmware (e.g., FMAN) needs to add
> > > >> +      more data to the device tree after U-Boot relocation.
> > > >> +
> > > >>   endif
> > > >>
> > > >>   source "lib/efi/Kconfig"
> > > >> diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c
> > > >> index 04b2efc4a3b..91b2a5b8653 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_EFI_FDT_EXTRA_SPACE);
> > >
> > > This is not the only place where the configuration value needs to be
> > > considered:
> > >
> > > lib/efi_loader/efi_dt_fixup.c:171:
> > >                                0x3000;
> > >
> > > Could you, please, send a new revision of your patch.
> > >
> > > Best regards
> > >
> > > Heinrich
> > >
> > > >>          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>
> > >
> >
> > Let's do this instead, as it is generic:
> >
> > https://lore.kernel.org/u-boot/20241206131113.2865416-3-...@chromium.org/
> >
> > I believe the copy_fdt() function can just be removed, as the FDT is
> > already in reserved memory. Putting it in the ACPI_RECLAIM region is
> > wrong, too, as it is not an ACPI region.
>
> That's not true. The EFI specification explicitly requests is as such.
> ACPI_RECLAIM is a bit of an unfortunate misnomer, but it's memory the
> OS can reclaim if it wants. IIRC Linux doesn't currently

Got it. Yes it looks like Linux doesn't reclaim it.

Regards,
Simon

Reply via email to