<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>