mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
efi_loader: make the UEFI boot manager configurable
Some boards are very tight on the binary size. Booting via UEFI is possible without using the boot manager. Provide a configuration option to make the boot manager available. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
2363effb7a
commit
ff2f532fad
5 changed files with 33 additions and 10 deletions
|
@ -631,10 +631,12 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
else if (ret != EFI_SUCCESS)
|
||||
return CMD_RET_FAILURE;
|
||||
|
||||
if (!strcmp(argv[1], "bootmgr"))
|
||||
return do_efibootmgr();
|
||||
if (IS_ENABLED(CONFIG_CMD_BOOTEFI_BOOTMGR)) {
|
||||
if (!strcmp(argv[1], "bootmgr"))
|
||||
return do_efibootmgr();
|
||||
}
|
||||
#ifdef CONFIG_CMD_BOOTEFI_SELFTEST
|
||||
else if (!strcmp(argv[1], "selftest"))
|
||||
if (!strcmp(argv[1], "selftest"))
|
||||
return do_efi_selftest();
|
||||
#endif
|
||||
|
||||
|
@ -657,11 +659,14 @@ static char bootefi_help_text[] =
|
|||
" Use environment variable efi_selftest to select a single test.\n"
|
||||
" Use 'setenv efi_selftest list' to enumerate all tests.\n"
|
||||
#endif
|
||||
#ifdef CONFIG_CMD_BOOTEFI_BOOTMGR
|
||||
"bootefi bootmgr [fdt address]\n"
|
||||
" - load and boot EFI payload based on BootOrder/BootXXXX variables.\n"
|
||||
"\n"
|
||||
" If specified, the device tree located at <fdt address> gets\n"
|
||||
" exposed as EFI configuration table.\n";
|
||||
" exposed as EFI configuration table.\n"
|
||||
#endif
|
||||
;
|
||||
#endif
|
||||
|
||||
U_BOOT_CMD(
|
||||
|
|
|
@ -1367,8 +1367,8 @@ static int do_efi_boot_opt(struct cmd_tbl *cmdtp, int flag,
|
|||
*
|
||||
* efidebug test bootmgr
|
||||
*/
|
||||
static int do_efi_test_bootmgr(struct cmd_tbl *cmdtp, int flag,
|
||||
int argc, char * const argv[])
|
||||
static __maybe_unused int do_efi_test_bootmgr(struct cmd_tbl *cmdtp, int flag,
|
||||
int argc, char * const argv[])
|
||||
{
|
||||
efi_handle_t image;
|
||||
efi_uintn_t exit_data_size = 0;
|
||||
|
@ -1392,8 +1392,10 @@ static int do_efi_test_bootmgr(struct cmd_tbl *cmdtp, int flag,
|
|||
}
|
||||
|
||||
static struct cmd_tbl cmd_efidebug_test_sub[] = {
|
||||
#ifdef CONFIG_CMD_BOOTEFI_BOOTMGR
|
||||
U_BOOT_CMD_MKENT(bootmgr, CONFIG_SYS_MAXARGS, 1, do_efi_test_bootmgr,
|
||||
"", ""),
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1581,8 +1583,10 @@ static char efidebug_help_text[] =
|
|||
" - show UEFI memory map\n"
|
||||
"efidebug tables\n"
|
||||
" - show UEFI configuration tables\n"
|
||||
#ifdef CONFIG_CMD_BOOTEFI_BOOTMGR
|
||||
"efidebug test bootmgr\n"
|
||||
" - run simple bootmgr for test\n"
|
||||
#endif
|
||||
"efidebug query [-nv][-bs][-rt][-at]\n"
|
||||
" - show size of UEFI variables store\n";
|
||||
#endif
|
||||
|
|
|
@ -123,14 +123,20 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#define BOOTENV_SHARED_EFI \
|
||||
#ifdef CONFIG_CMD_BOOTEFI_BOOTMGR
|
||||
#define BOOTENV_EFI_BOOTMGR \
|
||||
"boot_efi_bootmgr=" \
|
||||
"if fdt addr ${fdt_addr_r}; then " \
|
||||
"bootefi bootmgr ${fdt_addr_r};" \
|
||||
"else " \
|
||||
"bootefi bootmgr;" \
|
||||
"fi\0" \
|
||||
"fi\0"
|
||||
#else
|
||||
#define BOOTENV_EFI_BOOTMGR
|
||||
#endif
|
||||
|
||||
#define BOOTENV_SHARED_EFI \
|
||||
BOOTENV_EFI_BOOTMGR \
|
||||
\
|
||||
"boot_efi_binary=" \
|
||||
"load ${devtype} ${devnum}:${distro_bootpart} " \
|
||||
|
|
|
@ -27,6 +27,14 @@ config EFI_LOADER
|
|||
|
||||
if EFI_LOADER
|
||||
|
||||
config CMD_BOOTEFI_BOOTMGR
|
||||
bool "UEFI Boot Manager"
|
||||
default y
|
||||
help
|
||||
Select this option if you want to select the UEFI binary to be booted
|
||||
via UEFI variables Boot####, BootOrder, and BootNext. This enables the
|
||||
'bootefi bootmgr' command.
|
||||
|
||||
config EFI_SETUP_EARLY
|
||||
bool
|
||||
default n
|
||||
|
|
|
@ -21,7 +21,7 @@ targets += helloworld.o
|
|||
endif
|
||||
|
||||
obj-$(CONFIG_CMD_BOOTEFI_HELLO) += helloworld_efi.o
|
||||
obj-y += efi_bootmgr.o
|
||||
obj-$(CONFIG_CMD_BOOTEFI_BOOTMGR) += efi_bootmgr.o
|
||||
obj-y += efi_boottime.o
|
||||
obj-$(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) += efi_capsule.o
|
||||
obj-$(CONFIG_EFI_CAPSULE_FIRMWARE) += efi_firmware.o
|
||||
|
|
Loading…
Reference in a new issue