[PATCH v3 42/43] vbe: Add a command to show the VBE state
Simon Glass
sjg at chromium.org
Fri Oct 21 02:23:19 CEST 2022
Add a VBE comment which shows the current state. Currently this is just
the phases which booted via VBE.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
(no changes since v1)
cmd/vbe.c | 31 ++++++++++++++++++++++++++++++-
include/spl.h | 2 ++
2 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/cmd/vbe.c b/cmd/vbe.c
index a5737edc047..befaf07c64d 100644
--- a/cmd/vbe.c
+++ b/cmd/vbe.c
@@ -7,9 +7,11 @@
*/
#include <common.h>
+#include <bloblist.h>
#include <bootmeth.h>
#include <bootstd.h>
#include <command.h>
+#include <spl.h>
#include <vbe.h>
static int do_vbe_list(struct cmd_tbl *cmdtp, int flag, int argc,
@@ -74,14 +76,41 @@ static int do_vbe_info(struct cmd_tbl *cmdtp, int flag, int argc,
return 0;
}
+static int do_vbe_state(struct cmd_tbl *cmdtp, int flag, int argc,
+ char *const argv[])
+{
+ struct vbe_handoff *handoff;
+ int i;
+
+ handoff = bloblist_find(BLOBLISTT_VBE, sizeof(struct vbe_handoff));
+ if (!handoff) {
+ printf("No VBE state\n");
+ return CMD_RET_FAILURE;
+ }
+
+ printf("Phases:");
+ for (i = PHASE_NONE; i < PHASE_COUNT; i++) {
+ if (handoff->phases & (1 << i))
+ printf(" %s", spl_phase_name(i));
+
+ }
+ if (!handoff->phases)
+ printf(" (none)");
+ printf("\n");
+
+ return 0;
+}
+
#ifdef CONFIG_SYS_LONGHELP
static char vbe_help_text[] =
"list - list VBE bootmeths\n"
"vbe select - select a VBE bootmeth by sequence or name\n"
- "vbe info - show information about a VBE bootmeth";
+ "vbe info - show information about a VBE bootmeth\n"
+ "vbe state - show VBE state";
#endif
U_BOOT_CMD_WITH_SUBCMDS(vbe, "Verified Boot for Embedded", vbe_help_text,
U_BOOT_SUBCMD_MKENT(list, 1, 1, do_vbe_list),
U_BOOT_SUBCMD_MKENT(select, 2, 1, do_vbe_select),
+ U_BOOT_SUBCMD_MKENT(state, 2, 1, do_vbe_state),
U_BOOT_SUBCMD_MKENT(info, 2, 1, do_vbe_info));
diff --git a/include/spl.h b/include/spl.h
index e407c7fe55b..ab62813c4fe 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -66,6 +66,8 @@ enum u_boot_phase {
PHASE_SPL, /* Running in SPL */
PHASE_BOARD_F, /* Running in U-Boot before relocation */
PHASE_BOARD_R, /* Running in U-Boot after relocation */
+
+ PHASE_COUNT,
};
/**
--
2.38.0.135.g90850a2211-goog
More information about the U-Boot
mailing list