[PATCH] efi: Fix efiboot for payloads loaded from memory
Ilias Apalodimas
ilias.apalodimas at linaro.org
Fri Apr 11 11:44:07 CEST 2025
Thanks for the CC Heinrich
On Fri, 11 Apr 2025 at 09:31, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> On 3/23/25 20:03, Christian Kohlschütter wrote:
> > Calling bootefi on an address that was loaded from memory (e.g., cramfs
> > or SPI flash via "sf read", etc.), currently results in the EFI binary
> > not being able to access the EFI image device path.
> >
> > For example, iPXE would fail with an error "EFI could not get loaded
> > image's device path: Error 0x7f39e082 (https://ipxe.org/7f39e082)".
> >
> > This is due to an incomplete special-case in efi_binary_run, where a new
> > device path was created but not used in all required places.
> >
> > Fix the in-memory special case, set the "bootefi_device_path" to the
> > generated "file_path".
> >
> > iPXE will now boot, and report the device path as
> > "/MemoryMapped(0x0,0xSTART,0xLEN)"
> >
> > Signed-off-by: Christian Kohlschütter <christian at kohlschutter.com>
>
> Hello Christian,
>
> Thank you for the patch.
>
> For future submission, please, use scripts/get_maintainer.pl to identify
> mail recipients.
>
> Best regards
>
> Reviewed-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>
>
> > ---
> > lib/efi_loader/efi_bootbin.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/lib/efi_loader/efi_bootbin.c b/lib/efi_loader/efi_bootbin.c
> > index 10ec5e9ada3..f78cf972228 100644
> > --- a/lib/efi_loader/efi_bootbin.c
> > +++ b/lib/efi_loader/efi_bootbin.c
> > @@ -268,6 +268,9 @@ efi_status_t efi_binary_run(void *image, size_t size, void *fdt)
> > file_path, NULL);
> > if (ret != EFI_SUCCESS)
> > goto out;
> > +
> > + bootefi_device_path = file_path;
> > + bootefi_image_path = NULL;
> > } else {
> > log_debug("Loaded from disk\n");
> > }
>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
More information about the U-Boot
mailing list