diff options
author | Piotr Kubik <piotr.kubik@iopsys.eu> | 2023-11-24 17:30:46 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-12-20 10:46:54 -0500 |
commit | 7481632b192f61b5bcb028c885a460d8b9c2731c (patch) | |
tree | d9324601c3458c8d2efc1ea41d83ffbdb40f75fe | |
parent | 785834d62ef3c4121601a4a68a032d96100b7475 (diff) | |
download | u-boot-7481632b192f61b5bcb028c885a460d8b9c2731c.zip u-boot-7481632b192f61b5bcb028c885a460d8b9c2731c.tar.gz u-boot-7481632b192f61b5bcb028c885a460d8b9c2731c.tar.bz2 |
bootm: Fix flags used for bootargs string substitution
Commit 51bb33846ad2 ("bootm: Support string substitution in
bootargs") introduced a feature of bootargs string substitution
and changed a flag used in bootm_process_cmdline_env() call
to be either true or false. With this flag value,
condition in bootm_process_cmdline()
`if (flags & BOOTM_CL_SUBST)` is never true
and process_subst() is never called.
Add a simple test to verify if substitution works OK.
Signed-off-by: Piotr Kubik <piotr.kubik@iopsys.eu>
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | boot/bootm.c | 6 | ||||
-rwxr-xr-x | test/py/tests/test_fit.py | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/boot/bootm.c b/boot/bootm.c index 301cfde..4cf66cc 100644 --- a/boot/bootm.c +++ b/boot/bootm.c @@ -1103,7 +1103,11 @@ int do_bootm_states(struct cmd_tbl *cmdtp, int flag, int argc, if (!ret && (states & BOOTM_STATE_OS_BD_T)) ret = boot_fn(BOOTM_STATE_OS_BD_T, argc, argv, images); if (!ret && (states & BOOTM_STATE_OS_PREP)) { - ret = bootm_process_cmdline_env(images->os.os == IH_OS_LINUX); + int flags = 0; + /* For Linux OS do all substitutions at console processing */ + if (images->os.os == IH_OS_LINUX) + flags = BOOTM_CL_ALL; + ret = bootm_process_cmdline_env(flags); if (ret) { printf("Cmdline setup failed (err=%d)\n", ret); ret = CMD_RET_FAILURE; diff --git a/test/py/tests/test_fit.py b/test/py/tests/test_fit.py index 04f64fd..8f9c4b2 100755 --- a/test/py/tests/test_fit.py +++ b/test/py/tests/test_fit.py @@ -339,6 +339,14 @@ def test_fit(u_boot_console): 'U-Boot loaded FDT from offset %#x, FDT is actually at %#x' % (fit_offset, real_fit_offset)) + # Check if bootargs strings substitution works + output = cons.run_command_list([ + 'env set bootargs \\\"\'my_boot_var=${foo}\'\\\"', + 'env set foo bar', + 'bootm prep', + 'env print bootargs']) + assert 'bootargs="my_boot_var=bar"' in output, "Bootargs strings not substituted" + # Now a kernel and an FDT with cons.log.section('Kernel + FDT load'): params['fdt_load'] = 'load = <%#x>;' % params['fdt_addr'] |