zboot: Correct use of state_mask argument

There is confusion in this function between the flag and state_mask
parameters, which prevents the boot from actually happening. Correct
this by using state_mask instead of flag for deciding which states to go
through.

This fixes booting of some 32-bit Debian kernels.

Note: Some sort of CI for this is in the works.

Fixes: 228c6722d4 ("x86: zboot: Avoid iteration in do_zboot_states()")

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2024-06-19 06:34:52 -06:00 committed by Tom Rini
parent bce4c15f26
commit 52ff1f5da0

View File

@ -122,18 +122,18 @@ U_BOOT_SUBCMDS(zboot,
int do_zboot_states(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[], int state_mask)
{
int ret;
int ret = 0;
log_debug("state_mask %x\n", state_mask);
if (flag & ZBOOT_STATE_START)
if (state_mask & ZBOOT_STATE_START)
ret = do_zboot_start(cmdtp, flag, argc, argv);
if (!ret && (flag & ZBOOT_STATE_LOAD))
if (!ret && (state_mask & ZBOOT_STATE_LOAD))
ret = do_zboot_load(cmdtp, flag, argc, argv);
if (!ret && (flag & ZBOOT_STATE_SETUP))
if (!ret && (state_mask & ZBOOT_STATE_SETUP))
ret = do_zboot_setup(cmdtp, flag, argc, argv);
if (!ret && (flag & ZBOOT_STATE_INFO))
if (!ret && (state_mask & ZBOOT_STATE_INFO))
ret = do_zboot_info(cmdtp, flag, argc, argv);
if (!ret && (flag & ZBOOT_STATE_GO))
if (!ret && (state_mask & ZBOOT_STATE_GO))
ret = do_zboot_go(cmdtp, flag, argc, argv);
if (ret)
return ret;