On 4/20/19 10:37 AM, Heinrich Schuchardt wrote: > On 4/19/19 5:22 AM, AKASHI Takahiro wrote: >> In the current implementation, bootefi command and EFI boot manager >> don't use load_image API, instead, use more primitive and internal >> functions. This will introduce duplicated code and potentially >> unknown bugs as well as inconsistent behaviours. >> >> With this patch, do_efibootmgr() and do_boot_efi() are completely >> overhauled and re-implemented using load_image API. >> >> Signed-off-by: AKASHI Takahiro <takahiro.aka...@linaro.org>
<snip /> >> diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c >> index 4fccadc5483d..13ec79b2098b 100644 >> --- a/lib/efi_loader/efi_bootmgr.c >> +++ b/lib/efi_loader/efi_bootmgr.c >> @@ -120,14 +120,14 @@ static void *get_var(u16 *name, const efi_guid_t >> *vendor, >> * if successful. This checks that the EFI_LOAD_OPTION is active >> (enabled) >> * and that the specified file to boot exists. >> */ >> -static void *try_load_entry(uint16_t n, struct efi_device_path >> **device_path, >> - struct efi_device_path **file_path) >> +static efi_status_t try_load_entry(u16 n, efi_handle_t *handle) >> { >> struct efi_load_option lo; >> u16 varname[] = L"Boot0000"; >> u16 hexmap[] = L"0123456789ABCDEF"; >> - void *load_option, *image = NULL; >> + void *load_option; >> efi_uintn_t size; >> + efi_status_t ret; >> >> varname[4] = hexmap[(n & 0xf000) >> 12]; >> varname[5] = hexmap[(n & 0x0f00) >> 8]; >> @@ -136,19 +136,19 @@ static void *try_load_entry(uint16_t n, struct >> efi_device_path **device_path, >> >> load_option = get_var(varname, &efi_global_variable_guid, &size); >> if (!load_option) >> - return NULL; >> + return EFI_LOAD_ERROR; >> >> efi_deserialize_load_option(&lo, load_option); >> >> if (lo.attributes & LOAD_OPTION_ACTIVE) { >> u32 attributes; >> - efi_status_t ret; >> >> debug("%s: trying to load \"%ls\" from %pD\n", >> __func__, lo.label, lo.file_path); >> >> - ret = efi_load_image_from_path(lo.file_path, &image, &size); >> - >> + ret = EFI_CALL(efi_load_image(false, (void *)0x1 /* FIXME */, boot_policy should be true for requests originating from the boot manager. Best regards Heinrich _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot