]> git.proxmox.com Git - mirror_edk2.git/commitdiff
IntelFsp2Pkg: Support 64bit FspResetType for X64 build.
authorChasel Chiu <chasel.chiu@intel.com>
Tue, 19 Jul 2022 03:28:17 +0000 (20:28 -0700)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Tue, 19 Jul 2022 22:24:31 +0000 (22:24 +0000)
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.desimone@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Signed-off-by: Chasel Chiu <chasel.chiu@intel.com>
Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
IntelFsp2Pkg/Include/FspEas/FspApi.h
IntelFsp2Pkg/Include/Library/FspCommonLib.h
IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h
IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c

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