
Currently only a small fraction of the UEFI specification is implemented in U-Boot. It is sufficient to load grub but it fails on iPXE.
With this patch series all EFI protocol services are implemented that are needed to reach the console prompt of the bin-<ARCH>-efi/snponly.efi target of iPXE.
Futher patches for event services are needed to use the iPXE console. These will be provided in a separate patch series.
The 1st patch refactors efi_open_protocol to enable the implementation of InstallProtocolInterface. This patch eliminates the open protocol functions in efi_disk, efi_gop, and efi_net.
The 2nd patch adds missing parameter checks to efi_open_protocol.
The 3rd patch implements InstallProtocolInteface.
The 4th patch partially implements UninstallProtocolInterface.
The 5th patch refactors efi_install_protocol_interface to make it callable internally.
The 6th patch refactors efi_uninstall_protocol_interface to make it callable internally.
The 7th patch implements InstallMultipleProtocolInterfaces by calling efi_install_protocol_interface.
The 8th patch refactors efi_locate_handle to make it callable internally.
The 9th patch implements LocateHandleBuffer.
The 10th patch increases the number of protocols per handle.
The 11th patch reimplements efi_locate_protocol.
The 12th patch implements the device path to text protocol.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
--- v2 Remove implementation of efi_return_handle in 1st patch. Correctly check GUIDs in 3rd patch. Check if protocol != NULL to avoid illegal memory access in 4th patch. Add patches 10-12. ---
Heinrich Schuchardt (12): efi_loader: refactor efi_open_protocol efi_loader: efi_open_protocol: parameter checks efi_loader: implement InstallProtocolInterface efi_loader: implement UninstallProtocolInterface efi_loader: refactor efi_install_protocol_interface efi_loader: refactor efi_uninstall_protocol_interface efi_loader: implement InstallMultipleProtocolInterfaces efi_loader: refactor efi_locate_handle efi_loader: implement LocateHandleBuffer efi_loader: provide a sufficient number of protocols efi_loader: reimplement efi_locate_protocol efi_loader: implement EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
cmd/bootefi.c | 24 +-- include/efi_api.h | 26 ++- include/efi_loader.h | 33 +--- lib/efi_loader/Makefile | 2 +- lib/efi_loader/efi_boottime.c | 261 +++++++++++++++++++++++++++---- lib/efi_loader/efi_device_path_to_text.c | 68 ++++++++ lib/efi_loader/efi_disk.c | 29 +--- lib/efi_loader/efi_gop.c | 2 +- lib/efi_loader/efi_image_loader.c | 8 - lib/efi_loader/efi_net.c | 30 +--- 10 files changed, 350 insertions(+), 133 deletions(-) create mode 100644 lib/efi_loader/efi_device_path_to_text.c