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

Heinrich Schuchardt xypron.glpk at gmx.de
Wed Sep 25 13:50:37 CEST 2024


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 at 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#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,



More information about the U-Boot mailing list