[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