[PATCH] sandbox_spl: Restrict use of UPL when not enabled

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 sjg@chromium.org 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; }
static int spl_board_load_file(struct spl_image_info *spl_image,

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 sjg@chromium.org 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#e... 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,

Hi Heinrich,
On Wed, 25 Sept 2024 at 13:55, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
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 sjg@chromium.org 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#e... it seems a field uniquely identifying universal payloads (in contrast to non-UPL FIT images) is missing in the specification.
Yes, that could be done as a new feature. But this patch is still correct.
Regards, Simon

Hi Heinrich,
On Wed, 25 Sept 2024 at 13:55, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
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 sjg@chromium.org Fixes: 91fde8e1764 ("sandbox: Add an SPL loader for UPL")
arch/sandbox/cpu/spl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
Applied to u-boot-dm, thanks!
participants (2)
-
Heinrich Schuchardt
-
Simon Glass