[PATCH v2 00/21] Universal Payload initial series

Heinrich Schuchardt xypron.glpk at gmx.de
Sat Jul 13 21:40:17 CEST 2024



Am 13. Juli 2024 10:12:50 MESZ schrieb Mark Kettenis <mark.kettenis at xs4all.nl>:
>> From: Simon Glass <sjg at chromium.org>
>> Date: Sat, 13 Jul 2024 08:00:34 +0100
>> 
>> Universal Payload (UPL) is an Industry Standard for firmware
>> components[1].
>
>I think you have some trouble understanding the concept of industry
>standard ;).  I guess you want this to become an industry standard.
>Firmly https://xkcd.com/927/ territory if you ask me.
>
>> 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]

Why is this series needed?

SPL loading a FIT image as described in the "universal" payload spec is already implemented in U-Boot and for instance works fine for running EDK II on RISC-V.

I cannot see what functionality is missing in U-Boot.

The UPL seems to be half cooked:

The FIT file format is already described elsewhere.

The relocation chapter describes that it should better be removed.

The device-tree chapter duplicates content of the device-tree specification and ignores the existing standardization via the Linux project.

The authors seem not to have given any thought to ACPI.

So let us wait if that UPL thing ever lifts off before wasting a code line on it.

Best regards

Heinrich

>> 
>> [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