summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2013-07-04 13:26:09 -0700
committerTom Rini <trini@ti.com>2013-07-10 09:15:14 -0400
commita26913f32df0d26b94f6c5518d744df5ba6ededb (patch)
tree903f0168853899a84e045dd00a4600daedeca648 /common
parent385501d38b406c2d65b47c3978af2f659df89b28 (diff)
downloadu-boot-imx-a26913f32df0d26b94f6c5518d744df5ba6ededb.zip
u-boot-imx-a26913f32df0d26b94f6c5518d744df5ba6ededb.tar.gz
u-boot-imx-a26913f32df0d26b94f6c5518d744df5ba6ededb.tar.bz2
bootm: Require boot function only if it is about to be used
The original bootm code (before commit 35fc84f) did not check for a valid boot function in the subcommand case, which was incorrect. This check was introduced in all cases, but in fact we should only check for the function when we need it. Otherwise in some cases the check fires before the OS type is known. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/cmd_bootm.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index e712602..21ab642 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -605,7 +605,7 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
{
boot_os_fn *boot_fn;
ulong iflag = 0;
- int ret = 0;
+ int ret = 0, need_boot_fn;
images->state |= states;
@@ -665,7 +665,10 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
if (ret)
return ret;
boot_fn = boot_os[images->os.os];
- if (boot_fn == NULL) {
+ need_boot_fn = states & (BOOTM_STATE_OS_CMDLINE |
+ BOOTM_STATE_OS_BD_T | BOOTM_STATE_OS_PREP |
+ BOOTM_STATE_OS_FAKE_GO | BOOTM_STATE_OS_GO);
+ if (boot_fn == NULL && need_boot_fn) {
if (iflag)
enable_interrupts();
printf("ERROR: booting os '%s' (%d) is not supported\n",