[Concept,3/5] doc: bootstd: Add developer docs for the EFI bootmeth

Message ID 20260213211739.381127-4-sjg@u-boot.org
State New
Headers
Series doc: bootstd: Add missing bootmeth developer documentation |

Commit Message

Simon Glass Feb. 13, 2026, 9:17 p.m. UTC
  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
  

Patch

diff --git a/doc/develop/bootstd/efi.rst b/doc/develop/bootstd/efi.rst
new file mode 100644
index 00000000000..abd1ab158aa
--- /dev/null
+++ b/doc/develop/bootstd/efi.rst
@@ -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.
diff --git a/doc/develop/bootstd/index.rst b/doc/develop/bootstd/index.rst
index cee792ffc98..bbdcb154724 100644
--- a/doc/develop/bootstd/index.rst
+++ b/doc/develop/bootstd/index.rst
@@ -10,6 +10,7 @@  Standard Boot
    extlinux
    pxelinux
    bls
+   efi
    pxe_api
    qfw
    android
diff --git a/doc/develop/bootstd/overview.rst b/doc/develop/bootstd/overview.rst
index 34ee42c79e0..60ba247e005 100644
--- a/doc/develop/bootstd/overview.rst
+++ b/doc/develop/bootstd/overview.rst
@@ -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)
diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst
index ef53c4c35dd..a5131fa2d49 100644
--- a/doc/develop/uefi/uefi.rst
+++ b/doc/develop/uefi/uefi.rst
@@ -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
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~