In U-Boot EFI boot options can already specify both an EFI binary and an initrd. With this series we can additionally define the matching device-tree to be loaded in the boot option.
With the last patch the boot manager will fall back the device-tree specified by $fdtfile in directories '/dtb/', '/', or '/dtb/current/' on the boot device if no device-tree is specified in the boot option or via a bootefi command parameter. Heinrich Schuchardt (14): efi_loader: pass GUID by address to efi_dp_from_lo efi_loader: library function efi_dp_merge efi_loader: simplify efi_dp_concat() cmd: eficonfig: add support for setting fdt cmd: efidebug: add support for setting fdt efi_loader: superfluous efi_restore_gd after EFI_CALL cmd: terminate efidebug test bootmgr early on error efi_loader: improve error handling in try_load_entry() efi_loader: do not install dtb if bootmgr fails efi_loader: load device-tree specified in boot option efi_loader: move distro_efi_get_fdt_name() efi_loader: return binary from efi_dp_from_lo() efi_loader: export efi_load_image_from_path efi_loader: load distro dtb in bootmgr boot/bootmeth_efi.c | 60 +----- cmd/bootefi.c | 1 - cmd/eficonfig.c | 90 +++++++-- cmd/efidebug.c | 89 +++++++-- include/efi_loader.h | 15 +- lib/efi_loader/Makefile | 1 + lib/efi_loader/efi_bootbin.c | 2 +- lib/efi_loader/efi_bootmgr.c | 186 +++++++++++++----- lib/efi_loader/efi_boottime.c | 3 +- lib/efi_loader/efi_device_path.c | 77 +++++--- lib/efi_loader/efi_device_path_utilities.c | 2 +- lib/efi_loader/efi_fdt.c | 117 +++++++++++ lib/efi_loader/efi_helper.c | 6 +- lib/efi_loader/efi_load_initrd.c | 2 +- test/py/tests/test_efi_secboot/test_signed.py | 28 +-- .../test_efi_secboot/test_signed_intca.py | 10 +- .../tests/test_efi_secboot/test_unsigned.py | 6 +- 17 files changed, 489 insertions(+), 206 deletions(-) create mode 100644 lib/efi_loader/efi_fdt.c -- 2.43.0