summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2020-09-22 14:54:48 -0600
committerBin Meng <bmeng.cn@gmail.com>2020-09-25 11:27:26 +0800
commitd11544dfa9f4aeb959ea9ca642827c44bc92151e (patch)
tree853ab2fffd79e043e908ba63c74e6a2051fa689c /cmd
parent9c6aaf13473b611508e9bc3a5ab851255403c3bf (diff)
x86: hob: Add way to show a single hob entry
The 'hob' command currently lists all HOB entries. Add way to list a single entry, by index. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/x86/hob.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/cmd/x86/hob.c b/cmd/x86/hob.c
index 6b1f7bda5b..e3f512beee 100644
--- a/cmd/x86/hob.c
+++ b/cmd/x86/hob.c
@@ -34,7 +34,12 @@ static int do_hob(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
int i = 0;
efi_guid_t *guid;
char uuid[UUID_STR_LEN + 1];
+ int seq = -1; /* Show all by default */
+ argc--;
+ argv++;
+ if (argc)
+ seq = simple_strtol(*argv, NULL, 16);
hdr = gd->arch.hob_list;
printf("HOB list address: 0x%08x\n\n", (unsigned int)hdr);
@@ -43,7 +48,9 @@ static int do_hob(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
printf("%36s\n", "GUID");
printf("---|----------|-----------|------|-");
printf("------------------------------------\n");
- while (!end_of_hob(hdr)) {
+ for (i = 0; !end_of_hob(hdr); i++, hdr = get_next_hob(hdr)) {
+ if (seq != -1 && seq != i)
+ continue;
printf("%02x | %08x | ", i, (unsigned int)hdr);
type = hdr->type;
if (type == HOB_TYPE_UNUSED)
@@ -65,14 +72,13 @@ static int do_hob(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
printf("%36s", "Not Available");
}
printf("\n");
- hdr = get_next_hob(hdr);
- i++;
}
return 0;
}
-U_BOOT_CMD(hob, 1, 1, do_hob,
- "Print Hand-Off Block (HOB) information",
+U_BOOT_CMD(hob, 2, 1, do_hob,
+ "[seq] Print Hand-Off Block (HOB) information"
+ " seq - Record # to show (all by default)",
""
);