[PATCH v2 00/21] Universal Payload initial series
Simon Glass
sjg at chromium.org
Sat Jul 13 09:00:34 CEST 2024
Universal Payload (UPL) is an Industry Standard for firmware
components[1]. UPL is designed to improve interoperability within the
firmware industry, allowing mixing and matching of projects with less
friction and fewer project-specific implementations. UPL is
cross-platform, supporting ARM, x86 and RISC-V initially.
This series provides some initial support for this, targeting 0.9.1 and
sandbox only.
Features still to come include:
- Support for architectures
- FIT validation
- Handoff validation
- Interoperability tests
This series is available at dm/uplb-working and requires the alist
series at dm/alist-working[2]
[1] https://universalpayload.github.io/spec/
[2] https://patchwork.ozlabs.org/project/uboot/list/?series=414642
Changes in v2:
- Put the upl tests under their own subcommand to avoid bootstd init
- Add a function to init the UPL process in SPL
- Hang when something goes wrong, to avoid a broken boot
- Add a runtime flag to enable UPL
- Add a link to the spec
- Add a link to the command
- Support CI testing
- Rework to use alist instead of fixed-length arrays
Simon Glass (21):
sandbox: Use const in os_jump_to_file()
sandbox: Fix a comment in os_find_u_boot()
test: Move some SPL-loading test-code into sandbox common
sandbox: Enable SPL_LOAD_BLOCK
fdt: Don't overwrite bloblist devicetree
sandbox: fdt: Avoid overwriting an existing fdt
sandbox: Return error code from read/write/seek
sandbox: Add ELF file to VPL u-boot.img
sandbox: Set up global_data earlier
upl: Add support for reading a upl handoff
upl: Add support for writing a upl handoff
upl: Add basic tests
upl: Add a command
upl: Add support for Universal Payload in SPL
spl: Plumb in the Universal Payload handoff
upl: Plumb in universal payload to the init process
sandbox_vpl: Enable Universal Payload
upl: Add initial documentation
sandbox: Add a flag to enable UPL
sandbox: Add an SPL loader for UPL
upl: Add an end-to-end test
MAINTAINERS | 13 +
Makefile | 4 +-
arch/sandbox/cpu/cpu.c | 2 +
arch/sandbox/cpu/os.c | 30 +-
arch/sandbox/cpu/spl.c | 116 +++++-
arch/sandbox/cpu/start.c | 18 +-
arch/sandbox/include/asm/spl.h | 15 +
arch/sandbox/include/asm/state.h | 1 +
boot/Kconfig | 70 ++++
boot/Makefile | 4 +
boot/upl_common.c | 60 +++
boot/upl_common.h | 24 ++
boot/upl_read.c | 588 ++++++++++++++++++++++++++++
boot/upl_write.c | 622 ++++++++++++++++++++++++++++++
cmd/Kconfig | 7 +
cmd/Makefile | 1 +
cmd/upl.c | 118 ++++++
common/board_f.c | 22 ++
common/board_r.c | 2 +
common/spl/Kconfig | 1 +
common/spl/Makefile | 2 +
common/spl/spl.c | 8 +
common/spl/spl_fit.c | 22 ++
common/spl/spl_upl.c | 171 ++++++++
configs/sandbox_defconfig | 1 +
configs/sandbox_vpl_defconfig | 4 +
doc/usage/cmd/upl.rst | 186 +++++++++
doc/usage/index.rst | 2 +
doc/usage/upl.rst | 46 +++
drivers/block/sandbox.c | 4 +-
drivers/usb/emul/sandbox_flash.c | 2 +-
fs/sandbox/sandboxfs.c | 6 +-
include/asm-generic/global_data.h | 19 +
include/os.h | 6 +-
include/spl.h | 16 +
include/test/suites.h | 1 +
include/upl.h | 361 +++++++++++++++++
lib/fdtdec.c | 1 +
test/boot/Makefile | 2 +
test/boot/upl.c | 436 +++++++++++++++++++++
test/cmd_ut.c | 3 +
test/image/spl_load_os.c | 53 +--
test/py/tests/test_upl.py | 38 ++
43 files changed, 3036 insertions(+), 72 deletions(-)
create mode 100644 boot/upl_common.c
create mode 100644 boot/upl_common.h
create mode 100644 boot/upl_read.c
create mode 100644 boot/upl_write.c
create mode 100644 cmd/upl.c
create mode 100644 common/spl/spl_upl.c
create mode 100644 doc/usage/cmd/upl.rst
create mode 100644 doc/usage/upl.rst
create mode 100644 include/upl.h
create mode 100644 test/boot/upl.c
create mode 100644 test/py/tests/test_upl.py
--
2.34.1
More information about the U-Boot
mailing list