mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
bootm: Handle errors consistently
A recent bootm fix left the error path incomplete. If CONFIG_TRACE is set it may still not be a supported command, so cover that with the unsupported subcommand print. Once we handle BOOTM_STATE_OS_GO, we can just move into the error handler itself, no need for a goto there. Signed-off-by: Simon Glass <sjg@chromium.org> [trini: Update slightly based on Simon's changes to also cover CONFIG_TRACE/BOOTM_STATE_FAKE_OS_GO] Signed-off-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
e3a5bbce45
commit
b7a1d13462
1 changed files with 9 additions and 14 deletions
|
@ -703,13 +703,6 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||||
if (!ret && (states & BOOTM_STATE_OS_PREP))
|
if (!ret && (states & BOOTM_STATE_OS_PREP))
|
||||||
ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images);
|
ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images);
|
||||||
|
|
||||||
/* Check for unsupported subcommand. */
|
|
||||||
if (ret) {
|
|
||||||
puts("subcommand not supported\n");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_TRACE
|
#ifdef CONFIG_TRACE
|
||||||
/* Pretend to run the OS, then run a user command */
|
/* Pretend to run the OS, then run a user command */
|
||||||
if (!ret && (states & BOOTM_STATE_OS_FAKE_GO)) {
|
if (!ret && (states & BOOTM_STATE_OS_FAKE_GO)) {
|
||||||
|
@ -721,15 +714,17 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||||
ret = run_command_list(cmd_list, -1, flag);
|
ret = run_command_list(cmd_list, -1, flag);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* Now run the OS! We hope this doesn't return */
|
|
||||||
if (!ret && (states & BOOTM_STATE_OS_GO)) {
|
/* Check for unsupported subcommand. */
|
||||||
ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_GO,
|
if (ret) {
|
||||||
images, boot_fn);
|
puts("subcommand not supported\n");
|
||||||
if (ret)
|
return ret;
|
||||||
goto err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
/* Now run the OS! We hope this doesn't return */
|
||||||
|
if (!ret && (states & BOOTM_STATE_OS_GO))
|
||||||
|
ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_GO,
|
||||||
|
images, boot_fn);
|
||||||
|
|
||||||
/* Deal with any fallout */
|
/* Deal with any fallout */
|
||||||
err:
|
err:
|
||||||
|
|
Loading…
Reference in a new issue