From 8d0f59935d340287b15e21f19e2f2c28fcb45cce Mon Sep 17 00:00:00 2001 From: Joel Kitching Date: Wed, 13 Mar 2019 18:10:52 +0800 Subject: vboot: make vboot workbuf available to payload Create a new cbtable entry called VBOOT_WORKBUF for storing a pointer to the vboot workbuf within the vboot_working_data structure. BUG=b:124141368, b:124192753 TEST=Build and deploy to eve TEST=util/lint/checkpatch.pl -g origin/master..HEAD TEST=util/abuild/abuild -B -e -y -c 50 -p none -x BRANCH=none Change-Id: Id68f43c282939d9e1b419e927a14fe8baa290d91 Signed-off-by: Joel Kitching Reviewed-on: https://review.coreboot.org/c/coreboot/+/31887 Reviewed-by: Simon Glass Reviewed-by: Simon Glass Reviewed-by: Julius Werner Tested-by: build bot (Jenkins) --- payloads/libpayload/include/coreboot_tables.h | 1 + payloads/libpayload/include/sysinfo.h | 2 ++ payloads/libpayload/libc/coreboot.c | 11 +++++++++++ 3 files changed, 14 insertions(+) (limited to 'payloads/libpayload') diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h index 15685264be..92e3f26180 100644 --- a/payloads/libpayload/include/coreboot_tables.h +++ b/payloads/libpayload/include/coreboot_tables.h @@ -202,6 +202,7 @@ struct cb_gpios { #define CB_TAG_VBNV 0x0019 #define CB_TAG_VBOOT_HANDOFF 0x0020 +#define CB_TAG_VBOOT_WORKBUF 0x0034 #define CB_TAG_DMA 0x0022 #define CB_TAG_RAM_OOPS 0x0023 #define CB_TAG_MTC 0x002b diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h index 845b7c4c84..7e6e74809d 100644 --- a/payloads/libpayload/include/sysinfo.h +++ b/payloads/libpayload/include/sysinfo.h @@ -97,6 +97,8 @@ struct sysinfo_t { void *vboot_handoff; u32 vboot_handoff_size; + 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 ba5bb27294..3982e47ec2 100644 --- a/payloads/libpayload/libc/coreboot.c +++ b/payloads/libpayload/libc/coreboot.c @@ -86,6 +86,14 @@ static void cb_parse_vboot_handoff(unsigned char *ptr, struct sysinfo_t *info) info->vboot_handoff_size = vbho->range_size; } +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; +} + static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info) { struct lb_range *vbnv = (struct lb_range *)ptr; @@ -355,6 +363,9 @@ int cb_parse_header(void *addr, int len, struct sysinfo_t *info) case CB_TAG_VBOOT_HANDOFF: cb_parse_vboot_handoff(ptr, info); break; + case CB_TAG_VBOOT_WORKBUF: + cb_parse_vboot_workbuf(ptr, info); + break; case CB_TAG_MAC_ADDRS: cb_parse_mac_addresses(ptr, info); break; -- cgit v1.2.3