
Heinrich,
Can you kindly review this series of patches, in particular, patch#10? I would like to push it for v2019.07.
-Takahiro Akashi
On Wed, Mar 27, 2019 at 01:40:31PM +0900, AKASHI Takahiro wrote:
There are several reasons that I want to rework/refactor bootefi command as well as bootmgr:
Some previous commits on bootefi.c have made the code complicated and a bit hard to understand.
do_bootefi_exec() would better be implemented using load_image() along with start_image() to be aligned with UEFI interfaces.
Contrary to the other part, efi_selftest part of the code is unusal in terms of loading/execution path in do_bootefi().
When we will support "secure boot" in the future, EFI Boot Manager is expected to be invoked as a standalone command without any arguments to mitigate security surfaces.
In this patch set, Patch#1 is a bug fix. Patch#2 to #9 are preparatory patches for patch#10. Patch#10 is a core part of reworking. Patch#11 is for standalone boot manager.
# Please note that some patches, say patch#4 and #5, can be combined into one # but I intentionally keep them separated to clearify my intentions of changes.
Prerequsite patch:
- "efi_loader: bootmgr: support BootNext and BootCurrent variable behavior"
- "efi_loader: release file buffer after loading image"
Issues:
- load_image() will take an argument of "parent_handle," but obviously we don't have any parent when invoking an application from command line. (See FIXME in patch#10.)
- Starting EDK2's Shell.efi from boot manager fails. (I need to find out a fix.)
- The semantics of efi_dp_from_name() should be changed. (See FIXME in patch#10.)
-Takahiro Akashi
Changes in RFC v2 (Mar 27, 2019)
- rebased on v2019.04-rc4
- use load_image API in do_bootmgr_load()
- merge efi_install_fdt() and efi_process_fdt()
- add EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL to image (patch#1)
- lots of minor changes
AKASHI Takahiro (11): efi_loader: boottime: add loaded image device path protocol to image handle efi_loader: boottime: export efi_[un]load_image() efi_loader: device_path: handle special case of loading cmd: bootefi: carve out fdt handling from do_bootefi() cmd: bootefi: merge efi_install_fdt() and efi_process_fdt() cmd: bootefi: carve out efi_selftest code from do_bootefi() cmd: bootefi: move do_bootefi_bootmgr_exec() forward cmd: bootefi: carve out bootmgr code from do_bootefi() cmd: bootefi: carve out do_boot_efi() from do_bootefi() efi_loader: rework bootmgr/bootefi using load_image API cmd: add efibootmgr command
cmd/Kconfig | 8 + cmd/bootefi.c | 521 +++++++++++++++++++----------- include/efi_api.h | 4 + include/efi_loader.h | 15 +- lib/efi_loader/efi_bootmgr.c | 43 +-- lib/efi_loader/efi_boottime.c | 34 +- lib/efi_loader/efi_device_path.c | 8 + lib/efi_loader/efi_image_loader.c | 2 + 8 files changed, 411 insertions(+), 224 deletions(-)
-- 2.20.1