Isaac Christensen (isaac.christensen@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@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@chromium.org Reviewed-on: https://chromium-review.googlesource.com/167154 (cherry picked from commit 22d82ffa3f5500fbc1b785e343add25e61f4f194) Signed-off-by: Isaac Christensen isaac.christensen@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) {}