cmd/bootefi: correct command syntax

For indicating the address and size of a memory region other commands use a
<addr>[:<size>] syntax. Do the same for bootefi.

Fixes: 2058983689 ("cmd: bootefi: restore ability to boot arbitrary blob")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
Heinrich Schuchardt 2022-05-19 08:00:56 +02:00
parent b96de9cb0c
commit 8131c85a77
2 changed files with 19 additions and 10 deletions

View file

@ -649,6 +649,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[]) char *const argv[])
{ {
efi_status_t ret; efi_status_t ret;
char *img_addr, *img_size, *str_copy, *pos;
void *fdt; void *fdt;
if (argc < 2) if (argc < 2)
@ -662,7 +663,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
return CMD_RET_FAILURE; return CMD_RET_FAILURE;
} }
if (argc > 2 && strcmp(argv[2], "-")) { if (argc > 2) {
uintptr_t fdt_addr; uintptr_t fdt_addr;
fdt_addr = hextoul(argv[2], NULL); fdt_addr = hextoul(argv[2], NULL);
@ -684,16 +685,24 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
if (!strcmp(argv[1], "selftest")) if (!strcmp(argv[1], "selftest"))
return do_efi_selftest(); return do_efi_selftest();
#endif #endif
str_copy = strdup(argv[1]);
if (!str_copy) {
log_err("Out of memory\n");
return CMD_RET_FAILURE;
}
pos = str_copy;
img_addr = strsep(&pos, ":");
img_size = strsep(&pos, ":");
ret = do_bootefi_image(img_addr, img_size);
free(str_copy);
return do_bootefi_image(argv[1], argc > 3 ? argv[3] : NULL); return ret;
} }
#ifdef CONFIG_SYS_LONGHELP #ifdef CONFIG_SYS_LONGHELP
static char bootefi_help_text[] = static char bootefi_help_text[] =
"<image address> [fdt address [image size]]\n" "<image address>[:<image size>] [<fdt address>]\n"
" - boot EFI payload stored at <image address>\n" " - boot EFI payload\n"
" fdt address, address of device-tree or '-'\n"
" image size, required if image not preloaded\n"
#ifdef CONFIG_CMD_BOOTEFI_HELLO #ifdef CONFIG_CMD_BOOTEFI_HELLO
"bootefi hello\n" "bootefi hello\n"
" - boot a sample Hello World application stored within U-Boot\n" " - boot a sample Hello World application stored within U-Boot\n"

View file

@ -9,10 +9,10 @@ Synopsis
:: ::
bootefi [image_addr] [fdt_addr [image_size]] bootefi <image_addr>[:<image_size>] [<fdt_addr>]
bootefi bootmgr [fdt_addr] bootefi bootmgr [<fdt_addr>]
bootefi hello [fdt_addr] bootefi hello [<fdt_addr>]
bootefi selftest [fdt_addr] bootefi selftest [<fdt_addr>]
Description Description
----------- -----------