From 0781cbe1d33e62a26a234962bc271209cc22c931 Mon Sep 17 00:00:00 2001 From: Jonathan Neuschäfer Date: Mon, 30 Oct 2017 17:20:18 +0100 Subject: sb and soc: Enforce correct offset of member "chromeos" in global_nvs_t MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The padding has recently been broken in commit 90ebf96df5 ("soc/intel/skylake: Add GNVS variables and include SGX ASL") and fixed again in commit af88398887 ("soc/intel/skylake: Fix broken GNVS offset for chromeos"). Avoid this bug in the future. Change-Id: I1bf3027bba239c8747ad26a3130a7e047d3b8c94 Signed-off-by: Jonathan Neuschäfer Reviewed-on: https://review.coreboot.org/22229 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin Reviewed-by: Paul Menzel --- src/soc/amd/stoneyridge/include/soc/nvs.h | 2 ++ src/soc/intel/apollolake/include/soc/nvs.h | 2 ++ src/soc/intel/baytrail/include/soc/nvs.h | 4 +++- src/soc/intel/braswell/include/soc/nvs.h | 8 +++++--- src/soc/intel/broadwell/include/soc/nvs.h | 6 ++++-- src/soc/intel/cannonlake/include/soc/nvs.h | 2 ++ src/soc/intel/skylake/include/soc/nvs.h | 6 ++++-- src/southbridge/intel/bd82x6x/nvs.h | 7 +++++-- src/southbridge/intel/fsp_bd82x6x/nvs.h | 5 ++++- src/southbridge/intel/fsp_i89xx/nvs.h | 5 ++++- src/southbridge/intel/ibexpeak/nvs.h | 5 ++++- src/southbridge/intel/lynxpoint/nvs.h | 5 ++++- 12 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/soc/amd/stoneyridge/include/soc/nvs.h b/src/soc/amd/stoneyridge/include/soc/nvs.h index 20396bf560..623c554057 100644 --- a/src/soc/amd/stoneyridge/include/soc/nvs.h +++ b/src/soc/amd/stoneyridge/include/soc/nvs.h @@ -24,6 +24,7 @@ #ifndef __SOC_STONEYRIDGE_NVS_H__ #define __SOC_STONEYRIDGE_NVS_H__ +#include #include #include #include @@ -48,5 +49,6 @@ typedef struct global_nvs_t { /* ChromeOS specific (0x100 - 0xfff) */ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #endif /* __SOC_STONEYRIDGE_NVS_H__ */ diff --git a/src/soc/intel/apollolake/include/soc/nvs.h b/src/soc/intel/apollolake/include/soc/nvs.h index 2c9a4b5a54..c7be979553 100644 --- a/src/soc/intel/apollolake/include/soc/nvs.h +++ b/src/soc/intel/apollolake/include/soc/nvs.h @@ -24,6 +24,7 @@ #ifndef _SOC_APOLLOLAKE_NVS_H_ #define _SOC_APOLLOLAKE_NVS_H_ +#include #include #include @@ -52,5 +53,6 @@ typedef struct global_nvs_t { /* ChromeOS specific (0x100 - 0xfff) */ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #endif /* _SOC_APOLLOLAKE_NVS_H_ */ diff --git a/src/soc/intel/baytrail/include/soc/nvs.h b/src/soc/intel/baytrail/include/soc/nvs.h index 8e6819d3b2..fdc4e10e6c 100644 --- a/src/soc/intel/baytrail/include/soc/nvs.h +++ b/src/soc/intel/baytrail/include/soc/nvs.h @@ -17,11 +17,12 @@ #ifndef _BAYTRAIL_NVS_H_ #define _BAYTRAIL_NVS_H_ +#include #include #include #include -typedef struct { +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -66,6 +67,7 @@ typedef struct { /* Baytrail LPSS (0x1000) */ device_nvs_t dev; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); void acpi_create_gnvs(global_nvs_t *gnvs); #ifdef __SMM__ diff --git a/src/soc/intel/braswell/include/soc/nvs.h b/src/soc/intel/braswell/include/soc/nvs.h index 80b0759d76..9b921c54a7 100644 --- a/src/soc/intel/braswell/include/soc/nvs.h +++ b/src/soc/intel/braswell/include/soc/nvs.h @@ -18,12 +18,13 @@ #ifndef _SOC_NVS_H_ #define _SOC_NVS_H_ -#include +#include #include -#include +#include #include +#include -typedef struct { +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -70,6 +71,7 @@ typedef struct { /* LPSS (0x1000) */ device_nvs_t dev; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); void acpi_create_gnvs(global_nvs_t *gnvs); #if ENV_SMM diff --git a/src/soc/intel/broadwell/include/soc/nvs.h b/src/soc/intel/broadwell/include/soc/nvs.h index a7d6d7c9fc..b40ffc4d20 100644 --- a/src/soc/intel/broadwell/include/soc/nvs.h +++ b/src/soc/intel/broadwell/include/soc/nvs.h @@ -17,11 +17,12 @@ #ifndef _BROADWELL_NVS_H_ #define _BROADWELL_NVS_H_ +#include #include -#include #include +#include -typedef struct { +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -58,6 +59,7 @@ typedef struct { /* Device specific (0x1000) */ device_nvs_t dev; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); void acpi_create_gnvs(global_nvs_t *gnvs); #ifdef __SMM__ diff --git a/src/soc/intel/cannonlake/include/soc/nvs.h b/src/soc/intel/cannonlake/include/soc/nvs.h index aa5093d4ef..6c64f3ac2c 100644 --- a/src/soc/intel/cannonlake/include/soc/nvs.h +++ b/src/soc/intel/cannonlake/include/soc/nvs.h @@ -18,6 +18,7 @@ #ifndef _SOC_NVS_H_ #define _SOC_NVS_H_ +#include #include #include @@ -45,6 +46,7 @@ typedef struct global_nvs_t { /* ChromeOS specific (0x100 - 0xfff) */ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #endif diff --git a/src/soc/intel/skylake/include/soc/nvs.h b/src/soc/intel/skylake/include/soc/nvs.h index 68ac947b32..da6b2af110 100644 --- a/src/soc/intel/skylake/include/soc/nvs.h +++ b/src/soc/intel/skylake/include/soc/nvs.h @@ -18,11 +18,12 @@ #ifndef _SOC_NVS_H_ #define _SOC_NVS_H_ -#include +#include #include +#include #include -typedef struct { +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -66,6 +67,7 @@ typedef struct { /* ChromeOS specific (0x100 - 0xfff) */ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #if ENV_SMM /* Used in SMM to find the ACPI GNVS address */ diff --git a/src/southbridge/intel/bd82x6x/nvs.h b/src/southbridge/intel/bd82x6x/nvs.h index 51fc7bb1f4..207f763cee 100644 --- a/src/southbridge/intel/bd82x6x/nvs.h +++ b/src/southbridge/intel/bd82x6x/nvs.h @@ -14,10 +14,12 @@ * GNU General Public License for more details. */ -#include +#include #include +#include #include "vendorcode/google/chromeos/gnvs.h" -typedef struct { + +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -152,6 +154,7 @@ typedef struct { /* ChromeOS specific (starts at 0x100)*/ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #ifdef __SMM__ /* Used in SMM to find the ACPI GNVS address */ diff --git a/src/southbridge/intel/fsp_bd82x6x/nvs.h b/src/southbridge/intel/fsp_bd82x6x/nvs.h index fc843194a7..a0e063c393 100644 --- a/src/southbridge/intel/fsp_bd82x6x/nvs.h +++ b/src/southbridge/intel/fsp_bd82x6x/nvs.h @@ -14,9 +14,11 @@ * GNU General Public License for more details. */ +#include #include #include "vendorcode/google/chromeos/gnvs.h" -typedef struct { + +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -148,6 +150,7 @@ typedef struct { /* ChromeOS specific (starts at 0x100)*/ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #ifdef __SMM__ /* Used in SMM to find the ACPI GNVS address */ diff --git a/src/southbridge/intel/fsp_i89xx/nvs.h b/src/southbridge/intel/fsp_i89xx/nvs.h index fc843194a7..a0e063c393 100644 --- a/src/southbridge/intel/fsp_i89xx/nvs.h +++ b/src/southbridge/intel/fsp_i89xx/nvs.h @@ -14,9 +14,11 @@ * GNU General Public License for more details. */ +#include #include #include "vendorcode/google/chromeos/gnvs.h" -typedef struct { + +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -148,6 +150,7 @@ typedef struct { /* ChromeOS specific (starts at 0x100)*/ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #ifdef __SMM__ /* Used in SMM to find the ACPI GNVS address */ diff --git a/src/southbridge/intel/ibexpeak/nvs.h b/src/southbridge/intel/ibexpeak/nvs.h index 6cd8ec3c4f..870391183f 100644 --- a/src/southbridge/intel/ibexpeak/nvs.h +++ b/src/southbridge/intel/ibexpeak/nvs.h @@ -14,9 +14,11 @@ * GNU General Public License for more details. */ +#include #include #include "vendorcode/google/chromeos/gnvs.h" -typedef struct { + +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -150,6 +152,7 @@ typedef struct { /* ChromeOS specific (starts at 0x100)*/ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #ifdef __SMM__ /* Used in SMM to find the ACPI GNVS address */ diff --git a/src/southbridge/intel/lynxpoint/nvs.h b/src/southbridge/intel/lynxpoint/nvs.h index 667a6dba1b..e7d4a8b2d8 100644 --- a/src/southbridge/intel/lynxpoint/nvs.h +++ b/src/southbridge/intel/lynxpoint/nvs.h @@ -14,9 +14,11 @@ * GNU General Public License for more details. */ +#include #include #include "vendorcode/google/chromeos/gnvs.h" -typedef struct { + +typedef struct global_nvs_t { /* Miscellaneous */ u16 osys; /* 0x00 - Operating System */ u8 smif; /* 0x02 - SMI function call ("TRAP") */ @@ -126,6 +128,7 @@ typedef struct { /* ChromeOS specific (starts at 0x100)*/ chromeos_acpi_t chromeos; } __packed global_nvs_t; +check_member(global_nvs_t, chromeos, 0x100); #ifdef __SMM__ /* Used in SMM to find the ACPI GNVS address */ -- cgit v1.2.3