
One of the most common boot cases with EFI on arm64 is to boot from the network using PXE boot. While TianoCore implements that just fine, we were lacking support for it in U-Boot so far.
But no longer! Here is a patch set, enabling PXE booting of EFI payloads. With this patch set, I was successfully able to automatically boot our normal (usually used with TianoCore based systems) environment to boot and run grub2 and a kernel from there with U-Boot.
Alexander Graf (4): efi_loader: Add network access support bootp: Move vendor class identifier set to function net: Move the VCI and client arch values to Kconfig distro: Add efi pxe boot code
cmd/bootefi.c | 7 + configs/ls2080a_emu_defconfig | 1 + configs/ls2080a_simu_defconfig | 1 + configs/thunderx_88xx_defconfig | 1 + configs/vexpress_aemv8a_dram_defconfig | 1 + configs/vexpress_aemv8a_juno_defconfig | 1 + configs/vexpress_aemv8a_semi_defconfig | 1 + configs/vexpress_ca15_tc2_defconfig | 1 + configs/vexpress_ca5x2_defconfig | 1 + configs/vexpress_ca9x4_defconfig | 1 + include/config_distro_bootcmd.h | 37 ++++- include/config_distro_defaults.h | 21 --- include/configs/ls2080a_emu.h | 1 - include/configs/ls2080a_simu.h | 1 - include/configs/thunderx_88xx.h | 2 - include/configs/vexpress_aemv8a.h | 2 - include/configs/vexpress_ca15_tc2.h | 1 - include/configs/vexpress_ca5x2.h | 1 - include/configs/vexpress_ca9x4.h | 1 - include/efi_api.h | 119 ++++++++++++++ include/efi_loader.h | 7 + include/net.h | 2 +- lib/efi_loader/Makefile | 1 + lib/efi_loader/efi_net.c | 291 +++++++++++++++++++++++++++++++++ net/Kconfig | 12 ++ net/bootp.c | 37 +++-- net/net.c | 4 +- net/tftp.c | 2 + 28 files changed, 511 insertions(+), 47 deletions(-) create mode 100644 lib/efi_loader/efi_net.c