<p>Jonathan Neuschäfer has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/22229">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sb and soc: Enforce correct offset of member "chromeos" in global_nvs_t<br><br>The padding has recently been broken in commit 90ebf96df5<br>("soc/intel/skylake: Add GNVS variables and include SGX ASL") and fixed<br>again in commit af88398887 ("soc/intel/skylake: Fix broken GNVS offset<br>for chromeos").  Avoid this bug in the future.<br><br>Change-Id: I1bf3027bba239c8747ad26a3130a7e047d3b8c94<br>Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net><br>---<br>M src/soc/amd/stoneyridge/include/soc/nvs.h<br>M src/soc/intel/apollolake/include/soc/nvs.h<br>M src/soc/intel/baytrail/include/soc/nvs.h<br>M src/soc/intel/braswell/include/soc/nvs.h<br>M src/soc/intel/broadwell/include/soc/nvs.h<br>M src/soc/intel/cannonlake/include/soc/nvs.h<br>M src/soc/intel/skylake/include/soc/nvs.h<br>M src/southbridge/intel/bd82x6x/nvs.h<br>M src/southbridge/intel/fsp_bd82x6x/nvs.h<br>M src/southbridge/intel/fsp_i89xx/nvs.h<br>M src/southbridge/intel/ibexpeak/nvs.h<br>M src/southbridge/intel/lynxpoint/nvs.h<br>12 files changed, 43 insertions(+), 14 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/29/22229/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/src/soc/amd/stoneyridge/include/soc/nvs.h b/src/soc/amd/stoneyridge/include/soc/nvs.h<br>index 20396bf..623c554 100644<br>--- a/src/soc/amd/stoneyridge/include/soc/nvs.h<br>+++ b/src/soc/amd/stoneyridge/include/soc/nvs.h<br>@@ -24,6 +24,7 @@<br> #ifndef __SOC_STONEYRIDGE_NVS_H__<br> #define __SOC_STONEYRIDGE_NVS_H__<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br> #include <stdint.h><br> #include <vendorcode/google/chromeos/gnvs.h><br>@@ -48,5 +49,6 @@<br>   /* ChromeOS specific (0x100 - 0xfff) */<br>       chromeos_acpi_t chromeos;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> #endif /* __SOC_STONEYRIDGE_NVS_H__ */<br>diff --git a/src/soc/intel/apollolake/include/soc/nvs.h b/src/soc/intel/apollolake/include/soc/nvs.h<br>index dd0746b..5116ef5 100644<br>--- a/src/soc/intel/apollolake/include/soc/nvs.h<br>+++ b/src/soc/intel/apollolake/include/soc/nvs.h<br>@@ -24,6 +24,7 @@<br> #ifndef _SOC_APOLLOLAKE_NVS_H_<br> #define _SOC_APOLLOLAKE_NVS_H_<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br> #include <vendorcode/google/chromeos/gnvs.h><br> <br>@@ -52,5 +53,6 @@<br>      /* ChromeOS specific (0x100 - 0xfff) */<br>       chromeos_acpi_t chromeos;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> #endif /* _SOC_APOLLOLAKE_NVS_H_ */<br>diff --git a/src/soc/intel/baytrail/include/soc/nvs.h b/src/soc/intel/baytrail/include/soc/nvs.h<br>index 8e6819d..fdc4e10 100644<br>--- a/src/soc/intel/baytrail/include/soc/nvs.h<br>+++ b/src/soc/intel/baytrail/include/soc/nvs.h<br>@@ -17,11 +17,12 @@<br> #ifndef _BAYTRAIL_NVS_H_<br> #define _BAYTRAIL_NVS_H_<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br> #include <vendorcode/google/chromeos/gnvs.h><br> #include <soc/device_nvs.h><br> <br>-typedef struct {<br>+typedef struct global_nvs_t {<br>       /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -66,6 +67,7 @@<br>    /* Baytrail LPSS (0x1000) */<br>  device_nvs_t dev;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> void acpi_create_gnvs(global_nvs_t *gnvs);<br> #ifdef __SMM__<br>diff --git a/src/soc/intel/braswell/include/soc/nvs.h b/src/soc/intel/braswell/include/soc/nvs.h<br>index 80b0759..48362e4 100644<br>--- a/src/soc/intel/braswell/include/soc/nvs.h<br>+++ b/src/soc/intel/braswell/include/soc/nvs.h<br>@@ -18,12 +18,13 @@<br> #ifndef _SOC_NVS_H_<br> #define _SOC_NVS_H_<br> <br>-#include <rules.h><br>+#include <commonlib/helper.h><br> #include <compiler.h><br>-#include <vendorcode/google/chromeos/gnvs.h><br>+#include <rules.h><br> #include <soc/device_nvs.h><br>+#include <vendorcode/google/chromeos/gnvs.h><br> <br>-typedef struct {<br>+typedef struct global_nvs_t {<br>       /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -70,6 +71,7 @@<br>    /* LPSS (0x1000) */<br>   device_nvs_t dev;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> void acpi_create_gnvs(global_nvs_t *gnvs);<br> #if ENV_SMM<br>diff --git a/src/soc/intel/broadwell/include/soc/nvs.h b/src/soc/intel/broadwell/include/soc/nvs.h<br>index a7d6d7c..b40ffc4 100644<br>--- a/src/soc/intel/broadwell/include/soc/nvs.h<br>+++ b/src/soc/intel/broadwell/include/soc/nvs.h<br>@@ -17,11 +17,12 @@<br> #ifndef _BROADWELL_NVS_H_<br> #define _BROADWELL_NVS_H_<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br>-#include <vendorcode/google/chromeos/gnvs.h><br> #include <soc/device_nvs.h><br>+#include <vendorcode/google/chromeos/gnvs.h><br> <br>-typedef struct {<br>+typedef struct global_nvs_t {<br>       /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -58,6 +59,7 @@<br>    /* Device specific (0x1000) */<br>        device_nvs_t dev;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> void acpi_create_gnvs(global_nvs_t *gnvs);<br> #ifdef __SMM__<br>diff --git a/src/soc/intel/cannonlake/include/soc/nvs.h b/src/soc/intel/cannonlake/include/soc/nvs.h<br>index aa5093d..6c64f3a 100644<br>--- a/src/soc/intel/cannonlake/include/soc/nvs.h<br>+++ b/src/soc/intel/cannonlake/include/soc/nvs.h<br>@@ -18,6 +18,7 @@<br> #ifndef _SOC_NVS_H_<br> #define _SOC_NVS_H_<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br> #include <vendorcode/google/chromeos/gnvs.h><br> <br>@@ -45,6 +46,7 @@<br>       /* ChromeOS specific (0x100 - 0xfff) */<br>       chromeos_acpi_t chromeos;<br> }  __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> <br> #endif<br>diff --git a/src/soc/intel/skylake/include/soc/nvs.h b/src/soc/intel/skylake/include/soc/nvs.h<br>index 498bb2b..c3d416d 100644<br>--- a/src/soc/intel/skylake/include/soc/nvs.h<br>+++ b/src/soc/intel/skylake/include/soc/nvs.h<br>@@ -18,11 +18,12 @@<br> #ifndef _SOC_NVS_H_<br> #define _SOC_NVS_H_<br> <br>-#include <rules.h><br>+#include <commonlib/helpers.h><br> #include <compiler.h><br>+#include <rules.h><br> #include <vendorcode/google/chromeos/gnvs.h><br> <br>-typedef struct {<br>+typedef struct global_nvs_t {<br>    /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -66,6 +67,7 @@<br>    /* ChromeOS specific (0x100 - 0xfff) */<br>       chromeos_acpi_t chromeos;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> #if ENV_SMM<br> /* Used in SMM to find the ACPI GNVS address */<br>diff --git a/src/southbridge/intel/bd82x6x/nvs.h b/src/southbridge/intel/bd82x6x/nvs.h<br>index 51fc7bb..207f763 100644<br>--- a/src/southbridge/intel/bd82x6x/nvs.h<br>+++ b/src/southbridge/intel/bd82x6x/nvs.h<br>@@ -14,10 +14,12 @@<br>  * GNU General Public License for more details.<br>  */<br> <br>-#include <stdint.h><br>+#include <commonlib/helpers.h><br> #include <compiler.h><br>+#include <stdint.h><br> #include "vendorcode/google/chromeos/gnvs.h"<br>-typedef struct {<br>+<br>+typedef struct global_nvs_t {<br>       /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -152,6 +154,7 @@<br>  /* ChromeOS specific (starts at 0x100)*/<br>      chromeos_acpi_t chromeos;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> #ifdef __SMM__<br> /* Used in SMM to find the ACPI GNVS address */<br>diff --git a/src/southbridge/intel/fsp_bd82x6x/nvs.h b/src/southbridge/intel/fsp_bd82x6x/nvs.h<br>index fc84319..a0e063c 100644<br>--- a/src/southbridge/intel/fsp_bd82x6x/nvs.h<br>+++ b/src/southbridge/intel/fsp_bd82x6x/nvs.h<br>@@ -14,9 +14,11 @@<br>  * GNU General Public License for more details.<br>  */<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br> #include "vendorcode/google/chromeos/gnvs.h"<br>-typedef struct {<br>+<br>+typedef struct global_nvs_t {<br>     /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -148,6 +150,7 @@<br>  /* ChromeOS specific (starts at 0x100)*/<br>      chromeos_acpi_t chromeos;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> #ifdef __SMM__<br> /* Used in SMM to find the ACPI GNVS address */<br>diff --git a/src/southbridge/intel/fsp_i89xx/nvs.h b/src/southbridge/intel/fsp_i89xx/nvs.h<br>index fc84319..a0e063c 100644<br>--- a/src/southbridge/intel/fsp_i89xx/nvs.h<br>+++ b/src/southbridge/intel/fsp_i89xx/nvs.h<br>@@ -14,9 +14,11 @@<br>  * GNU General Public License for more details.<br>  */<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br> #include "vendorcode/google/chromeos/gnvs.h"<br>-typedef struct {<br>+<br>+typedef struct global_nvs_t {<br>     /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -148,6 +150,7 @@<br>  /* ChromeOS specific (starts at 0x100)*/<br>      chromeos_acpi_t chromeos;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> #ifdef __SMM__<br> /* Used in SMM to find the ACPI GNVS address */<br>diff --git a/src/southbridge/intel/ibexpeak/nvs.h b/src/southbridge/intel/ibexpeak/nvs.h<br>index 6cd8ec3..8703911 100644<br>--- a/src/southbridge/intel/ibexpeak/nvs.h<br>+++ b/src/southbridge/intel/ibexpeak/nvs.h<br>@@ -14,9 +14,11 @@<br>  * GNU General Public License for more details.<br>  */<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br> #include "vendorcode/google/chromeos/gnvs.h"<br>-typedef struct {<br>+<br>+typedef struct global_nvs_t {<br>         /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -150,6 +152,7 @@<br>  /* ChromeOS specific (starts at 0x100)*/<br>      chromeos_acpi_t chromeos;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> #ifdef __SMM__<br> /* Used in SMM to find the ACPI GNVS address */<br>diff --git a/src/southbridge/intel/lynxpoint/nvs.h b/src/southbridge/intel/lynxpoint/nvs.h<br>index 667a6db..e7d4a8b 100644<br>--- a/src/southbridge/intel/lynxpoint/nvs.h<br>+++ b/src/southbridge/intel/lynxpoint/nvs.h<br>@@ -14,9 +14,11 @@<br>  * GNU General Public License for more details.<br>  */<br> <br>+#include <commonlib/helpers.h><br> #include <compiler.h><br> #include "vendorcode/google/chromeos/gnvs.h"<br>-typedef struct {<br>+<br>+typedef struct global_nvs_t {<br>     /* Miscellaneous */<br>   u16     osys; /* 0x00 - Operating System */<br>   u8      smif; /* 0x02 - SMI function call ("TRAP") */<br>@@ -126,6 +128,7 @@<br>  /* ChromeOS specific (starts at 0x100)*/<br>      chromeos_acpi_t chromeos;<br> } __packed global_nvs_t;<br>+check_member(global_nvs_t, chromeos, 0x100);<br> <br> #ifdef __SMM__<br> /* Used in SMM to find the ACPI GNVS address */<br></pre><p>To view, visit <a href="https://review.coreboot.org/22229">change 22229</a>. To unsubscribe, 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/22229"/><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: I1bf3027bba239c8747ad26a3130a7e047d3b8c94 </div>
<div style="display:none"> Gerrit-Change-Number: 22229 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Jonathan Neuschäfer <j.neuschaefer@gmx.net> </div>