Hi all,

This series improves CONFIG_SPL_LOAD_FIT_FULL support on RISC-V, primarily to 
enable loading OpenSBI as firmware and recording loadable images (e.g., U-Boot) 
into the FDT passed to the next boot stage. This aligns spl_load_fit_image() 
with the behaviour already present in spl_load_simple_fit().

Patch summary:

1/6: Allow IH_OS_OPENSBI in fit_image_load() so OpenSBI firmware can be loaded 
without error.

2/6: Enable spl_load_fit_image() for RAM boot when CONFIG_SPL_LOAD_FIT_FULL is 
selected.

3/6: Use map_sysmem() for FDT address handling to keep the code 
sandbox‑friendly.

4/6: Initialize spl_image_info in spl_test_load()/spl_test_load_fit_full().

5/6: Record loadables into spl_image->fdt_addr during FIT load, providing the 
entry addresses needed by subsequent stages (e.g., OpenSBI).

6/6: Add a unit test to verify that loadables are correctly recorded in the FDT.

Tested with provided sandbox test with a grafted FIT image containing OpenSBI 
(firmware), U‑Boot (loadable) and a DTB.

Signed-off-by: Nikita Shubin <[email protected]>
---
Changes in v2:

Addressed all review comments from Simon Glass:

- Patch 2/6: common: spl: ram: Add LOAD_FIT_FULL support:
  - Reworded commit message to explain that FULL parser is needed for full 
image verification (CONFIG_SPL_FIT_FULL_CHECK)
  - Added fallback: if spl_load_fit_image() fails, try spl_load_simple_fit()
  - Mentioned fallback behavior in commit message
 
- Patch 4/6: test: spl: Zero spl_image_info:
  - New patch added to zero-initialize spl_image_info structures in tests

- Patch 5/6: spl: fit: Record loadables to spl_image->fdt_addr
  - Fixed typo: "lodable" → "loadable" (subject, commit message, code)
  - Replaced -1 with FDT_ERROR (from image.h) for missing entry point
  - Moved FDT size adjustment before loop: use fdt_shrink_to_minimum() once 
instead of fdt_increase_size() per iteration
  - Extracted duplicated code into helper function fit_record_loadable()
  - Replaced debug() with log_debug()
  - Removed backslashes from debug string concatenation
  - Added note about gd->fdt_blob limitation in commit message
 
- Patch 6/6: spl: fit: Add test to check loadables
  - Fixed typo: "lodables" → "loadables" (subject, commit message)
  - Removed unused variables (uname, str)
  - Added FDT size fix after fdt_finish() to prevent external data offset drift
  - Replaced #address-cells = 2 with ADDRESS_CELLS macro
  - Replaced fdt_property_u64() with fdt_property_addr() for entry/load 
properties
  - Extracted duplicated image node creation into helper append_fit_node()
  - Fixed assertion: ut_assert(noffset > 0) instead of ut_assert(noffset)

- Link to v1: 
https://patch.msgid.link/[email protected]

---
Nikita Shubin (6):
      image: fit: allow IH_OS_OPENSBI in fit_image_load()
      common: spl: ram: Add LOAD_FIT_FULL support
      spl: fit: Use map_sysmem() with buffers for fdt address
      test: spl: Zero spl_image_info
      spl: fit: Record loadables to spl_image->fdt_addr
      spl: fit: Add test to check loadables

 boot/image-fit.c         |   1 +
 common/spl/spl_fit.c     |  66 ++++++++++++-----
 common/spl/spl_ram.c     |  19 +++--
 test/image/spl_load.c    | 184 +++++++++++++++++++++++++++++++++++++++++++++++
 test/image/spl_load_os.c |   4 +-
 5 files changed, 250 insertions(+), 24 deletions(-)
---
base-commit: cc8c034e78eba6b2a3845783889b80753bb1af1e
change-id: 20260731-riscv-full-fit-support-320d38f8311e

Best regards,
-- 
Nikita Shubin

Reply via email to