[PATCH 00/67] upl: Align with the updated spec

Simon Glass sjg at chromium.org
Wed Jan 1 23:08:46 CET 2025


The current UPL spec[1] has been tidied up and improved over the last
year, since U-Boot's original UPL support was written.

This series addresses various issues, with a goal of having U-Boot boot
EDK2.

There is still more work to do, but this series gets to the point (on
QEMU) where the ACPI tables are required. Further work will be needed to
relocate the tables out of the QEMU firmware-filesystem.

[1] git at github.com:UniversalPayload/spec.git commit 3f1450d


Simon Glass (67):
  bloblist: Make BLOBLIST_ALLOC the default
  abuf: Provide a way to get the buffer address
  abuf: Allow use in host tools
  abuf: Provide a constant buffer
  cpu: Provide a way to get the physical-address size
  serial: Support info() method in ns16550 xPL with UPL
  mkimage: Update map_to_sysmem() to match its prototype
  x86: Emable meminfo command
  x86: Show the timestamp counter with bdinfo
  ofnode: Use 4K for a default tree-size
  ofnode: Indicate when out of space in a few places
  ofnode: Update of_add_subnode() to indicate name is alloced
  boot: Rename fit_image_get_data()
  boot: Rename fit_image_get_data_and_size()
  boot: Update fit_image_get_emb_data to use abuf
  boot: Use fit_image_get_data() to get data
  boot: Update fit_image_get_data() to use abuf
  test: Fix inpected typo in upl test
  emulation: fdt: Relax condition for OF_HAS_PRIOR_STAGE
  emulation: Use bloblist to hold tables
  x86: Create more space for SPL with qemu-x86_64
  upl: Create a function to create a memory node
  upl: Update add_upl_memmap() to use write_mem_node()
  upl: Update add_upl_memres() to use write_mem_node()
  upl: Support writing a UPL only for testing
  upl: Drop enum upl_serial_access_type
  upl: Init serial and graphics alists in upl_init()
  upl: Move serial and graphics addition-code to upl_common
  pci: video: Set up the pixel-format field
  x86: Show an error if video fails
  x86: Support jumping to a UPL image
  x86: Enable UPL handoff for SPL
  x86: Align the SMBIOS table to a 4K boundary
  upl: Require OFNODE_MULTI_TREE when writing a UPL handoff
  upl: Drop the argument to spl_write_upl_handoff()
  x86: emulation: Enable UPL
  upl: Correct comment and condition in add_upl_memres()
  upl: Add addr/size tags in the reserved-memory node
  upl: Update upl_add_graphics() to return framebuffer
  upl: Add a function to write a UPL handoff to an abuf
  upl: Use a 64-bit value for a memregion base-address
  upl: Set bit 32 of the address when using ISA
  upl: Add RAM to the memory region
  upl: Add a compatible string for the upl-params node
  upl: Move buffer_addr_size() higher and rename
  upl: Factor out part of encode_reg() to new function
  upl: Move decode_addr_size() higher and rename
  upl: Factor out part of decode_reg() to new function
  upl: Correct name of upl-images
  dm: core: Clarify behaviour of ofnode_name_eq()
  dm: core: Allow ofnode_name_eq() to accept a unit address
  dm: core: Rewrite ofnode_find_subnode() to use ofnode API
  upl: test: Show the handoff FDT when debugging
  upl: Use a reg property to specify the FIT address and size
  upl: Update and tidy writing of images
  upl: Make use of alist_for_each()
  upl: Correct use of sizeof()
  upl: Drop acpi_nvs_size
  upl: Improve uniqueness of log_msg_ret() strings
  upl: Add PCI information
  upl: Handle serial on an ISA bus with /chosen node
  upl: Add missing word in comment for upl_write_handoff()
  upl: Add a command to execute a UPL payload
  scripts: Update qemu script to use 64-bit on x86 always
  scripts: Update qemu script to support specifying a UPL
  upl: Add reserved memory for the ACPI and SMBIOS tables
  upl: Add an 'addr' property for Tianocore

 arch/Kconfig                           |   2 +
 arch/arm/cpu/armv8/sec_firmware.c      |  13 +-
 arch/arm/mach-k3/r5/sysfw-loader.c     |  11 +-
 arch/x86/include/asm/cpu.h             |   9 -
 arch/x86/lib/bdinfo.c                  |   3 +
 arch/x86/lib/bootm.c                   |  18 +-
 arch/x86/lib/spl.c                     |  12 +-
 arch/x86/lib/tables.c                  |   9 +-
 boot/Kconfig                           |   9 +
 boot/Makefile                          |   1 +
 boot/image-board.c                     |  11 +-
 boot/image-fit.c                       |  98 ++----
 boot/upl_common.c                      | 191 ++++++++++
 boot/upl_exec.c                        | 130 +++++++
 boot/upl_read.c                        | 220 ++++++------
 boot/upl_write.c                       | 464 ++++++++++++++++---------
 cmd/upl.c                              |  36 +-
 cmd/ximg.c                             |  14 +-
 common/Kconfig                         |  15 +-
 common/spl/spl.c                       |   2 +-
 common/spl/spl_fit.c                   |   8 +-
 common/spl/spl_upl.c                   | 114 +-----
 common/splash_source.c                 |  18 +-
 common/update.c                        |   7 +-
 configs/chromebook_bob_defconfig       |   1 +
 configs/chromebook_coral_defconfig     |   1 +
 configs/chromebook_kevin_defconfig     |   1 +
 configs/chromebook_samus_tpl_defconfig |   1 +
 configs/qemu-x86_64_defconfig          |   9 +-
 configs/qemu-x86_defconfig             |   2 +
 configs/qemu_arm64_defconfig           |   2 +
 configs/qemu_arm_defconfig             |   2 +
 drivers/core/ofnode.c                  |  57 +--
 drivers/misc/qfw_acpi.c                |  37 +-
 drivers/misc/qfw_smbios.c              |  45 ++-
 drivers/pci/pci_rom.c                  |   3 +
 drivers/serial/ns16550.c               |   2 +-
 drivers/video/bochs.c                  |   1 +
 drivers/video/video-uclass.c           |   1 +
 dts/Kconfig                            |   2 +-
 include/abuf.h                         |  25 ++
 include/alist.h                        |   2 +-
 include/cpu.h                          |  14 +
 include/dm/ofnode.h                    |  15 +-
 include/image.h                        |  39 ++-
 include/spl.h                          |   3 +-
 include/upl.h                          | 211 +++++++++--
 include/video.h                        |   2 +
 lib/Kconfig                            |   1 +
 lib/Makefile                           |   5 +
 lib/abuf.c                             |  21 +-
 lib/alist.c                            |   2 +-
 scripts/build-qemu.sh                  |  28 +-
 test/boot/upl.c                        |  72 ++--
 test/common/Makefile                   |   4 +
 test/dm/core.c                         |   5 +
 test/dm/ofnode.c                       |  19 +
 test/lib/abuf.c                        |  27 +-
 test/py/tests/test_upl.py              |   2 +-
 tools/Makefile                         |   3 +-
 tools/fit_image.c                      |   8 +-
 tools/image-host.c                     |  23 +-
 tools/mkimage.h                        |   2 +-
 63 files changed, 1445 insertions(+), 670 deletions(-)
 create mode 100644 boot/upl_exec.c

-- 
2.43.0



More information about the U-Boot mailing list