[coreboot-gerrit] Patch set updated for coreboot: 13675c6 coreboot_tables: reduce redundant data structures

Isaac Christensen (isaac.christensen@se-eng.com) gerrit at coreboot.org
Tue Aug 5 19:18:06 CEST 2014


Isaac Christensen (isaac.christensen at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6456

-gerrit

commit 13675c67d5b138ab9e92f8859fa2fc964ccb4b87
Author: Julius Werner <jwerner at chromium.org>
Date:   Tue Aug 27 15:38:54 2013 -0700

    coreboot_tables: reduce redundant data structures
    
    There are three coreboot table tags that all define some kind of memory
    region, and each has their own homologous struct. I'm about to add a
    fourth so I'll just clean this up and turn it into a generic struct
    lb_range instead.
    
    Change-Id: Id148b2737d442e0636d2c05e74efa1fdf844a0d3
    Signed-off-by: Julius Werner <jwerner at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/167154
    (cherry picked from commit 22d82ffa3f5500fbc1b785e343add25e61f4f194)
    Signed-off-by: Isaac Christensen <isaac.christensen at se-eng.com>
---
 payloads/libpayload/arch/armv7/coreboot.c     | 12 ++++++------
 payloads/libpayload/arch/x86/coreboot.c       | 18 ++++++++---------
 payloads/libpayload/include/coreboot_tables.h | 28 +++++++--------------------
 src/include/boot/coreboot_tables.h            | 28 ++++++---------------------
 src/lib/coreboot_table.c                      | 22 ++++++++++-----------
 5 files changed, 39 insertions(+), 69 deletions(-)

diff --git a/payloads/libpayload/arch/armv7/coreboot.c b/payloads/libpayload/arch/armv7/coreboot.c
index 076010d..d1f0345 100644
--- a/payloads/libpayload/arch/armv7/coreboot.c
+++ b/payloads/libpayload/arch/armv7/coreboot.c
@@ -81,10 +81,10 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info)
 #ifdef CONFIG_LP_CHROMEOS
 static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
 {
-	struct cb_vbnv *vbnv = (struct cb_vbnv *)ptr;
+	struct lb_range *vbnv = (struct lb_range *)ptr;
 
-	info->vbnv_start = vbnv->vbnv_start;
-	info->vbnv_size = vbnv->vbnv_size;
+	info->vbnv_start = vbnv->range_start;
+	info->vbnv_size = vbnv->range_size;
 }
 
 static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
@@ -101,10 +101,10 @@ static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
 
 static void cb_parse_vdat(unsigned char *ptr, struct sysinfo_t *info)
 {
-	struct cb_vdat *vdat = (struct cb_vdat *) ptr;
+	struct lb_range *vdat = (struct lb_range *)ptr;
 
-	info->vdat_addr = phys_to_virt(vdat->vdat_addr);
-	info->vdat_size = vdat->vdat_size;
+	info->vdat_addr = phys_to_virt(vdat->range_start);
+	info->vdat_size = vdat->range_size;
 }
 #endif
 
diff --git a/payloads/libpayload/arch/x86/coreboot.c b/payloads/libpayload/arch/x86/coreboot.c
index 05ab336..320b8c2 100644
--- a/payloads/libpayload/arch/x86/coreboot.c
+++ b/payloads/libpayload/arch/x86/coreboot.c
@@ -82,18 +82,18 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info)
 #ifdef CONFIG_LP_CHROMEOS
 static void cb_parse_vboot_handoff(unsigned char *ptr, struct sysinfo_t *info)
 {
-	struct cb_vboot_handoff *vbho = (struct cb_vboot_handoff *)ptr;
+	struct lb_range *vbho = (struct lb_range *)ptr;
 
-	info->vboot_handoff = (void *)(uintptr_t)vbho->vboot_handoff_addr;
-	info->vboot_handoff_size = vbho->vboot_handoff_size;
+	info->vboot_handoff = (void *)(uintptr_t)vbho->range_start;
+	info->vboot_handoff_size = vbho->range_size;
 }
 
 static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
 {
-	struct cb_vbnv *vbnv = (struct cb_vbnv *)ptr;
+	struct lb_range *vbnv = (struct lb_range *)ptr;
 
-	info->vbnv_start = vbnv->vbnv_start;
-	info->vbnv_size = vbnv->vbnv_size;
+	info->vbnv_start = vbnv->range_start;
+	info->vbnv_size = vbnv->range_size;
 }
 
 static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
@@ -110,10 +110,10 @@ static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
 
 static void cb_parse_vdat(unsigned char *ptr, struct sysinfo_t *info)
 {
-	struct cb_vdat *vdat = (struct cb_vdat *) ptr;
+	struct lb_range *vdat = (struct lb_range *) ptr;
 
-	info->vdat_addr = phys_to_virt(vdat->vdat_addr);
-	info->vdat_size = vdat->vdat_size;
+	info->vdat_addr = phys_to_virt(vdat->range_start);
+	info->vdat_size = vdat->range_size;
 }
 #endif
 
diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h
index 911157b..5132d50 100644
--- a/payloads/libpayload/include/coreboot_tables.h
+++ b/payloads/libpayload/include/coreboot_tables.h
@@ -184,12 +184,14 @@ struct cb_gpios {
 	struct cb_gpio gpios[0];
 };
 
