diff mbox series

[1/5] x86: hob: Add way to show a single hob entry

Message ID 20200920094914.1.Ib7d728dbb54312205dd9895f619db71d7af61fd2@changeid
State Superseded
Delegated to: Bin Meng
Headers show
Series x86: Updates to some commands | expand

Commit Message

Simon Glass Sept. 20, 2020, 3:49 p.m. UTC
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>
---

 cmd/x86/hob.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

Comments

Bin Meng Sept. 22, 2020, 8:33 a.m. UTC | #1
On Sun, Sep 20, 2020 at 11:49 PM Simon Glass <sjg@chromium.org> wrote:
>
> 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>
> ---
>
>  cmd/x86/hob.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
diff mbox series

Patch

diff --git a/cmd/x86/hob.c b/cmd/x86/hob.c
index 6b1f7bda5b8..e3f512beee8 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)",
 	   ""
 );