[coreboot-gerrit] New patch to review for coreboot: b47e667 coreboot_tables: Minor refactoring to reduce redundant data structures

Isaac Christensen (isaac.christensen@se-eng.com) gerrit at coreboot.org
Fri Aug 1 22:10:49 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 b47e667b50d4774d1ace3e1ad0b59c75d200e9c0
Author: Julius Werner <jwerner at chromium.org>
Date:   Tue Aug 27 15:38:54 2013 -0700

    coreboot_tables: Minor refactoring to 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 bc9b47e..1ee97cc 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_CHROMEOS
 static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
 {
-	struct cb_vbnv *vbnv = (struct cb_vbnv *)ptr;
+	struct cb_range *vbnv = (struct cb_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 cb_range *vdat = (struct cb_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 43aa970..8995079 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_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 cb_range *vbho = (struct cb_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 cb_range *vbnv = (struct cb_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 cb_range *vdat = (struct cb_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..0ccc422 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 cb_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