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

2022-07-22 Thread Chiu, Chasel


Patch merged:
https://github.com/tianocore/edk2/commit/5a3641bfcdcf99fd76817833488f2af8abb69383

Thanks,
Chasel


> -Original Message-
> From: devel@edk2.groups.io  On Behalf Of Chiu, Chasel
> Sent: Friday, July 22, 2022 10:49 AM
> To: devel@edk2.groups.io
> Cc: Chiu, Chasel ; Desimone, Nathaniel L
> ; Zeng, Star 
> Subject: [edk2-devel] [PATCH v4] 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..361e916b5f 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_ADDRESS
> FspEventHandler;-  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 64.+  ///+  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[30];+} 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 {+  ///+  ///
> 

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

2022-07-22 Thread Nate DeSimone
Reviewed-by: Nate DeSimone 

-Original Message-
From: Chiu, Chasel  
Sent: Friday, July 22, 2022 10:49 AM
To: devel@edk2.groups.io
Cc: Chiu, Chasel ; Desimone, Nathaniel L 
; Zeng, Star 
Subject: [PATCH v4] 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..361e916b5f 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 64.+  ///+  UINT32  
Length;+  ///+  /// The physical memory-mapped base address of 
the bootloader SMM firmware volume (FV).+  ///+  EFI_PHYSICAL_ADDRESS
BootloaderSmmFvBaseAddress;+  ///+  /// 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[30];+} 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