REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3999
FspResetType will be either 32bit or 64 bit basing on
the build type.

Cc: Nate DeSimone <nathaniel.l.desim...@intel.com>
Cc: Star Zeng <star.z...@intel.com>
Signed-off-by: Chasel Chiu <chasel.c...@intel.com>
---
 IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c | 10 +++++-----
 IntelFsp2Pkg/Include/FspEas/FspApi.h                 | 61 
+++++++++++++++++++++++++++++++++----------------------------
 IntelFsp2Pkg/Include/Library/FspCommonLib.h          |  2 +-
 IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h     |  4 ++--
 4 files changed, 41 insertions(+), 36 deletions(-)

diff --git a/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c 
b/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c
index 67e08a9e7e..a22b0e7825 100644
--- a/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c
+++ b/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c
@@ -200,13 +200,13 @@ SetFspCoreStackPointer (
   UINT32           StackContextLen;
 
   FspData         = GetFspGlobalDataPointer ();
-  StackContextLen = sizeof(CONTEXT_STACK) / sizeof(UINTN);
+  StackContextLen = sizeof (CONTEXT_STACK) / sizeof (UINTN);
 
   //
   // Reserve space for the ContinuationFunc two parameters
   //
-  OldStack = (UINTN *)FspData->CoreStack;
-  NewStack = (UINTN *)NewStackTop - StackContextLen - 2;
+  OldStack           = (UINTN *)FspData->CoreStack;
+  NewStack           = (UINTN *)NewStackTop - StackContextLen - 2;
   FspData->CoreStack = (UINTN)NewStack;
   while (StackContextLen-- != 0) {
     *NewStack++ = *OldStack++;
@@ -533,7 +533,7 @@ SetPhaseStatusCode (
 VOID
 EFIAPI
 FspApiReturnStatusReset (
-  IN UINT32  FspResetType
+  IN EFI_STATUS  FspResetType
   )
 {
   volatile BOOLEAN  LoopUntilReset;
@@ -546,7 +546,7 @@ FspApiReturnStatusReset (
     /// calls the FSP API without honoring the reset request by FSP
     ///
     do {
-      SetFspApiReturnStatus ((EFI_STATUS)FspResetType);
+      SetFspApiReturnStatus (FspResetType);
       Pei2LoaderSwitchStack ();
       DEBUG ((DEBUG_ERROR, "!!!ERROR: FSP has requested BootLoader for reset. 
But BootLoader has not honored the reset\n"));
       DEBUG ((DEBUG_ERROR, "!!!ERROR: Please add support in BootLoader to 
honor the reset request from FSP\n"));
diff --git a/IntelFsp2Pkg/Include/FspEas/FspApi.h 
b/IntelFsp2Pkg/Include/FspEas/FspApi.h
index b36bc2b9ae..5e47f475db 100644
--- a/IntelFsp2Pkg/Include/FspEas/FspApi.h
+++ b/IntelFsp2Pkg/Include/FspEas/FspApi.h
@@ -11,19 +11,24 @@
 #define _FSP_API_H_
 
 #include <Pi/PiStatusCode.h>
+#include <Base.h>
 
 ///
 /// FSP Reset Status code
-/// These are defined in FSP EAS v2.0 section 11.2.2 - OEM Status Code
+/// These are defined in FSP EAS v2.4 section 13.2.2 - OEM Status Code
 /// @{
-#define FSP_STATUS_RESET_REQUIRED_COLD  0x40000001
-#define FSP_STATUS_RESET_REQUIRED_WARM  0x40000002
-#define FSP_STATUS_RESET_REQUIRED_3     0x40000003
-#define FSP_STATUS_RESET_REQUIRED_4     0x40000004
-#define FSP_STATUS_RESET_REQUIRED_5     0x40000005
-#define FSP_STATUS_RESET_REQUIRED_6     0x40000006
-#define FSP_STATUS_RESET_REQUIRED_7     0x40000007
-#define FSP_STATUS_RESET_REQUIRED_8     0x40000008
+
+#define ENCODE_RESET_REQUEST(ResetType)  \
+        ((EFI_STATUS)((MAX_BIT >> 1) | (ResetType)))
+#define FSP_STATUS_RESET_REQUIRED_COLD  ENCODE_RESET_REQUEST(1)
+#define FSP_STATUS_RESET_REQUIRED_WARM  ENCODE_RESET_REQUEST(2)
+#define FSP_STATUS_RESET_REQUIRED_3     ENCODE_RESET_REQUEST(3)
+#define FSP_STATUS_RESET_REQUIRED_4     ENCODE_RESET_REQUEST(4)
+#define FSP_STATUS_RESET_REQUIRED_5     ENCODE_RESET_REQUEST(5)
+#define FSP_STATUS_RESET_REQUIRED_6     ENCODE_RESET_REQUEST(6)
+#define FSP_STATUS_RESET_REQUIRED_7     ENCODE_RESET_REQUEST(7)
+#define FSP_STATUS_RESET_REQUIRED_8     ENCODE_RESET_REQUEST(8)
+#define FSP_STATUS_VARIABLE_REQUEST     ENCODE_RESET_REQUEST(10)
 /// @}
 
 ///
@@ -135,18 +140,18 @@ typedef struct {
   ///
   /// Revision of the structure is 2 for this version of the specification.
   ///
-  UINT8                Revision;
-  UINT8                Reserved[3];
+  UINT8                   Revision;
+  UINT8                   Reserved[3];
   ///
   /// Length of the structure in bytes. The current value for this field is 32.
   ///
-  UINT32               Length;
+  UINT32                  Length;
   ///
   /// FspDebugHandler Optional debug handler for the bootloader to receive 
debug messages
   /// occurring during FSP execution.
   ///
-  EFI_PHYSICAL_ADDRESS FspDebugHandler;
-  UINT8                Reserved1[16];
+  EFI_PHYSICAL_ADDRESS    FspDebugHandler;
+  UINT8                   Reserved1[16];
 } FSPT_ARCH2_UPD;
 
 ///
@@ -197,37 +202,37 @@ typedef struct {
   ///
   /// Revision of the structure is 3 for this version of the specification.
   ///
-  UINT8                Revision;
-  UINT8                Reserved[3];
+  UINT8                   Revision;
+  UINT8                   Reserved[3];
   ///
   /// Length of the structure in bytes. The current value for this field is 64.
   ///
-  UINT32               Length;
+  UINT32                  Length;
   ///
   /// Pointer to the temporary stack base address to be
   /// consumed inside FspMemoryInit() API.
   ///
-  EFI_PHYSICAL_ADDRESS StackBase;
+  EFI_PHYSICAL_ADDRESS    StackBase;
   ///
   /// Temporary stack size to be consumed inside
   /// FspMemoryInit() API.
   ///
-  UINT64               StackSize;
+  UINT64                  StackSize;
   ///
   /// Size of memory to be reserved by FSP below "top
   /// of low usable memory" for bootloader usage.
   ///
-  UINT32               BootLoaderTolumSize;
+  UINT32                  BootLoaderTolumSize;
   ///
   /// Current boot mode.
   ///
-  UINT32               BootMode;
+  UINT32                  BootMode;
   ///
   /// Optional event handler for the bootloader to be informed of events 
occurring during FSP execution.
   /// This value is only valid if Revision is >= 2.
   ///
-  EFI_PHYSICAL_ADDRESS FspEventHandler;
-  UINT8                Reserved1[24];
+  EFI_PHYSICAL_ADDRESS    FspEventHandler;
+  UINT8                   Reserved1[24];
 } FSPM_ARCH2_UPD;
 
 ///
@@ -266,18 +271,18 @@ typedef struct {
   ///
   /// Revision of the structure is 2 for this version of the specification.
   ///
-  UINT8                Revision;
-  UINT8                Reserved[3];
+  UINT8                   Revision;
+  UINT8                   Reserved[3];
   ///
   /// Length of the structure in bytes. The current value for this field is 32.
   ///
-  UINT32               Length;
+  UINT32                  Length;
   ///
   /// FspEventHandler Optional event handler for the bootloader to be informed 
of events
   /// occurring during FSP execution.
   ///
-  EFI_PHYSICAL_ADDRESS FspEventHandler;
-  UINT8                Reserved1[16];
+  EFI_PHYSICAL_ADDRESS    FspEventHandler;
+  UINT8                   Reserved1[16];
 } FSPS_ARCH2_UPD;
 
 ///
diff --git a/IntelFsp2Pkg/Include/Library/FspCommonLib.h 
b/IntelFsp2Pkg/Include/Library/FspCommonLib.h
index b5e38568e2..13b67f8822 100644
--- a/IntelFsp2Pkg/Include/Library/FspCommonLib.h
+++ b/IntelFsp2Pkg/Include/Library/FspCommonLib.h
@@ -302,7 +302,7 @@ SetPhaseStatusCode (
 VOID
 EFIAPI
 FspApiReturnStatusReset (
-  IN UINT32  FspResetType
+  IN EFI_STATUS  FspResetType
   );
 
 #endif
diff --git a/IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h 
b/IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h
index f049361d78..ff66e48ae2 100644
--- a/IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h
+++ b/IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h
@@ -30,7 +30,7 @@
 
 
 **/
-UINT32
+EFI_STATUS
 EFIAPI
 Pei2LoaderSwitchStack (
   VOID
@@ -46,7 +46,7 @@ Pei2LoaderSwitchStack (
 
 
 **/
-UINT32
+EFI_STATUS
 EFIAPI
 Loader2PeiSwitchStack (
   VOID
-- 
2.35.0.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#91518): https://edk2.groups.io/g/devel/message/91518
Mute This Topic: https://groups.io/mt/92476843/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to