-#define CB_TAG_VDAT	0x0015
-struct cb_vdat {
+#define CB_TAG_VDAT		0x0015
+#define CB_TAG_VBNV		0x0019
+#define CB_TAG_VBOOT_HANDOFF	0x0020
+struct lb_range {
 	uint32_t tag;
-	uint32_t size;	/* size of the entire entry */
-	uint64_t vdat_addr;
-	uint32_t vdat_size;
+	uint32_t size;
+	uint64_t range_start;
+	uint32_t range_size;
 };
 
 #define CB_TAG_TIMESTAMPS	0x0016
@@ -202,22 +204,6 @@ struct cb_cbmem_tab {
 	uint64_t cbmem_tab;
 };
 
-#define CB_TAG_VBNV		0x0019
-struct cb_vbnv {
-	uint32_t tag;
-	uint32_t size;
-	uint32_t vbnv_start;
-	uint32_t vbnv_size;
-};
-
-#define CB_TAG_VBOOT_HANDOFF	0x0020
-struct cb_vboot_handoff {
-	uint32_t tag;
-	uint32_t size;
-	uint64_t vboot_handoff_addr;
-	uint32_t vboot_handoff_size;
-};
-
 #define CB_TAG_X86_ROM_MTRR	0x0021
 struct cb_x86_rom_mtrr {
 	uint32_t tag;
diff --git a/src/include/boot/coreboot_tables.h b/src/include/boot/coreboot_tables.h
index f8f8022..3c569a1 100644
--- a/src/include/boot/coreboot_tables.h
+++ b/src/include/boot/coreboot_tables.h
@@ -215,13 +215,15 @@ struct lb_gpios {
 	struct lb_gpio gpios[0];
 };
 
-#define LB_TAG_VDAT	0x0015
-struct lb_vdat {
+#define LB_TAG_VDAT		0x0015
+#define LB_TAG_VBNV		0x0019
+#define LB_TAB_VBOOT_HANDOFF	0x0020
+struct lb_range {
 	uint32_t tag;
 	uint32_t size;
 
-	uint64_t vdat_addr;
-	uint32_t vdat_size;
+	uint64_t range_start;
+	uint32_t range_size;
 };
 
 #define LB_TAG_TIMESTAMPS	0x0016
@@ -235,24 +237,6 @@ struct lb_cbmem_ref {
 	uint64_t cbmem_addr;
 };
 
-#define LB_TAG_VBNV		0x0019
-struct lb_vbnv {
-	uint32_t tag;
-	uint32_t size;
-
-	uint32_t vbnv_start;
-	uint32_t vbnv_size;
-};
-
-#define LB_TAB_VBOOT_HANDOFF	0x0020
-struct lb_vboot_handoff {
-	uint32_t tag;
-	uint32_t size;
-
-	uint64_t vboot_handoff_addr;
-	uint32_t vboot_handoff_size;
-};
-
 #define LB_TAG_X86_ROM_MTRR	0x0021
 struct lb_x86_rom_mtrr {
 	uint32_t tag;
diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c
index 1e1ad82..f0ae6c5 100644
--- a/src/lib/coreboot_table.c
+++ b/src/lib/coreboot_table.c
@@ -169,25 +169,25 @@ static void lb_gpios(struct lb_header *header)
 static void lb_vdat(struct lb_header *header)
 {
 #if CONFIG_GENERATE_ACPI_TABLES
-	struct lb_vdat* vdat;
+	struct lb_range *vdat;
 
-	vdat = (struct lb_vdat *)lb_new_record(header);
+	vdat = (struct lb_range *)lb_new_record(header);
 	vdat->tag = LB_TAG_VDAT;
 	vdat->size = sizeof(*vdat);
-	acpi_get_vdat_info(&vdat->vdat_addr, &vdat->vdat_size);
+	acpi_get_vdat_info(&vdat->range_start, &vdat->range_size);
 #endif
 }
 
 static void lb_vbnv(struct lb_header *header)
 {
 #if CONFIG_PC80_SYSTEM
-	struct lb_vbnv* vbnv;
+	struct lb_range *vbnv;
 
-	vbnv = (struct lb_vbnv *)lb_new_record(header);
+	vbnv = (struct lb_range *)lb_new_record(header);
 	vbnv->tag = LB_TAG_VBNV;
 	vbnv->size = sizeof(*vbnv);
-	vbnv->vbnv_start = CONFIG_VBNV_OFFSET + 14;
-	vbnv->vbnv_size = CONFIG_VBNV_SIZE;
+	vbnv->range_start = CONFIG_VBNV_OFFSET + 14;
+	vbnv->range_size = CONFIG_VBNV_SIZE;
 #endif
 }
 
@@ -196,16 +196,16 @@ static void lb_vboot_handoff(struct lb_header *header)
 {
 	void *addr;
 	uint32_t size;
-	struct lb_vboot_handoff* vbho;
+	struct lb_range *vbho;
 
 	if (vboot_get_handoff_info(&addr, &size))
 		return;
 
-	vbho = (struct lb_vboot_handoff *)lb_new_record(header);
+	vbho = (struct lb_range *)lb_new_record(header);
 	vbho->tag = LB_TAB_VBOOT_HANDOFF;
 	vbho->size = sizeof(*vbho);
-	vbho->vboot_handoff_addr = (intptr_t)addr;
-	vbho->vboot_handoff_size = size;
+	vbho->range_start = (intptr_t)addr;
+	vbho->range_size = size;
 }
 #else
 static inline void lb_vboot_handoff(struct lb_header *header) {}



More information about the coreboot-gerrit mailing list