<p>Joel Kitching has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27888">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">cbmem: rename vdat to chromeos_acpi<br><br>There is a confusingly named section in cbmem called vdat.<br>This section holds a data structure called chromeos_acpi_t,<br>which exposes some system information to the Chrome OS<br>userland utility crossystem.<br><br>Within the chromeos_acpi_t structure, there is a member<br>called vdat. This (currently) holds a VbSharedDataHeader.<br><br>Rename the outer vdat to chromeos_acpi to make its purpose<br>clear, and prevent the bizarreness of being able to access<br>vdat->vdat.<br><br>Additionally, disallow external references to the<br>chromeos_acpi data structure in gnvs.c.<br><br>BUG=b:112288216<br>TEST=emerge-eve coreboot, run on eve<br>CQ-DEPEND=CL:1164722<br><br>Signed-off-by: Joel Kitching <kitching@google.com><br><br>Change-Id: Ia74e58cde21678f24b0bb6c1ca15048677116b2e<br>---<br>M 3rdparty/blobs<br>M payloads/libpayload/include/coreboot_tables.h<br>M payloads/libpayload/include/sysinfo.h<br>M payloads/libpayload/libc/coreboot.c<br>M src/arch/x86/smbios.c<br>M src/commonlib/include/commonlib/coreboot_tables.h<br>M src/lib/coreboot_table.c<br>M src/vendorcode/google/chromeos/gnvs.c<br>M src/vendorcode/google/chromeos/gnvs.h<br>9 files changed, 43 insertions(+), 37 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/88/27888/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/3rdparty/blobs b/3rdparty/blobs</span><br><span>index 372012e..8e9f99b 160000</span><br><span>--- a/3rdparty/blobs</span><br><span>+++ b/3rdparty/blobs</span><br><span>@@ -1 +1 @@</span><br><span style="color: hsl(0, 100%, 40%);">-Subproject commit 372012e8e1d0d01f3e77ff73b118665b41ff68b6</span><br><span style="color: hsl(120, 100%, 40%);">+Subproject commit 8e9f99b3e60d0ffe8b67cc93ea4ab1b9ed191e45</span><br><span>diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h</span><br><span>index 6b6d1b4..4cf57c5 100644</span><br><span>--- a/payloads/libpayload/include/coreboot_tables.h</span><br><span>+++ b/payloads/libpayload/include/coreboot_tables.h</span><br><span>@@ -200,7 +200,7 @@</span><br><span> struct cb_gpio gpios[0];</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define CB_TAG_VDAT 0x0015</span><br><span style="color: hsl(120, 100%, 40%);">+#define CB_TAG_CHROMEOS_ACPI 0x0015</span><br><span> #define CB_TAG_VBNV 0x0019</span><br><span> #define CB_TAG_VBOOT_HANDOFF 0x0020</span><br><span> #define CB_TAG_DMA 0x0022</span><br><span>diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h</span><br><span>index f221a15..66933e3 100644</span><br><span>--- a/payloads/libpayload/include/sysinfo.h</span><br><span>+++ b/payloads/libpayload/include/sysinfo.h</span><br><span>@@ -97,8 +97,8 @@</span><br><span> </span><br><span> void *vboot_handoff;</span><br><span> u32 vboot_handoff_size;</span><br><span style="color: hsl(0, 100%, 40%);">- void *vdat_addr;</span><br><span style="color: hsl(0, 100%, 40%);">- u32 vdat_size;</span><br><span style="color: hsl(120, 100%, 40%);">+ void *chromeos_acpi_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 chromeos_acpi_size;</span><br><span> </span><br><span> #if IS_ENABLED(CONFIG_LP_ARCH_X86)</span><br><span> int x86_rom_var_mtrr_index;</span><br><span>diff --git a/payloads/libpayload/libc/coreboot.c b/payloads/libpayload/libc/coreboot.c</span><br><span>index d831b96..b879987 100644</span><br><span>--- a/payloads/libpayload/libc/coreboot.c</span><br><span>+++ b/payloads/libpayload/libc/coreboot.c</span><br><span>@@ -106,12 +106,12 @@</span><br><span> info->gpios[i] = gpios->gpios[i];</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void cb_parse_vdat(unsigned char *ptr, struct sysinfo_t *info)</span><br><span style="color: hsl(120, 100%, 40%);">+static void cb_parse_chromeos_acpi(unsigned char *ptr, struct sysinfo_t *info)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct lb_range *vdat = (struct lb_range *) ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct lb_range *chromeos_acpi = (struct lb_range *) ptr;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- info->vdat_addr = phys_to_virt(vdat->range_start);</span><br><span style="color: hsl(0, 100%, 40%);">- info->vdat_size = vdat->range_size;</span><br><span style="color: hsl(120, 100%, 40%);">+ info->chromeos_acpi_addr = phys_to_virt(chromeos_acpi->range_start);</span><br><span style="color: hsl(120, 100%, 40%);">+ info->chromeos_acpi_size = chromeos_acpi->range_size;</span><br><span> }</span><br><span> </span><br><span> static void cb_parse_mac_addresses(unsigned char *ptr,</span><br><span>@@ -357,8 +357,8 @@</span><br><span> case CB_TAG_GPIO:</span><br><span> cb_parse_gpios(ptr, info);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case CB_TAG_VDAT:</span><br><span style="color: hsl(0, 100%, 40%);">- cb_parse_vdat(ptr, info);</span><br><span style="color: hsl(120, 100%, 40%);">+ case CB_TAG_CHROMEOS_ACPI:</span><br><span style="color: hsl(120, 100%, 40%);">+ cb_parse_chromeos_acpi(ptr, info);</span><br><span> break;</span><br><span> case CB_TAG_VBNV:</span><br><span> cb_parse_vbnv(ptr, info);</span><br><span>diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c</span><br><span>index 582ae8d..8dad4af 100644</span><br><span>--- a/src/arch/x86/smbios.c</span><br><span>+++ b/src/arch/x86/smbios.c</span><br><span>@@ -367,7 +367,11 @@</span><br><span> </span><br><span> #if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)</span><br><span> /* SMBIOS offsets start at 1 rather than 0 */</span><br><span style="color: hsl(0, 100%, 40%);">- vboot_data->vbt10 = (u32)t->eos + (version_offset - 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ chromeos_acpi_t *chromeos_acpi;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t *chromeos_acpi_size;</span><br><span style="color: hsl(120, 100%, 40%);">+ acpi_get_chromeos_acpi_info((uint64_t *)&chromeos_acpi,</span><br><span style="color: hsl(120, 100%, 40%);">+ (uint32_t *)&chromeos_acpi_size);</span><br><span style="color: hsl(120, 100%, 40%);">+ chromeos_acpi->vbt10 = (u32)t->eos + (version_offset - 1);</span><br><span> #endif</span><br><span> #endif /* CONFIG_CHROMEOS */</span><br><span> </span><br><span>diff --git a/src/commonlib/include/commonlib/coreboot_tables.h b/src/commonlib/include/commonlib/coreboot_tables.h</span><br><span>index 806dfc7..34726ab 100644</span><br><span>--- a/src/commonlib/include/commonlib/coreboot_tables.h</span><br><span>+++ b/src/commonlib/include/commonlib/coreboot_tables.h</span><br><span>@@ -290,7 +290,7 @@</span><br><span> struct lb_gpio gpios[0];</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define LB_TAG_VDAT 0x0015</span><br><span style="color: hsl(120, 100%, 40%);">+#define LB_TAG_CHROMEOS_ACPI 0x0015</span><br><span> #define LB_TAG_VBNV 0x0019</span><br><span> #define LB_TAB_VBOOT_HANDOFF 0x0020</span><br><span> #define LB_TAB_DMA 0x0022</span><br><span>diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c</span><br><span>index 2d74c8e..6b0e1a0 100644</span><br><span>--- a/src/lib/coreboot_table.c</span><br><span>+++ b/src/lib/coreboot_table.c</span><br><span>@@ -195,15 +195,16 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void lb_vdat(struct lb_header *header)</span><br><span style="color: hsl(120, 100%, 40%);">+static void lb_chromeos_acpi(struct lb_header *header)</span><br><span> {</span><br><span> #if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)</span><br><span style="color: hsl(0, 100%, 40%);">- struct lb_range *vdat;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct lb_range *chromeos_acpi;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- vdat = (struct lb_range *)lb_new_record(header);</span><br><span style="color: hsl(0, 100%, 40%);">- vdat->tag = LB_TAG_VDAT;</span><br><span style="color: hsl(0, 100%, 40%);">- vdat->size = sizeof(*vdat);</span><br><span style="color: hsl(0, 100%, 40%);">- acpi_get_vdat_info(&vdat->range_start, &vdat->range_size);</span><br><span style="color: hsl(120, 100%, 40%);">+ chromeos_acpi = (struct lb_range *)lb_new_record(header);</span><br><span style="color: hsl(120, 100%, 40%);">+ chromeos_acpi->tag = LB_TAG_CHROMEOS_ACPI;</span><br><span style="color: hsl(120, 100%, 40%);">+ chromeos_acpi->size = sizeof(*chromeos_acpi);</span><br><span style="color: hsl(120, 100%, 40%);">+ acpi_get_chromeos_acpi_info(&chromeos_acpi->range_start,</span><br><span style="color: hsl(120, 100%, 40%);">+ &chromeos_acpi->range_size);</span><br><span> #endif</span><br><span> }</span><br><span> </span><br><span>@@ -546,8 +547,8 @@</span><br><span> /* Record our GPIO settings (ChromeOS specific) */</span><br><span> lb_gpios(head);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* pass along the VDAT buffer address */</span><br><span style="color: hsl(0, 100%, 40%);">- lb_vdat(head);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* pass along the chromeos_acpi_t buffer address */</span><br><span style="color: hsl(120, 100%, 40%);">+ lb_chromeos_acpi(head);</span><br><span> </span><br><span> /* pass along VBNV offsets in CMOS */</span><br><span> lb_vbnv(head);</span><br><span>diff --git a/src/vendorcode/google/chromeos/gnvs.c b/src/vendorcode/google/chromeos/gnvs.c</span><br><span>index a278b41..b3c71e4 100644</span><br><span>--- a/src/vendorcode/google/chromeos/gnvs.c</span><br><span>+++ b/src/vendorcode/google/chromeos/gnvs.c</span><br><span>@@ -27,40 +27,41 @@</span><br><span> #include "chromeos.h"</span><br><span> #include "gnvs.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-chromeos_acpi_t *vboot_data = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+chromeos_acpi_t *chromeos_acpi = NULL;</span><br><span> static u32 me_hash_saved[8];</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void chromeos_init_vboot(chromeos_acpi_t *chromeos)</span><br><span style="color: hsl(120, 100%, 40%);">+void chromeos_init_vboot(chromeos_acpi_t *init)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- vboot_data = chromeos;</span><br><span style="color: hsl(120, 100%, 40%);">+ chromeos_acpi = init;</span><br><span> </span><br><span> /* Copy saved ME hash into NVS */</span><br><span style="color: hsl(0, 100%, 40%);">- memcpy(vboot_data->mehh, me_hash_saved, sizeof(vboot_data->mehh));</span><br><span style="color: hsl(120, 100%, 40%);">+ memcpy(chromeos_acpi->mehh, me_hash_saved, sizeof(chromeos_acpi->mehh));</span><br><span> </span><br><span> struct vboot_handoff *vboot_handoff;</span><br><span> </span><br><span> if (vboot_get_handoff_info((void **)&vboot_handoff, NULL) == 0)</span><br><span style="color: hsl(0, 100%, 40%);">- memcpy(&chromeos->vdat[0], &vboot_handoff->shared_data[0],</span><br><span style="color: hsl(0, 100%, 40%);">- ARRAY_SIZE(chromeos->vdat));</span><br><span style="color: hsl(120, 100%, 40%);">+ memcpy(&chromeos_acpi->vdat[0], &vboot_handoff->shared_data[0],</span><br><span style="color: hsl(120, 100%, 40%);">+ ARRAY_SIZE(chromeos_acpi->vdat));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- chromeos_ram_oops_init(chromeos);</span><br><span style="color: hsl(120, 100%, 40%);">+ chromeos_ram_oops_init(chromeos_acpi);</span><br><span> }</span><br><span> </span><br><span> void chromeos_set_me_hash(u32 *hash, int len)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- if ((len*sizeof(u32)) > sizeof(vboot_data->mehh))</span><br><span style="color: hsl(120, 100%, 40%);">+ if ((len*sizeof(u32)) > sizeof(chromeos_acpi->mehh))</span><br><span> return;</span><br><span> </span><br><span> /* Copy to NVS or save until it is ready */</span><br><span style="color: hsl(0, 100%, 40%);">- if (vboot_data)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (chromeos_acpi)</span><br><span> /* This does never happen! */</span><br><span style="color: hsl(0, 100%, 40%);">- memcpy(vboot_data->mehh, hash, len*sizeof(u32));</span><br><span style="color: hsl(120, 100%, 40%);">+ memcpy(chromeos_acpi->mehh, hash, len*sizeof(u32));</span><br><span> else</span><br><span> memcpy(me_hash_saved, hash, len*sizeof(u32));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void acpi_get_vdat_info(uint64_t *vdat_addr, uint32_t *vdat_size)</span><br><span style="color: hsl(120, 100%, 40%);">+void acpi_get_chromeos_acpi_info(uint64_t *chromeos_acpi_addr,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t *chromeos_acpi_size)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- *vdat_addr = (intptr_t)vboot_data;</span><br><span style="color: hsl(0, 100%, 40%);">- *vdat_size = sizeof(*vboot_data);</span><br><span style="color: hsl(120, 100%, 40%);">+ *chromeos_acpi_addr = (intptr_t)chromeos_acpi;</span><br><span style="color: hsl(120, 100%, 40%);">+ *chromeos_acpi_size = sizeof(*chromeos_acpi);</span><br><span> }</span><br><span>diff --git a/src/vendorcode/google/chromeos/gnvs.h b/src/vendorcode/google/chromeos/gnvs.h</span><br><span>index 82cd409..346ac43 100644</span><br><span>--- a/src/vendorcode/google/chromeos/gnvs.h</span><br><span>+++ b/src/vendorcode/google/chromeos/gnvs.h</span><br><span>@@ -53,7 +53,7 @@</span><br><span> u32 vbt7; // 18e active main firmware type</span><br><span> u32 vbt8; // 192 recovery reason</span><br><span> u32 vbt9; // 196 fmap base address</span><br><span style="color: hsl(0, 100%, 40%);">- u8 vdat[3072]; // 19a</span><br><span style="color: hsl(120, 100%, 40%);">+ u8 vdat[3072]; // 19a VDAT space filled by verified boot</span><br><span> u32 vbt10; // d9a smbios bios version</span><br><span> u32 mehh[8]; // d9e management engine hash</span><br><span> u32 ramoops_base; // dbe ramoops base address</span><br><span>@@ -61,9 +61,9 @@</span><br><span> u8 pad[314]; // dc6-eff</span><br><span> } __packed chromeos_acpi_t;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-extern chromeos_acpi_t *vboot_data;</span><br><span style="color: hsl(0, 100%, 40%);">-void chromeos_init_vboot(chromeos_acpi_t *chromeos);</span><br><span style="color: hsl(120, 100%, 40%);">+void chromeos_init_vboot(chromeos_acpi_t *init);</span><br><span> void chromeos_set_me_hash(u32*, int);</span><br><span style="color: hsl(0, 100%, 40%);">-void acpi_get_vdat_info(uint64_t *vdat_addr, uint32_t *vdat_size);</span><br><span style="color: hsl(120, 100%, 40%);">+void acpi_get_chromeos_acpi_info(uint64_t *chromeos_acpi_addr,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t *chromeos_acpi_size);</span><br><span> </span><br><span> #endif</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27888">change 27888</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/27888"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ia74e58cde21678f24b0bb6c1ca15048677116b2e </div>
<div style="display:none"> Gerrit-Change-Number: 27888 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Joel Kitching <kitching@google.com> </div>