[edk2-devel] [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.

2022-07-20 Thread Chiu, Chasel
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3993

Adding the missing FSPI_ARCH_UPD, FSP_GLOBAL_DATA_VERSION bumpping up,
and some comments for clarification.
Also fixed a bug in SplitFspBin.py for FSP-I support.

Cc: Nate DeSimone 
Cc: Star Zeng 
Signed-off-by: Chasel Chiu 
---
 IntelFsp2Pkg/Include/FspEas/FspApi.h  | 71 
---
 IntelFsp2Pkg/Include/FspGlobalData.h  |  2 +-
 IntelFsp2Pkg/Include/Guid/FspHeaderFile.h | 21 +++--
 IntelFsp2Pkg/Tools/SplitFspBin.py |  2 +-
 4 files changed, 85 insertions(+), 11 deletions(-)

diff --git a/IntelFsp2Pkg/Include/FspEas/FspApi.h 
b/IntelFsp2Pkg/Include/FspEas/FspApi.h
index bf46f13f73..3f368574e8 100644
--- a/IntelFsp2Pkg/Include/FspEas/FspApi.h
+++ b/IntelFsp2Pkg/Include/FspEas/FspApi.h
@@ -1,6 +1,6 @@
 /** @file
   Intel FSP API definition from Intel Firmware Support Package External
-  Architecture Specification v2.0 - v2.2
+  Architecture Specification v2.0 and above.
 
   Copyright (c) 2014 - 2022, Intel Corporation. All rights reserved.
   SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -100,13 +100,14 @@ typedef struct {
   /// "XX_T" for FSP-T
   /// "XX_M" for FSP-M
   /// "XX_S" for FSP-S
+  /// "XX_I" for FSP-I
   /// Where XX is an unique signature
   ///
   UINT64Signature;
   ///
   /// Revision of the Data structure.
-  ///   For FSP spec 2.0/2.1 value is 1.
-  ///   For FSP spec 2.2 value is 2.
+  ///   For FSP spec 2.0/2.1, this value is 1 and only FSPM_UPD having 
ARCH_UPD.
+  ///   For FSP spec 2.2 and above, this value is 2 and ARCH_UPD present in 
all UPD structures.
   ///
   UINT8 Revision;
   UINT8 Reserved[23];
@@ -134,7 +135,7 @@ typedef struct {
 } FSPT_ARCH_UPD;
 
 ///
-/// FSPT_ARCH2_UPD Configuration.
+/// FSPT_ARCH2_UPD Configuration for FSP 2.4 and above.
 ///
 typedef struct {
   ///
@@ -196,7 +197,7 @@ typedef struct {
 } FSPM_ARCH_UPD;
 
 ///
-/// FSPM_ARCH2_UPD Configuration.
+/// FSPM_ARCH2_UPD Configuration for FSP 2.4 and above.
 ///
 typedef struct {
   ///
@@ -209,6 +210,13 @@ typedef struct {
   ///
   UINT32  Length;
   ///
+  /// Pointer to the non-volatile storage (NVS) data buffer.
+  /// If it is NULL it indicates the NVS data is not available.
+  /// This value is deprecated starting with v2.4 of the FSP specification,
+  /// and will be removed in an upcoming version of the FSP specification.
+  ///
+  EFI_PHYSICAL_ADDRESSNvsBufferPtr;
+  ///
   /// Pointer to the temporary stack base address to be
   /// consumed inside FspMemoryInit() API.
   ///
@@ -232,7 +240,7 @@ typedef struct {
   /// This value is only valid if Revision is >= 2.
   ///
   EFI_PHYSICAL_ADDRESSFspEventHandler;
-  UINT8   Reserved1[24];
+  UINT8   Reserved1[16];
 } FSPM_ARCH2_UPD;
 
 ///
@@ -265,7 +273,7 @@ typedef struct {
 } FSPS_ARCH_UPD;
 
 ///
-/// FSPS_ARCH2_UPD Configuration.
+/// FSPS_ARCH2_UPD Configuration for FSP 2.4 and above.
 ///
 typedef struct {
   ///
@@ -285,6 +293,40 @@ typedef struct {
   UINT8   Reserved1[16];
 } FSPS_ARCH2_UPD;
 
+///
+/// FSPI_ARCH_UPD Configuration.
+///
+typedef struct {
+  ///
+  /// Revision of the structure is 1 for this version of the specification.
+  ///
+  UINT8   Revision;
+  UINT8   Reserved[3];
+  ///
+  /// Length of the structure in bytes. The current value for this field is 32.
+  ///
+  UINT32  Length;
+  ///
+  /// The physical memory-mapped base address of the bootloader SMM firmware 
volume (FV).
+  ///
+  EFI_PHYSICAL_ADDRESSBootloaderSmmFvBaseAddress;
+  ///
+  /// The length in bytes of the bootloader SMM firmware volume (FV).
+  ///
+  UINT64  BootloaderSmmFvLength;
+  ///
+  /// The physical memory-mapped base address of the bootloader SMM FV context 
data.
+  /// This data is provided to bootloader SMM drivers through a HOB by the FSP 
MM Foundation.
+  ///
+  EFI_PHYSICAL_ADDRESSBootloaderSmmFvContextData;
+  ///
+  /// The length in bytes of the bootloader SMM FV context data.
+  /// This data is provided to bootloader SMM drivers through a HOB by the FSP 
MM Foundation.
+  ///
+  UINT16  BootloaderSmmFvContextDataLength;
+  UINT8   Reserved1[24];
+} FSPI_ARCH_UPD;
+
 ///
 /// FSPT_UPD_COMMON Configuration.
 ///
@@ -393,6 +435,21 @@ typedef struct {
   FSPS_ARCH2_UPDFspsArchUpd;
 } FSPS_UPD_COMMON_FSP24;
 
+///
+/// FSPI_UPD_COMMON Configuration.
+///
+typedef struct {
+  ///
+  /// FSP_UPD_HEADER Configuration.
+  ///
+  FSP_UPD_HEADERFspUpdHeader;
+
+  ///
+  /// FSPI_ARCH_UPD Configuration.
+  ///
+  FSPI_ARCH_UPD FspiArchUpd;
+} FSPI_UPD_COMMON;
+
 ///
 /// Enumeration of FSP_INIT_PHASE for NOTIFY_PHASE.
 ///
diff --git a/IntelFsp2Pkg/Include/FspGlobalData.h 
b/IntelFsp2Pkg/Include/FspGlobalData.h
index 697b20ed4c..cf94f7b6a5 100644
--- a/IntelFsp2Pkg/Incl

Re: [edk2-devel] [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.

2022-07-20 Thread Zeng, Star
Is the reserved bytes number correct for FSPI_ARCH_UPD alignment?
 UINT16  BootloaderSmmFvContextDataLength;
 UINT8Reserved1[24];

Thanks,
Star
-Original Message-
From: Chiu, Chasel  
Sent: Thursday, July 21, 2022 10:29 AM
To: devel@edk2.groups.io
Cc: Chiu, Chasel ; Desimone, Nathaniel L 
; Zeng, Star 
Subject: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3993

Adding the missing FSPI_ARCH_UPD, FSP_GLOBAL_DATA_VERSION bumpping up,
and some comments for clarification.
Also fixed a bug in SplitFspBin.py for FSP-I support.

Cc: Nate DeSimone 
Cc: Star Zeng 
Signed-off-by: Chasel Chiu 
---
 IntelFsp2Pkg/Include/FspEas/FspApi.h  | 71 
---
 IntelFsp2Pkg/Include/FspGlobalData.h  |  2 +-
 IntelFsp2Pkg/Include/Guid/FspHeaderFile.h | 21 +++--
 IntelFsp2Pkg/Tools/SplitFspBin.py |  2 +-
 4 files changed, 85 insertions(+), 11 deletions(-)

diff --git a/IntelFsp2Pkg/Include/FspEas/FspApi.h 
b/IntelFsp2Pkg/Include/FspEas/FspApi.h
index bf46f13f73..3f368574e8 100644
--- a/IntelFsp2Pkg/Include/FspEas/FspApi.h
+++ b/IntelFsp2Pkg/Include/FspEas/FspApi.h
@@ -1,6 +1,6 @@
 /** @file

   Intel FSP API definition from Intel Firmware Support Package External

-  Architecture Specification v2.0 - v2.2

+  Architecture Specification v2.0 and above.

 

   Copyright (c) 2014 - 2022, Intel Corporation. All rights reserved.

   SPDX-License-Identifier: BSD-2-Clause-Patent

@@ -100,13 +100,14 @@ typedef struct {
   /// "XX_T" for FSP-T

   /// "XX_M" for FSP-M

   /// "XX_S" for FSP-S

+  /// "XX_I" for FSP-I

   /// Where XX is an unique signature

   ///

   UINT64Signature;

   ///

   /// Revision of the Data structure.

-  ///   For FSP spec 2.0/2.1 value is 1.

-  ///   For FSP spec 2.2 value is 2.

+  ///   For FSP spec 2.0/2.1, this value is 1 and only FSPM_UPD having 
ARCH_UPD.

+  ///   For FSP spec 2.2 and above, this value is 2 and ARCH_UPD present in 
all UPD structures.

   ///

   UINT8 Revision;

   UINT8 Reserved[23];

@@ -134,7 +135,7 @@ typedef struct {
 } FSPT_ARCH_UPD;

 

 ///

-/// FSPT_ARCH2_UPD Configuration.

+/// FSPT_ARCH2_UPD Configuration for FSP 2.4 and above.

 ///

 typedef struct {

   ///

@@ -196,7 +197,7 @@ typedef struct {
 } FSPM_ARCH_UPD;

 

 ///

-/// FSPM_ARCH2_UPD Configuration.

+/// FSPM_ARCH2_UPD Configuration for FSP 2.4 and above.

 ///

 typedef struct {

   ///

@@ -209,6 +210,13 @@ typedef struct {
   ///

   UINT32  Length;

   ///

+  /// Pointer to the non-volatile storage (NVS) data buffer.

+  /// If it is NULL it indicates the NVS data is not available.

+  /// This value is deprecated starting with v2.4 of the FSP specification,

+  /// and will be removed in an upcoming version of the FSP specification.

+  ///

+  EFI_PHYSICAL_ADDRESSNvsBufferPtr;

+  ///

   /// Pointer to the temporary stack base address to be

   /// consumed inside FspMemoryInit() API.

   ///

@@ -232,7 +240,7 @@ typedef struct {
   /// This value is only valid if Revision is >= 2.

   ///

   EFI_PHYSICAL_ADDRESSFspEventHandler;

-  UINT8   Reserved1[24];

+  UINT8   Reserved1[16];

 } FSPM_ARCH2_UPD;

 

 ///

@@ -265,7 +273,7 @@ typedef struct {
 } FSPS_ARCH_UPD;

 

 ///

-/// FSPS_ARCH2_UPD Configuration.

+/// FSPS_ARCH2_UPD Configuration for FSP 2.4 and above.

 ///

 typedef struct {

   ///

@@ -285,6 +293,40 @@ typedef struct {
   UINT8   Reserved1[16];

 } FSPS_ARCH2_UPD;

 

+///

+/// FSPI_ARCH_UPD Configuration.

+///

+typedef struct {

+  ///

+  /// Revision of the structure is 1 for this version of the specification.

+  ///

+  UINT8   Revision;

+  UINT8   Reserved[3];

+  ///

+  /// Length of the structure in bytes. The current value for this field is 32.

+  ///

+  UINT32  Length;

+  ///

+  /// The physical memory-mapped base address of the bootloader SMM firmware 
volume (FV).

+  ///

+  EFI_PHYSICAL_ADDRESSBootloaderSmmFvBaseAddress;

+  ///

+  /// The length in bytes of the bootloader SMM firmware volume (FV).

+  ///

+  UINT64  BootloaderSmmFvLength;

+  ///

+  /// The physical memory-mapped base address of the bootloader SMM FV context 
data.

+  /// This data is provided to bootloader SMM drivers through a HOB by the FSP 
MM Foundation.

+  ///

+  EFI_PHYSICAL_ADDRESSBootloaderSmmFvContextData;

+  ///

+  /// The length in bytes of the bootloader SMM FV context data.

+  /// This data is provided to bootloader SMM drivers through a HOB by the FSP 
MM Foundation.

+  ///

+  UINT16  BootloaderSmmFvContextDataLength;

+  UINT8   Reserved1[24];

+} FSPI_ARCH_UPD;

+

 ///

 /// FSPT_UPD_COMMON Configuration.

 ///

@@ -393,6 +435,21 @@ typedef struct {
   FSPS_ARCH2_UPDFspsArchU

Re: [edk2-devel] [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.

2022-07-20 Thread Chiu, Chasel


Hi Star, this is following current specification.

Thanks,
Chasel


> -Original Message-
> From: Zeng, Star 
> Sent: Wednesday, July 20, 2022 8:07 PM
> To: Chiu, Chasel ; devel@edk2.groups.io
> Cc: Desimone, Nathaniel L ; Zeng, Star
> 
> Subject: RE: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.
> 
> Is the reserved bytes number correct for FSPI_ARCH_UPD alignment?
>  UINT16  BootloaderSmmFvContextDataLength;
>  UINT8Reserved1[24];
> 
> Thanks,
> Star
> -Original Message-
> From: Chiu, Chasel 
> Sent: Thursday, July 21, 2022 10:29 AM
> To: devel@edk2.groups.io
> Cc: Chiu, Chasel ; Desimone, Nathaniel L
> ; Zeng, Star 
> Subject: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3993
> 
> Adding the missing FSPI_ARCH_UPD, FSP_GLOBAL_DATA_VERSION bumpping up,
> and some comments for clarification.
> Also fixed a bug in SplitFspBin.py for FSP-I support.
> 
> Cc: Nate DeSimone 
> Cc: Star Zeng 
> Signed-off-by: Chasel Chiu 
> ---
>  IntelFsp2Pkg/Include/FspEas/FspApi.h  | 71
> --
> -
>  IntelFsp2Pkg/Include/FspGlobalData.h  |  2 +-
>  IntelFsp2Pkg/Include/Guid/FspHeaderFile.h | 21 +++--
>  IntelFsp2Pkg/Tools/SplitFspBin.py |  2 +-
>  4 files changed, 85 insertions(+), 11 deletions(-)
> 
> diff --git a/IntelFsp2Pkg/Include/FspEas/FspApi.h
> b/IntelFsp2Pkg/Include/FspEas/FspApi.h
> index bf46f13f73..3f368574e8 100644
> --- a/IntelFsp2Pkg/Include/FspEas/FspApi.h
> +++ b/IntelFsp2Pkg/Include/FspEas/FspApi.h
> @@ -1,6 +1,6 @@
>  /** @file
> 
>Intel FSP API definition from Intel Firmware Support Package External
> 
> -  Architecture Specification v2.0 - v2.2
> 
> +  Architecture Specification v2.0 and above.
> 
> 
> 
>Copyright (c) 2014 - 2022, Intel Corporation. All rights reserved.
> 
>SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> @@ -100,13 +100,14 @@ typedef struct {
>/// "XX_T" for FSP-T
> 
>/// "XX_M" for FSP-M
> 
>/// "XX_S" for FSP-S
> 
> +  /// "XX_I" for FSP-I
> 
>/// Where XX is an unique signature
> 
>///
> 
>UINT64Signature;
> 
>///
> 
>/// Revision of the Data structure.
> 
> -  ///   For FSP spec 2.0/2.1 value is 1.
> 
> -  ///   For FSP spec 2.2 value is 2.
> 
> +  ///   For FSP spec 2.0/2.1, this value is 1 and only FSPM_UPD having
> ARCH_UPD.
> 
> +  ///   For FSP spec 2.2 and above, this value is 2 and ARCH_UPD present in 
> all
> UPD structures.
> 
>///
> 
>UINT8 Revision;
> 
>UINT8 Reserved[23];
> 
> @@ -134,7 +135,7 @@ typedef struct {
>  } FSPT_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPT_ARCH2_UPD Configuration.
> 
> +/// FSPT_ARCH2_UPD Configuration for FSP 2.4 and above.
> 
>  ///
> 
>  typedef struct {
> 
>///
> 
> @@ -196,7 +197,7 @@ typedef struct {
>  } FSPM_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPM_ARCH2_UPD Configuration.
> 
> +/// FSPM_ARCH2_UPD Configuration for FSP 2.4 and above.
> 
>  ///
> 
>  typedef struct {
> 
>///
> 
> @@ -209,6 +210,13 @@ typedef struct {
>///
> 
>UINT32  Length;
> 
>///
> 
> +  /// Pointer to the non-volatile storage (NVS) data buffer.
> 
> +  /// If it is NULL it indicates the NVS data is not available.
> 
> +  /// This value is deprecated starting with v2.4 of the FSP
> + specification,
> 
> +  /// and will be removed in an upcoming version of the FSP specification.
> 
> +  ///
> 
> +  EFI_PHYSICAL_ADDRESSNvsBufferPtr;
> 
> +  ///
> 
>/// Pointer to the temporary stack base address to be
> 
>/// consumed inside FspMemoryInit() API.
> 
>///
> 
> @@ -232,7 +240,7 @@ typedef struct {
>/// This value is only valid if Revision is >= 2.
> 
>///
> 
>EFI_PHYSICAL_ADDRESSFspEventHandler;
> 
> -  UINT8   Reserved1[24];
> 
> +  UINT8   Reserved1[16];
> 
>  } FSPM_ARCH2_UPD;
> 
> 
> 
>  ///
> 
> @@ -265,7 +273,7 @@ typedef struct {
>  } FSPS_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPS_ARCH2_UPD Configuration.
> 
> +/// FSPS_ARCH2_UPD Configuration for FSP 2.4 and above.
> 
>  ///
> 
>  typedef struct {
> 
>///
> 
> @@ -285,6 +293,40 @@ typedef struct {
>UINT8   Reserved1[16];
> 
>  } FSPS_ARCH2_UPD;
> 
> 
> 
> +///
> 
> +/// FSPI_ARCH_UPD Configuration.
> 
> +///
> 
> +typedef struct {
> 
> +  ///
> 
> +  /// Revision of the structure is 1 for this version of the specification.
> 
> +  ///
> 
> +  UINT8   Revision;
> 
> +  UINT8   Reserved[3];
> 
> +  ///
> 
> +  /// Length of the structure in bytes. The current value for this field is 
> 32.
> 
> +  ///
> 
> +  UINT32  Length;
> 
> +  ///
> 
> +  /// The physical memory-mapped base address of the bootloader SMM
> firmware volume (FV).
> 
> +  ///
> 
> +  EFI_PHYSICAL_ADDRESSBootloaderSmmFvBaseAddress;
> 
> +  ///
> 
> +  /// The length in bytes of the bootloader SMM fir

Re: [edk2-devel] [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.

2022-07-20 Thread Zeng, Star
The spec looks wrong to me.

Thanks,
Star
-Original Message-
From: Chiu, Chasel  
Sent: Thursday, July 21, 2022 11:16 AM
To: Zeng, Star ; devel@edk2.groups.io
Cc: Desimone, Nathaniel L 
Subject: RE: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.


Hi Star, this is following current specification.

Thanks,
Chasel


> -Original Message-
> From: Zeng, Star 
> Sent: Wednesday, July 20, 2022 8:07 PM
> To: Chiu, Chasel ; devel@edk2.groups.io
> Cc: Desimone, Nathaniel L ; Zeng, Star 
> 
> Subject: RE: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.
> 
> Is the reserved bytes number correct for FSPI_ARCH_UPD alignment?
>  UINT16  BootloaderSmmFvContextDataLength;
>  UINT8Reserved1[24];
> 
> Thanks,
> Star
> -Original Message-
> From: Chiu, Chasel 
> Sent: Thursday, July 21, 2022 10:29 AM
> To: devel@edk2.groups.io
> Cc: Chiu, Chasel ; Desimone, Nathaniel L 
> ; Zeng, Star 
> Subject: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3993
> 
> Adding the missing FSPI_ARCH_UPD, FSP_GLOBAL_DATA_VERSION bumpping up, 
> and some comments for clarification.
> Also fixed a bug in SplitFspBin.py for FSP-I support.
> 
> Cc: Nate DeSimone 
> Cc: Star Zeng 
> Signed-off-by: Chasel Chiu 
> ---
>  IntelFsp2Pkg/Include/FspEas/FspApi.h  | 71
> --
> -
>  IntelFsp2Pkg/Include/FspGlobalData.h  |  2 +-
>  IntelFsp2Pkg/Include/Guid/FspHeaderFile.h | 21 +++--
>  IntelFsp2Pkg/Tools/SplitFspBin.py |  2 +-
>  4 files changed, 85 insertions(+), 11 deletions(-)
> 
> diff --git a/IntelFsp2Pkg/Include/FspEas/FspApi.h
> b/IntelFsp2Pkg/Include/FspEas/FspApi.h
> index bf46f13f73..3f368574e8 100644
> --- a/IntelFsp2Pkg/Include/FspEas/FspApi.h
> +++ b/IntelFsp2Pkg/Include/FspEas/FspApi.h
> @@ -1,6 +1,6 @@
>  /** @file
> 
>Intel FSP API definition from Intel Firmware Support Package 
> External
> 
> -  Architecture Specification v2.0 - v2.2
> 
> +  Architecture Specification v2.0 and above.
> 
> 
> 
>Copyright (c) 2014 - 2022, Intel Corporation. All rights 
> reserved.
> 
>SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> @@ -100,13 +100,14 @@ typedef struct {
>/// "XX_T" for FSP-T
> 
>/// "XX_M" for FSP-M
> 
>/// "XX_S" for FSP-S
> 
> +  /// "XX_I" for FSP-I
> 
>/// Where XX is an unique signature
> 
>///
> 
>UINT64Signature;
> 
>///
> 
>/// Revision of the Data structure.
> 
> -  ///   For FSP spec 2.0/2.1 value is 1.
> 
> -  ///   For FSP spec 2.2 value is 2.
> 
> +  ///   For FSP spec 2.0/2.1, this value is 1 and only FSPM_UPD having
> ARCH_UPD.
> 
> +  ///   For FSP spec 2.2 and above, this value is 2 and ARCH_UPD present in 
> all
> UPD structures.
> 
>///
> 
>UINT8 Revision;
> 
>UINT8 Reserved[23];
> 
> @@ -134,7 +135,7 @@ typedef struct {
>  } FSPT_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPT_ARCH2_UPD Configuration.
> 
> +/// FSPT_ARCH2_UPD Configuration for FSP 2.4 and above.
> 
>  ///
> 
>  typedef struct {
> 
>///
> 
> @@ -196,7 +197,7 @@ typedef struct {
>  } FSPM_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPM_ARCH2_UPD Configuration.
> 
> +/// FSPM_ARCH2_UPD Configuration for FSP 2.4 and above.
> 
>  ///
> 
>  typedef struct {
> 
>///
> 
> @@ -209,6 +210,13 @@ typedef struct {
>///
> 
>UINT32  Length;
> 
>///
> 
> +  /// Pointer to the non-volatile storage (NVS) data buffer.
> 
> +  /// If it is NULL it indicates the NVS data is not available.
> 
> +  /// This value is deprecated starting with v2.4 of the FSP 
> + specification,
> 
> +  /// and will be removed in an upcoming version of the FSP specification.
> 
> +  ///
> 
> +  EFI_PHYSICAL_ADDRESSNvsBufferPtr;
> 
> +  ///
> 
>/// Pointer to the temporary stack base address to be
> 
>/// consumed inside FspMemoryInit() API.
> 
>///
> 
> @@ -232,7 +240,7 @@ typedef struct {
>/// This value is only valid if Revision is >= 2.
> 
>///
> 
>EFI_PHYSICAL_ADDRESSFspEventHandler;
> 
> -  UINT8   Reserved1[24];
> 
> +  UINT8   Reserved1[16];
> 
>  } FSPM_ARCH2_UPD;
> 
> 
> 
>  ///
> 
> @@ -265,7 +273,7 @@ typedef struct {
>  } FSPS_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPS_ARCH2_UPD Configuration.
> 
> +/// FSPS_ARCH2_UPD Configuration for FSP 2.4 and above.
> 
>  ///
> 
>  typedef struct {
> 
>///
> 
> @@ -285,6 +293,40 @@ typedef struct {
>UINT8   Reserved1[16];
> 
>  } FSPS_ARCH2_UPD;
> 
> 
> 
> +///
> 
> +/// FSPI_ARCH_UPD Configuration.
> 
> +///
> 
> +typedef struct {
> 
> +  ///
> 
> +  /// Revision of the structure is 1 for this version of the specification.
> 
> +  ///
> 
> +  UINT8   Revision;
> 
> +  UINT8   Reserved[3];
> 
> +  ///
> 
> +  /// Length of the structure in bytes. The current value for this field is 
> 32.
> 
> +  ///
> 
> +  UINT32

Re: [edk2-devel] [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.

2022-07-22 Thread Nate DeSimone
Good catch everyone!

The spec has been changed to the following:

typedef struct {
UINT8Revision;
UINT8Reserved[3];
UINT32   Length;
EFI_PHYSICAL_ADDRESS BootloaderSmmFvBaseAddress;
UINT64   BootloaderSmmFvLength;
EFI_PHYSICAL_ADDRESS BootloaderSmmFvContextData;
UINT16   BootloaderSmmFvContextDataLength;
UINT8Reserved1[30];
} FSPI_ARCH_UPD;

-Original Message-
From: Zeng, Star  
Sent: Wednesday, July 20, 2022 8:19 PM
To: Chiu, Chasel ; devel@edk2.groups.io
Cc: Desimone, Nathaniel L ; Zeng, Star 

Subject: RE: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.

The spec looks wrong to me.

Thanks,
Star
-Original Message-
From: Chiu, Chasel  
Sent: Thursday, July 21, 2022 11:16 AM
To: Zeng, Star ; devel@edk2.groups.io
Cc: Desimone, Nathaniel L 
Subject: RE: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.


Hi Star, this is following current specification.

Thanks,
Chasel


> -Original Message-
> From: Zeng, Star 
> Sent: Wednesday, July 20, 2022 8:07 PM
> To: Chiu, Chasel ; devel@edk2.groups.io
> Cc: Desimone, Nathaniel L ; Zeng, Star 
> 
> Subject: RE: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.
> 
> Is the reserved bytes number correct for FSPI_ARCH_UPD alignment?
>  UINT16  BootloaderSmmFvContextDataLength;
>  UINT8Reserved1[24];
> 
> Thanks,
> Star
> -Original Message-
> From: Chiu, Chasel 
> Sent: Thursday, July 21, 2022 10:29 AM
> To: devel@edk2.groups.io
> Cc: Chiu, Chasel ; Desimone, Nathaniel L 
> ; Zeng, Star 
> Subject: [PATCH v3] IntelFsp2Pkg: Add FSPI_ARCH_UPD.
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3993
> 
> Adding the missing FSPI_ARCH_UPD, FSP_GLOBAL_DATA_VERSION bumpping up, 
> and some comments for clarification.
> Also fixed a bug in SplitFspBin.py for FSP-I support.
> 
> Cc: Nate DeSimone 
> Cc: Star Zeng 
> Signed-off-by: Chasel Chiu 
> ---
>  IntelFsp2Pkg/Include/FspEas/FspApi.h  | 71
> --
> -
>  IntelFsp2Pkg/Include/FspGlobalData.h  |  2 +-
>  IntelFsp2Pkg/Include/Guid/FspHeaderFile.h | 21 +++--
>  IntelFsp2Pkg/Tools/SplitFspBin.py |  2 +-
>  4 files changed, 85 insertions(+), 11 deletions(-)
> 
> diff --git a/IntelFsp2Pkg/Include/FspEas/FspApi.h
> b/IntelFsp2Pkg/Include/FspEas/FspApi.h
> index bf46f13f73..3f368574e8 100644
> --- a/IntelFsp2Pkg/Include/FspEas/FspApi.h
> +++ b/IntelFsp2Pkg/Include/FspEas/FspApi.h
> @@ -1,6 +1,6 @@
>  /** @file
> 
>Intel FSP API definition from Intel Firmware Support Package 
> External
> 
> -  Architecture Specification v2.0 - v2.2
> 
> +  Architecture Specification v2.0 and above.
> 
> 
> 
>Copyright (c) 2014 - 2022, Intel Corporation. All rights 
> reserved.
> 
>SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> @@ -100,13 +100,14 @@ typedef struct {
>/// "XX_T" for FSP-T
> 
>/// "XX_M" for FSP-M
> 
>/// "XX_S" for FSP-S
> 
> +  /// "XX_I" for FSP-I
> 
>/// Where XX is an unique signature
> 
>///
> 
>UINT64Signature;
> 
>///
> 
>/// Revision of the Data structure.
> 
> -  ///   For FSP spec 2.0/2.1 value is 1.
> 
> -  ///   For FSP spec 2.2 value is 2.
> 
> +  ///   For FSP spec 2.0/2.1, this value is 1 and only FSPM_UPD having
> ARCH_UPD.
> 
> +  ///   For FSP spec 2.2 and above, this value is 2 and ARCH_UPD present in 
> all
> UPD structures.
> 
>///
> 
>UINT8 Revision;
> 
>UINT8 Reserved[23];
> 
> @@ -134,7 +135,7 @@ typedef struct {
>  } FSPT_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPT_ARCH2_UPD Configuration.
> 
> +/// FSPT_ARCH2_UPD Configuration for FSP 2.4 and above.
> 
>  ///
> 
>  typedef struct {
> 
>///
> 
> @@ -196,7 +197,7 @@ typedef struct {
>  } FSPM_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPM_ARCH2_UPD Configuration.
> 
> +/// FSPM_ARCH2_UPD Configuration for FSP 2.4 and above.
> 
>  ///
> 
>  typedef struct {
> 
>///
> 
> @@ -209,6 +210,13 @@ typedef struct {
>///
> 
>UINT32  Length;
> 
>///
> 
> +  /// Pointer to the non-volatile storage (NVS) data buffer.
> 
> +  /// If it is NULL it indicates the NVS data is not available.
> 
> +  /// This value is deprecated starting with v2.4 of the FSP 
> + specification,
> 
> +  /// and will be removed in an upcoming version of the FSP specification.
> 
> +  ///
> 
> +  EFI_PHYSICAL_ADDRESSNvsBufferPtr;
> 
> +  ///
> 
>/// Pointer to the temporary stack base address to be
> 
>/// consumed inside FspMemoryInit() API.
> 
>///
> 
> @@ -232,7 +240,7 @@ typedef struct {
>/// This value is only valid if Revision is >= 2.
> 
>///
> 
>EFI_PHYSICAL_ADDRESSFspEventHandler;
> 
> -  UINT8   Reserved1[24];
> 
> +  UINT8   Reserved1[16];
> 
>  } FSPM_ARCH2_UPD;
> 
> 
> 
>  ///
> 
> @@ -265,7 +273,7 @@ typedef struct {
>  } FSPS_ARCH_UPD;
> 
> 
> 
>  ///
> 
> -/// FSPS_ARCH2_UPD Conf