[PATCH 0/4] bootstd: firmware-owned devicetree for EBBR / SystemReady IR

Carlo Caione ccaione at baylibre.com
Mon Jul 6 17:06:41 CEST 2026


EBBR-style firmware (SystemReady IR) owns the devicetree: the OS is
booted via UEFI and receives the devicetree from the firmware through
the EFI configuration table instead of shipping its own. U-Boot has
the handoff mechanism (efi_install_fdt()), but no generic way to say
which devicetree the firmware owns or where it lives, so vendors carry
downstream commands for it (e.g. MediaTek's dtbprobe) and every board
reinvents discovery, selection and authentication.

This series adds a bootstd-level facility for sourcing the
firmware-owned devicetree from a FIT manifest on a dedicated GPT
partition:

- one FIT image ("fdt.itb" by default) on a partition identified by
  type UUID and/or name describes and carries the base devicetree and
  its overlays. FIT configurations name the bootable combinations, so
  signing a configuration authenticates the base, the overlay set and
  their ordering in one go;

- the control devicetree points at the source: a 'firmware-fdt-source'
  phandle under /bootstd referencing a 'u-boot,firmware-fdt-block' node
  under the owning media device;

- configuration selection: compatible best-match against the control
  devicetree (CONFIG_FIT_BEST_MATCH), then the manifest default, with
  environment overrides for explicit choice (one manifest can serve
  both a vendor OS wanting the full overlay stack and a generic
  distro wanting the plain base tree);

- both EFI launch paths consume it, the EFI bootmeth (disk and network)
  and the EFI boot manager, all funneling into efi_install_fdt();

- fail closed: once a source is configured, any failure to produce
  the devicetree ends the boot rather than silently falling back to an
  unverified one.

Patch 1 adds the core helper (source binding, partition lookup,
manifest assembly and selection); patch 2 hooks the EFI bootmeth,
disk and network paths; patch 3 the EFI boot manager; patch 4 adds
the sandbox tests.

For more details please check the RFC at [1] (or the commits).

[1] https://lore.kernel.org/u-boot/140504E6-5BCB-4566-A03F-2A94B0F5BA01@baylibre.com/

Signed-off-by: Carlo Caione <ccaione at baylibre.com>
---
Carlo Caione (4):
      bootstd: add a firmware-owned devicetree source
      bootmeth: efi: source the devicetree from a firmware partition
      efi_loader: bootmgr: install the firmware-owned devicetree
      test: bootstd: add firmware-FDT source tests

 MAINTAINERS                               |   3 +
 arch/sandbox/dts/test.dts                 |  24 ++
 boot/Kconfig                              |  23 ++
 boot/Makefile                             |   1 +
 boot/bootmeth_efi.c                       |  81 +++++++
 boot/firmware_fdt.c                       | 382 ++++++++++++++++++++++++++++++
 configs/sandbox_defconfig                 |   1 +
 doc/develop/bootstd/firmware_fdt.rst      |  94 ++++++++
 doc/develop/bootstd/index.rst             |   1 +
 doc/device-tree-bindings/firmware-fdt.txt | 149 ++++++++++++
 include/firmware_fdt.h                    |  78 ++++++
 lib/efi_loader/efi_bootmgr.c              |  50 +++-
 test/boot/Makefile                        |   1 +
 test/boot/firmware_fdt.c                  | 292 +++++++++++++++++++++++
 test/py/tests/test_ut.py                  | 110 +++++++++
 15 files changed, 1283 insertions(+), 7 deletions(-)
---
base-commit: a3f393c02cf10f44310c6ddf3dedf354c2e877a0
change-id: 20260706-ccaione-upstream-ebbr-206c30be3a3a

Best regards,
--  
Carlo Caione <ccaione at baylibre.com>



More information about the U-Boot mailing list