[PATCH] distro_bootcmd: call EFI bootmgr even without having /EFI/boot
Heinrich Schuchardt
xypron.glpk at gmx.de
Thu Sep 24 00:17:02 CEST 2020
Am 23. September 2020 23:15:50 MESZ schrieb Michael Walle <michael at walle.cc>:
>Currently, the EFI bootmgr is only called if there is a EFI binary
>inside the path for removable media is found, i.e. /EFI/boot/. This
>doesn't make sense. It is the duty of the bootmgr to find out the
>path and name of the EFI binary to boot. It should be called even
>if there is no /EFI/boot directory.
Yes, UEFI variables indicating the boot binary take precedence. \EFI\boot\ is the fallback.
>
>Thus, call the bootmgr before we try to boot the EFI binary inside
>the removable media path.
>
>Signed-off-by: Michael Walle <michael at walle.cc>
>---
> include/config_distro_bootcmd.h | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
>diff --git a/include/config_distro_bootcmd.h
>b/include/config_distro_bootcmd.h
>index fc0935fa21..c745f115f8 100644
>--- a/include/config_distro_bootcmd.h
>+++ b/include/config_distro_bootcmd.h
>@@ -123,12 +123,14 @@
>
>
>#define BOOTENV_SHARED_EFI
> \
>- "boot_efi_binary=" \
>+ "boot_efi_bootmgr=" \
> "if fdt addr ${fdt_addr_r}; then " \
The problem here is that we don't have a clue which device tree we should load to $fdt_addr_r to make this true.
> "bootefi bootmgr ${fdt_addr_r};" \
> "else " \
> "bootefi bootmgr ${fdtcontroladdr};"
Don't pass an fdt address in the else path. Some boards use ACPI. If ACPI is not used we have a fallback logic in cmd/bootefi.c.
Best regards
Heinrich
\
>- "fi;" \
>+ "fi\0" \
>+ \
>+ "boot_efi_binary=" \
> "load ${devtype} ${devnum}:${distro_bootpart} " \
> "${kernel_addr_r} efi/boot/"BOOTEFI_NAME"; " \
> "if fdt addr ${fdt_addr_r}; then " \
>@@ -152,6 +154,7 @@
> "run load_efi_dtb; " \
> "fi;" \
> "done;" \
>+ "run boot_efi_bootmgr;" \
> "if test -e ${devtype} ${devnum}:${distro_bootpart} " \
> "efi/boot/"BOOTEFI_NAME"; then " \
> "echo Found EFI removable media binary " \
More information about the U-Boot
mailing list