mbox series

[v2,0/3] efi_loader: bootmgr: fix a problem in loading an image from a short-path

Message ID 20220512022903.65346-1-takahiro.akashi@linaro.org
Headers show
Series efi_loader: bootmgr: fix a problem in loading an image from a short-path | expand

Message

AKASHI Takahiro May 12, 2022, 2:29 a.m. UTC
This is a reworked version of v1[1].

If a (root) file system does not have any partition table, the generated
boot option (BOOTxxxx) by the command,
    => efidebug boot add -b ...
does not work because a device path in the option is in a short-form and
does not contain any valid media device path which should expectedly support
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.

[1] https://lists.denx.de/pipermail/u-boot/2022-April/482697.html

Test:
=====
* Azure CI passed[2]

[2] https://dev.azure.com/u-boot/u-boot/_build/results?buildId=4220&view=results

TODO:
=====
The other types of short-form device paths, USB_CLASS and HARD_DRIVE, should
also be implemented in boot manager rather than LoadImage API so as to more
properly comply with the UEFI specification.
See "3.1.2 Load Option Processing".

Change history:
===============
v2 (May, 12, 2022)
* fully re-write the code to implement the feature in boot manager (patch#2)
* try removable media first (patch#1,#2)
* add a test case (patch#3)

v1 (Apr 28, 2022)
* initial patch

AKASHI Takahiro (3):
  efi_loader: disk: add efi_disk_is_removable()
  efi_loader: bootmgr: fix a problem in loading an image from a
    short-path
  test: efi_bootmgr: add a test case for a short-form path

 include/efi_loader.h                          |  3 +
 lib/efi_loader/efi_bootmgr.c                  | 98 ++++++++++++++++++-
 lib/efi_loader/efi_disk.c                     | 27 +++++
 test/py/tests/test_efi_bootmgr/conftest.py    | 25 +++++
 .../test_efi_bootmgr/test_efi_bootmgr.py      | 25 +++++
 5 files changed, 174 insertions(+), 4 deletions(-)