
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.
Changes from v1 -> v2:
- Only set client id to 0 on x86 - new patch: net: Fix client identifiers for ARM - new patch: net: Move CONFIG_SPL_NET_VCI_STRING into Kconfig - new patch: net: Optionally use pxe client arch from variable - Error out for unknown arch - Also set client arch variable
Alexander Graf (7): efi_loader: Add network access support bootp: Move vendor class identifier set to function net: Move the VCI and client arch values to Kconfig net: Fix client identifiers for ARM net: Move CONFIG_SPL_NET_VCI_STRING into Kconfig net: Optionally use pxe client arch from variable distro: Add efi pxe boot code
cmd/bootefi.c | 7 + configs/am335x_evm_defconfig | 1 + configs/am335x_evm_nor_defconfig | 1 + configs/am335x_evm_norboot_defconfig | 1 + configs/am335x_evm_spiboot_defconfig | 1 + configs/am335x_evm_usbspl_defconfig | 1 + configs/am335x_sl50_defconfig | 1 + configs/am437x_gp_evm_defconfig | 1 + configs/am437x_sk_evm_defconfig | 1 + configs/am43xx_evm_defconfig | 1 + configs/am43xx_evm_ethboot_defconfig | 1 + configs/am43xx_evm_qspiboot_defconfig | 1 + configs/am43xx_evm_usbhost_boot_defconfig | 1 + configs/birdland_bav335a_defconfig | 1 + configs/birdland_bav335b_defconfig | 1 + configs/ls2080a_emu_defconfig | 1 + configs/ls2080a_simu_defconfig | 1 + configs/pcm051_rev1_defconfig | 1 + configs/pcm051_rev3_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 | 47 ++++- 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 | 16 ++ net/bootp.c | 59 +++--- net/net.c | 4 +- net/tftp.c | 2 + 44 files changed, 554 insertions(+), 56 deletions(-) create mode 100644 lib/efi_loader/efi_net.c