]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
zboot: Correct use of state_mask argument
authorSimon Glass <sjg@chromium.org>
Wed, 19 Jun 2024 12:34:52 +0000 (06:34 -0600)
committerTom Rini <trini@konsulko.com>
Wed, 26 Jun 2024 19:17:52 +0000 (13:17 -0600)
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: 228c6722d44 ("x86: zboot: Avoid iteration in do_zboot_states()")
Signed-off-by: Simon Glass <sjg@chromium.org>
cmd/x86/zboot.c

index c14219f19e9fb00cca0acff965803c10952ef7ec..94e602b8a5b60d682c21b4483870d93b1bd3627e 100644 (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;