u-boot/lib/efi_loader
Masahisa Kojima d7d07a8b50 efi_loader: support boot from URI device path
This supports to boot from the URI device path.
When user selects the URI device path, bootmgr downloads
the file using wget into the address specified by loadaddr
env variable.
If the file is .iso or .img file, mount the image with blkmap
then try to boot with the default file(e.g. EFI/BOOT/BOOTAA64.EFI).
Since boot option indicating the default file is automatically
created when new disk is detected, system can boot by selecting
the automatically created blkmap boot option.
If the file is PE-COFF file, load and start the downloaded file.

The buffer used to download the ISO image file must be
reserved to avoid the unintended access to the image and
expose the ramdisk to the OS.
For PE-COFF file case, this memory reservation is done
in LoadImage Boot Service.

[Ilias fix a few memory leaks by replacing returns with gotos]
Lore: https://lore.kernel.org/u-boot/20231110042542.3797301-1-masahisa.kojima@linaro.org/T/#mbac31da301ff465b60894b38f3a587b2868cf817
Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2023-11-18 10:08:09 +02:00
..
.gitignore efi_loader: git ignore helloworld_efi.S 2020-01-07 18:08:20 +01:00
boothart.c efi_loader: add an EFI binary to print boot hart ID 2022-12-02 19:17:24 +01:00
capsule_esl.dtsi.in scripts/Makefile.lib: Embed capsule public key in platform's dtb 2023-08-29 13:38:55 -04:00
dtbdump.c efi_loader: move dtbdump.c, initrddump.c to lib/efi_loader 2022-03-20 17:01:00 +01:00
efi_acpi.c efi: Use the installed ACPI tables 2023-07-17 17:23:15 +08:00
efi_bootmgr.c efi_loader: support boot from URI device path 2023-11-18 10:08:09 +02:00
efi_boottime.c efi_loader: add return to efibootmgr event group 2023-11-18 10:08:09 +02:00
efi_capsule.c efi_loader: fix an IS_ERR() vs NULL check 2023-08-03 09:21:02 +02:00
efi_conformance.c efi_loader: fix efi_ecpt_register() 2023-02-10 13:05:40 +01:00
efi_console.c efi_loader: describe term_get_char() 2023-03-13 13:56:14 +01:00
efi_device_path.c efi_loader: simplify dp_fill() 2023-07-28 11:36:37 +02:00
efi_device_path_to_text.c efi_loader: simplify efi_str_to_u16() 2023-03-25 11:06:35 +01:00
efi_device_path_utilities.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
efi_disk.c efi_loader: Boot var automatic management 2023-11-18 10:08:08 +02:00
efi_dt_fixup.c treewide: Drop bootm_headers_t typedef 2022-09-29 16:07:57 -04:00
efi_esrt.c efi_loader: fix comment in ESRT code 2023-01-27 18:32:00 +01:00
efi_file.c efi_loader: catch out of memory in file_open 2023-08-03 09:21:03 +02:00
efi_firmware.c efi_loader: check uuid_str_to_bin return value 2023-08-03 09:21:03 +02:00
efi_freestanding.c trace: Use notrace for short 2023-01-18 11:49:12 -07:00
efi_gop.c efi_loader: make gop_blt() static 2023-02-10 13:05:40 +01:00
efi_helper.c Move bootorder and bootoption apis to lib 2023-07-15 11:20:41 +02:00
efi_hii.c efi_loader: refine set_keyboard_layout() status 2023-01-13 09:09:07 +01:00
efi_hii_config.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_image_loader.c efi_loader: Fix memory corruption on 32bit systems 2023-08-03 09:21:02 +02:00
efi_load_initrd.c efi_loader: remove efi_delete_handle on loadfile2 2022-10-16 12:23:22 +02:00
efi_load_options.c efi_loader: fix uninitialized variable bug in efi_set_load_options() 2023-07-28 11:36:37 +02:00
efi_memory.c efi_loader: fix efi_add_known_memory() 2023-08-15 18:21:17 +02:00
efi_net.c efi_loader: fix handling of DHCP acknowledge 2022-12-02 19:17:24 +01:00
efi_riscv.c efi_loader: use EFI_EXIT in efi_riscv_get_boot_hartid 2023-01-13 09:09:07 +01:00
efi_rng.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_root_node.c Correct SPL use of EFI_UNICODE_COLLATION_PROTOCOL2 2023-02-09 16:32:26 -05:00
efi_runtime.c efi: loader: Make efi_runtime_mmio static 2023-04-08 07:46:44 +02:00
efi_setup.c efi_loader: Boot var automatic management 2023-11-18 10:08:08 +02:00
efi_signature.c efi_loader: signature: export efi_hash_regions() 2022-07-05 14:37:16 +02:00
efi_smbios.c efi: Use the installed SMBIOS tables 2023-09-22 06:05:40 +08:00
efi_string.c efi: Add string conversion helper 2022-10-06 22:54:57 +02:00
efi_tcg2.c efi_loader: fix EFI_ENTRY point on get_active_pcr_banks 2023-10-27 13:17:21 +03:00
efi_unicode_collation.c efi_loader: Fix buffer underflow 2022-11-22 11:54:30 +01:00
efi_var_common.c efi_loader: update attribute check for QueryVariableInfo() 2023-02-10 13:05:39 +01:00
efi_var_file.c efi_loader: avoid adding variables twice 2022-12-29 10:51:50 +01:00
efi_var_mem.c efi_loader: Avoid underflow when calculating remaining var store size 2023-07-09 03:53:08 +02:00
efi_var_seed.S efi_loader: pre-seed UEFI variables 2020-07-16 12:37:02 +02:00
efi_variable.c efi_loader: update SetVariable attribute check 2023-03-13 13:56:14 +01:00
efi_variable_tee.c arm_ffa: efi: introduce FF-A MM communication 2023-08-08 10:22:03 -04:00
efi_watchdog.c efi_loader: update the timing of enabling and disabling EFI watchdog 2022-02-26 07:37:01 +01:00
helloworld.c efi_loader: print file path w/o boot device 2023-05-13 11:09:51 +02:00
initrddump.c efi_loader: avoid using HandleProtocol in initrddump.efi 2023-04-08 07:45:34 +02:00
Kconfig efi_loader: support boot from URI device path 2023-11-18 10:08:09 +02:00
Makefile efi: Rearrange the Kconfig for CMD_BOOTEFI_BOOTMGR 2023-11-07 14:48:51 -05:00