x86: Add a little more info to cbsysinfo

Show the number of records in the table and the total table size in
bytes.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
diff --git a/arch/x86/include/asm/cb_sysinfo.h b/arch/x86/include/asm/cb_sysinfo.h
index 2c78b22..12fa395 100644
--- a/arch/x86/include/asm/cb_sysinfo.h
+++ b/arch/x86/include/asm/cb_sysinfo.h
@@ -138,6 +138,8 @@
  * @rsdp: Pointer to ACPI RSDP table
  * @unimpl_count: Number of entries in unimpl_map[]
  * @unimpl: List of unimplemented IDs (bottom 8 bits only)
+ * @table_size: Number of bytes taken up by the sysinfo table
+ * @rec_count: Number of records in the sysinfo table
  */
 struct sysinfo_t {
 	unsigned int cpu_khz;
@@ -219,6 +221,8 @@
 	void *rsdp;
 	u32 unimpl_count;
 	u8 unimpl[SYSINFO_MAX_UNIMPL];
+	uint table_size;
+	uint rec_count;
 };
 
 extern struct sysinfo_t lib_sysinfo;
diff --git a/arch/x86/lib/coreboot/cb_sysinfo.c b/arch/x86/lib/coreboot/cb_sysinfo.c
index 42cc3a1..dfbc80c 100644
--- a/arch/x86/lib/coreboot/cb_sysinfo.c
+++ b/arch/x86/lib/coreboot/cb_sysinfo.c
@@ -447,6 +447,8 @@
 
 		ptr += rec->size;
 	}
+	info->table_size += (void *)ptr - (void *)header;
+	info->rec_count += header->table_entries;
 
 	return 1;
 }
@@ -462,6 +464,8 @@
 	addr = locate_coreboot_table();
 	if (addr < 0)
 		return addr;
+	info->table_size = 0;
+	info->rec_count = 0;
 	ret = cb_parse_header((void *)addr, 0x1000, info);
 	if (!ret)
 		return -ENOENT;
diff --git a/cmd/x86/cbsysinfo.c b/cmd/x86/cbsysinfo.c
index 2b8d3b0..84822a3 100644
--- a/cmd/x86/cbsysinfo.c
+++ b/cmd/x86/cbsysinfo.c
@@ -190,8 +190,9 @@
 	struct cb_serial *ser = info->serial;
 	int i;
 
-	printf("Coreboot table at %lx, decoded to %p",
-	       gd->arch.coreboot_table, info);
+	printf("Coreboot table at %lx, size %x, records %x (dec %d), decoded to %p",
+	       gd->arch.coreboot_table, info->table_size, info->rec_count,
+	       info->rec_count, info);
 	if (info->header)
 		printf(", forwarded to %p\n", info->header);
 	printf("\n");