On 25.09.24 12:44, Simon Glass wrote:
With sandbox_spl we want to use the file-based boot in CI, so that this
flow is tested. The recent UPL change enabled booting via that method,
thus overriding the file-based boot.

Correct this by using UPL only when the --upl flag is given.

Signed-off-by: Simon Glass <[email protected]>
Fixes: 91fde8e1764 ("sandbox: Add an SPL loader for UPL")
---

  arch/sandbox/cpu/spl.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/sandbox/cpu/spl.c b/arch/sandbox/cpu/spl.c
index 1c33a520c64..76638362564 100644
--- a/arch/sandbox/cpu/spl.c
+++ b/arch/sandbox/cpu/spl.c
@@ -55,9 +55,10 @@ void board_init_f(ulong flag)

  void board_boot_order(u32 *spl_boot_list)
  {
+       struct sandbox_state *state = state_get_current();
+
        spl_boot_list[0] = BOOT_DEVICE_VBE;
-       spl_boot_list[1] = BOOT_DEVICE_UPL;
-       spl_boot_list[2] = BOOT_DEVICE_BOARD;
+       spl_boot_list[1] = state->upl ? BOOT_DEVICE_UPL : BOOT_DEVICE_BOARD;

Wouldn't the UPL method check if the loaded file is a universal payload,
and if not the BOARD method would be executed?

In upl_load_from_image() I am missing a check that the FIT image is
really a universal payload, e.g. look at the spec-revision field.

Considering
https://universalpayload.github.io/spec/chapter2-payload-image-format.html#example-fit
it seems a field uniquely identifying universal payloads (in contrast to
non-UPL FIT images) is missing in the specification.

Best regards

Heinrich


  }

  static int spl_board_load_file(struct spl_image_info *spl_image,

Reply via email to