
Hi! This is v4 of [1]
Changes since v3: - Slightly tweaked the efidebug argument parsing following Heinrich's suggestion. Instead of calculating the file device path initially and appending the initrd, the 2 two device paths are now calculated independently and concatenated later, allowing us to easier handle the various switches (-i, -b etc) - Fixed documentation typo that prevented htmldocs from building - Removed [1/6] patch which was already merged
Changes since v2: - Lengths checks when interpreting a device path, to make sure we aren't going out of bounds - renamed efi_get_file_size -> efi_file_size and moved it in efi_file.c - Fix uninitialized variable related errors reported by Cppcheck - Fixed various error messages for easier end user readability - renamed _efi_dp_append() -> efi_dp_append_or_concatenate() - Picked up Reviewed-by tags - Enabling the protocol by default
Changes since v1: - minor coding style fixes from Heinrich - changed the DP format. Instead of VenMedia - 0x01 - initrd, we skip the 0x01 between VenMedia and the first file. - final device path is stripped in efi_get_dp_from_boot() instead of get_initrd_fp() - Fixed comments on documentation
[1] https://lists.denx.de/pipermail/u-boot/2021-March/443399.html
Ilias Apalodimas (5): efi_loader: Add device path related functions for initrd via Boot#### efi_loader: Add helper functions for EFI efi_loader: Replace config option for initrd loading efidebug: add multiple device path instances on Boot#### doc: Update uefi documentation for initrd loading options
cmd/bootefi.c | 3 + cmd/efidebug.c | 191 +++++++++++++---- doc/board/emulation/qemu_capsule_update.rst | 4 +- doc/uefi/uefi.rst | 24 ++- include/efi_loader.h | 12 ++ lib/efi_loader/Kconfig | 17 +- lib/efi_loader/Makefile | 1 + lib/efi_loader/efi_bootmgr.c | 19 +- lib/efi_loader/efi_device_path.c | 106 ++++++++- lib/efi_loader/efi_file.c | 39 ++++ lib/efi_loader/efi_helper.c | 98 +++++++++ lib/efi_loader/efi_load_initrd.c | 202 +++++++++++------- lib/efi_loader/efi_var_common.c | 33 +++ .../test_efi_capsule/test_capsule_firmware.py | 6 +- test/py/tests/test_efi_secboot/test_signed.py | 16 +- .../test_efi_secboot/test_signed_intca.py | 8 +- .../tests/test_efi_secboot/test_unsigned.py | 8 +- 17 files changed, 625 insertions(+), 162 deletions(-) create mode 100644 lib/efi_loader/efi_helper.c