[Concept,3/5] doc: bootstd: Add developer docs for the EFI bootmeth
Commit Message
From: Simon Glass <simon.glass@canonical.com>
The bootstd developer docs are missing a page for the EFI bootmeth.
Add one describing the discovery and boot phases for both block and
network devices, and link it from the toctree and overview.
Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---
doc/develop/bootstd/efi.rst | 25 +++++++++++++++++++++++++
doc/develop/bootstd/index.rst | 1 +
doc/develop/bootstd/overview.rst | 2 +-
doc/develop/uefi/uefi.rst | 3 +++
4 files changed, 30 insertions(+), 1 deletion(-)
create mode 100644 doc/develop/bootstd/efi.rst
new file mode 100644
@@ -0,0 +1,25 @@
+.. SPDX-License-Identifier: GPL-2.0+:
+
+EFI Bootmeth
+=============
+
+The EFI bootmeth allows U-Boot to boot an operating system by loading and
+running an EFI application from a disk or network device. This follows the
+approach used by many Linux distributions to provide a standard boot path.
+
+When invoked on a block device, ``distro_efi_try_bootflow_files()`` searches for
+the architecture-specific EFI binary in ``/EFI/BOOT/`` (e.g.
+``bootaa64.efi``). If found, the bootflow is marked as ready. The function also
+tries to locate a matching device tree using ``efi_get_distro_fdt_name()``.
+
+When invoked on a network device, ``distro_efi_read_bootflow_net()`` performs a
+DHCP request with PXE vendor-class and architecture identifiers, then retrieves
+the EFI binary via TFTP. A device tree is also fetched if available.
+
+At boot time, ``distro_efi_boot()`` loads the EFI binary into memory (for block
+devices) and calls ``efi_bootflow_run()`` to execute it via the EFI loader.
+
+The compatible string "u-boot,distro-efi" is used for the driver. It is present
+if `CONFIG_BOOTMETH_EFI` is enabled.
+
+See :doc:`/develop/uefi/uefi` for general UEFI implementation details.
@@ -10,6 +10,7 @@ Standard Boot
extlinux
pxelinux
bls
+ efi
pxe_api
qfw
android
@@ -440,7 +440,7 @@ Bootmeth drivers are provided for booting from various media:
- :doc:`Android <android>` bootflow (boot image v4)
- :doc:`BLS <bls>` Boot Loader Specification Type #1 entries
- :doc:`ChromiumOS <cros>` ChromiumOS boot from a disk
- - EFI boot using bootefi from disk
+ - :doc:`EFI <efi>` boot using bootefi from disk or network
- EFI boot using boot manager
- :doc:`extlinux / syslinux <extlinux>` boot from a storage device
- :doc:`extlinux / syslinux <extlinux>` boot from a network (PXE)
@@ -64,6 +64,9 @@ Therefore the bootefi command uses the device path of the block device partition
or the network adapter and the file name of the most recently loaded PE-COFF
file when setting up the loaded image protocol.
+See :doc:`/develop/bootstd/efi` for how standard boot discovers and launches
+EFI binaries automatically.
+
Launching a UEFI binary from a FIT image
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~