diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index e712602b8d..21ab6428a1 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",