diff options
author | Yu-Ping Wu <yupingso@chromium.org> | 2019-11-26 13:31:32 +0800 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2019-12-02 13:00:45 +0000 |
commit | 63b9700b2ca0f2414ff242881bae9bfd77fdb138 (patch) | |
tree | a770abe4c7d45b7d6caded011886c987c61a4b55 | |
parent | a2962daf6fd1e184b7444feabe3f963a9ba614d7 (diff) | |
download | coreboot-63b9700b2ca0f2414ff242881bae9bfd77fdb138.tar.xz |
lib/coreboot_table: Add CBMEM_ID_VBOOT_WORKBUF pointer to coreboot table
Since struct vb2_shared_data already contains workbuf_size and
vboot_workbuf_size is never used in depthcharge, remove it from struct
sysinfo_t. In addition, remove lb_vboot_workbuf() and add
CBMEM_ID_VBOOT_WORKBUF pointer to coreboot table with
add_cbmem_pointers(). Parsing of coreboot table in libpayload is
modified accordingly.
BRANCH=none
BUG=chromium:1021452
TEST=emerge-nami coreboot libpayload depthcharge; Akali booted correctly
Change-Id: I890df3ff93fa44ed6d3f9ad05f9c6e49780a8ecb
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/37234
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Joel Kitching <kitching@google.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r-- | payloads/libpayload/include/sysinfo.h | 1 | ||||
-rw-r--r-- | payloads/libpayload/libc/coreboot.c | 5 | ||||
-rw-r--r-- | src/lib/coreboot_table.c | 23 | ||||
-rw-r--r-- | src/security/vboot/common.c | 2 | ||||
-rw-r--r-- | src/security/vboot/misc.h | 1 |
5 files changed, 3 insertions, 29 deletions
diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h index c05be7c159..4b929f1390 100644 --- a/payloads/libpayload/include/sysinfo.h +++ b/payloads/libpayload/include/sysinfo.h @@ -96,7 +96,6 @@ struct sysinfo_t { struct cb_mainboard *mainboard; void *vboot_workbuf; - uint32_t vboot_workbuf_size; #if CONFIG(LP_ARCH_X86) int x86_rom_var_mtrr_index; diff --git a/payloads/libpayload/libc/coreboot.c b/payloads/libpayload/libc/coreboot.c index 2ff2090c19..f6e937923e 100644 --- a/payloads/libpayload/libc/coreboot.c +++ b/payloads/libpayload/libc/coreboot.c @@ -86,10 +86,7 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info) static void cb_parse_vboot_workbuf(unsigned char *ptr, struct sysinfo_t *info) { - struct lb_range *vbwb = (struct lb_range *)ptr; - - info->vboot_workbuf = (void *)(uintptr_t)vbwb->range_start; - info->vboot_workbuf_size = vbwb->range_size; + info->vboot_workbuf = get_cbmem_ptr(ptr); } static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info) diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c index 8b18dfb18e..af9f6599c5 100644 --- a/src/lib/coreboot_table.c +++ b/src/lib/coreboot_table.c @@ -218,23 +218,6 @@ static void lb_vbnv(struct lb_header *header) } #endif /* CONFIG_CHROMEOS */ -static void lb_vboot_workbuf(struct lb_header *header) -{ - struct lb_range *vbwb; - void *wb = vboot_get_workbuf(); - - vbwb = (struct lb_range *)lb_new_record(header); - vbwb->tag = LB_TAG_VBOOT_WORKBUF; - vbwb->size = sizeof(*vbwb); - vbwb->range_start = (uintptr_t)wb; - /* - * TODO(chromium:1021452): Since cbmem size of vboot workbuf is now - * always a known value, we hardcode the value of range_size here. - * Ultimately we'll want to move this to add_cbmem_pointers() below. - */ - vbwb->range_size = VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE; -} - __weak uint32_t board_id(void) { return UNDEFINED_STRAPPING_ID; } __weak uint32_t ram_code(void) { return UNDEFINED_STRAPPING_ID; } __weak uint32_t sku_id(void) { return UNDEFINED_STRAPPING_ID; } @@ -349,6 +332,7 @@ static void add_cbmem_pointers(struct lb_header *header) {CBMEM_ID_WIFI_CALIBRATION, LB_TAG_WIFI_CALIBRATION}, {CBMEM_ID_TCPA_LOG, LB_TAG_TCPA_LOG}, {CBMEM_ID_FMAP, LB_TAG_FMAP}, + {CBMEM_ID_VBOOT_WORKBUF, LB_TAG_VBOOT_WORKBUF}, }; int i; @@ -558,11 +542,6 @@ static uintptr_t write_coreboot_table(uintptr_t rom_table_end) lb_vbnv(head); #endif - if (CONFIG(VBOOT)) { - /* pass along the vboot workbuf address. */ - lb_vboot_workbuf(head); - } - /* Add strapping IDs if available */ lb_board_id(head); lb_ram_code(head); diff --git a/src/security/vboot/common.c b/src/security/vboot/common.c index 517a1d4d34..c21fe155a5 100644 --- a/src/security/vboot/common.c +++ b/src/security/vboot/common.c @@ -27,7 +27,7 @@ static struct vb2_context *vboot_ctx; -void *vboot_get_workbuf(void) +static void *vboot_get_workbuf(void) { void *wb = NULL; diff --git a/src/security/vboot/misc.h b/src/security/vboot/misc.h index 9dd482e846..d03e76eea7 100644 --- a/src/security/vboot/misc.h +++ b/src/security/vboot/misc.h @@ -25,7 +25,6 @@ struct vb2_shared_data; /* * Source: security/vboot/common.c */ -void *vboot_get_workbuf(void); struct vb2_context *vboot_get_context(void); /* |