]> git.proxmox.com Git - mirror_edk2.git/commitdiff
IntelFsp2WrapperPkg: Support 64bit FspResetType for X64 build.
authorChasel Chiu <chasel.chiu@intel.com>
Tue, 19 Jul 2022 04:08:31 +0000 (21:08 -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>
IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.c
IntelFsp2WrapperPkg/FspmWrapperPeim/FspmWrapperPeim.c
IntelFsp2WrapperPkg/FspsWrapperPeim/FspsWrapperPeim.c
IntelFsp2WrapperPkg/Include/Library/FspWrapperPlatformLib.h
IntelFsp2WrapperPkg/Library/BaseFspWrapperApiLib/X64/DispatchExecute.c
IntelFsp2WrapperPkg/Library/BaseFspWrapperPlatformLibSample/FspWrapperPlatformLibSample.c

index 21385ac0b277489499df79dd881a4a52495922c3..7aa2c93e99638d5f34c22fde56a083a533d343ff 100644 (file)
@@ -97,7 +97,7 @@ OnPciEnumerationComplete (
   //\r
   if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {\r
     DEBUG ((DEBUG_INFO, "FSP NotifyPhase AfterPciEnumeration requested reset 0x%x\n", Status));\r
-    CallFspWrapperResetSystem ((UINT32)Status);\r
+    CallFspWrapperResetSystem (Status);\r
   }\r
 \r
   if (Status != EFI_SUCCESS) {\r
@@ -140,7 +140,7 @@ OnReadyToBoot (
   //\r
   if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {\r
     DEBUG ((DEBUG_INFO, "FSP NotifyPhase ReadyToBoot requested reset 0x%x\n", Status));\r
-    CallFspWrapperResetSystem ((UINT32)Status);\r
+    CallFspWrapperResetSystem (Status);\r
   }\r
 \r
   if (Status != EFI_SUCCESS) {\r
@@ -184,7 +184,7 @@ OnEndOfFirmware (
   //\r
   if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {\r
     DEBUG ((DEBUG_INFO, "FSP NotifyPhase EndOfFirmware requested reset 0x%x\n", Status));\r
-    CallFspWrapperResetSystem ((UINT32)Status);\r
+    CallFspWrapperResetSystem (Status);\r
   }\r
 \r
   if (Status != EFI_SUCCESS) {\r
index 047c2965a3dc8a8fd2d57d301e4215f4381563bd..ac27524d08780a3956bbf5df4f9ea6c14ebbae5b 100644 (file)
@@ -43,16 +43,15 @@ extern EFI_GUID  gFspHobGuid;
 \r
   @return FSP-M UPD Data Address\r
 **/\r
-\r
 UINTN\r
 GetFspmUpdDataAddress (\r
   VOID\r
   )\r
 {\r
   if (PcdGet64 (PcdFspmUpdDataAddress64) != 0) {\r
-    return (UINTN) PcdGet64 (PcdFspmUpdDataAddress64);\r
+    return (UINTN)PcdGet64 (PcdFspmUpdDataAddress64);\r
   } else {\r
-    return (UINTN) PcdGet32 (PcdFspmUpdDataAddress);\r
+    return (UINTN)PcdGet32 (PcdFspmUpdDataAddress);\r
   }\r
 }\r
 \r
@@ -97,7 +96,7 @@ PeiFspMemoryInit (
     //\r
     // External UPD is ready, get the buffer from PCD pointer.\r
     //\r
-    FspmUpdDataPtr = (VOID *) GetFspmUpdDataAddress();\r
+    FspmUpdDataPtr = (VOID *)GetFspmUpdDataAddress ();\r
     ASSERT (FspmUpdDataPtr != NULL);\r
   }\r
 \r
@@ -115,6 +114,7 @@ PeiFspMemoryInit (
     DEBUG ((DEBUG_INFO, "  BootLoaderTolumSize - 0x%x\n", ((FSPM_UPD_COMMON *)FspmUpdDataPtr)->FspmArchUpd.BootLoaderTolumSize));\r
     DEBUG ((DEBUG_INFO, "  BootMode            - 0x%x\n", ((FSPM_UPD_COMMON *)FspmUpdDataPtr)->FspmArchUpd.BootMode));\r
   }\r
+\r
   DEBUG ((DEBUG_INFO, "  HobListPtr          - 0x%x\n", &FspHobListPtr));\r
 \r
   TimeStampCounterStart = AsmReadTsc ();\r
@@ -129,7 +129,7 @@ PeiFspMemoryInit (
   //\r
   if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {\r
     DEBUG ((DEBUG_INFO, "FspMemoryInitApi requested reset 0x%x\n", Status));\r
-    CallFspWrapperResetSystem ((UINT32)Status);\r
+    CallFspWrapperResetSystem (Status);\r
   }\r
 \r
   if (EFI_ERROR (Status)) {\r
index fadadd40e628a6109622d5b5715fb33e5e76690a..ee48dd69d36a6c61b18316d6b25a97dcbcae06b9 100644 (file)
@@ -96,7 +96,7 @@ S3EndOfPeiNotify (
   //\r
   if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {\r
     DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase AfterPciEnumeration requested reset 0x%x\n", Status));\r
-    CallFspWrapperResetSystem ((UINT32)Status);\r
+    CallFspWrapperResetSystem (Status);\r
   }\r
 \r
   NotifyPhaseParams.Phase = EnumInitPhaseReadyToBoot;\r
@@ -108,7 +108,7 @@ S3EndOfPeiNotify (
   //\r
   if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {\r
     DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase ReadyToBoot requested reset 0x%x\n", Status));\r
-    CallFspWrapperResetSystem ((UINT32)Status);\r
+    CallFspWrapperResetSystem (Status);\r
   }\r
 \r
   NotifyPhaseParams.Phase = EnumInitPhaseEndOfFirmware;\r
@@ -120,7 +120,7 @@ S3EndOfPeiNotify (
   //\r
   if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {\r
     DEBUG ((DEBUG_INFO, "FSP S3NotifyPhase EndOfFirmware requested reset 0x%x\n", Status));\r
-    CallFspWrapperResetSystem ((UINT32)Status);\r
+    CallFspWrapperResetSystem (Status);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -186,16 +186,15 @@ FspSiliconInitDoneGetFspHobList (
 \r
   @return FSP-S UPD Data Address\r
 **/\r
-\r
 UINTN\r
 GetFspsUpdDataAddress (\r
   VOID\r
   )\r
 {\r
   if (PcdGet64 (PcdFspsUpdDataAddress64) != 0) {\r
-    return (UINTN) PcdGet64 (PcdFspsUpdDataAddress64);\r
+    return (UINTN)PcdGet64 (PcdFspsUpdDataAddress64);\r
   } else {\r
-    return (UINTN) PcdGet32 (PcdFspsUpdDataAddress);\r
+    return (UINTN)PcdGet32 (PcdFspsUpdDataAddress);\r
   }\r
 }\r
 \r
@@ -310,7 +309,7 @@ PeiMemoryDiscoveredNotify (
     SourceData = (UINTN *)((UINTN)FspsHeaderPtr->ImageBase + (UINTN)FspsHeaderPtr->CfgRegionOffset);\r
     CopyMem (FspsUpdDataPtr, SourceData, (UINTN)FspsHeaderPtr->CfgRegionSize);\r
   } else {\r
-    FspsUpdDataPtr = (FSPS_UPD_COMMON *) GetFspsUpdDataAddress();\r
+    FspsUpdDataPtr = (FSPS_UPD_COMMON *)GetFspsUpdDataAddress ();\r
     ASSERT (FspsUpdDataPtr != NULL);\r
   }\r
 \r
@@ -327,7 +326,7 @@ PeiMemoryDiscoveredNotify (
   //\r
   if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) {\r
     DEBUG ((DEBUG_INFO, "FspSiliconInitApi requested reset 0x%x\n", Status));\r
-    CallFspWrapperResetSystem ((UINT32)Status);\r
+    CallFspWrapperResetSystem (Status);\r
   }\r
 \r
   if (EFI_ERROR (Status)) {\r
index a6ade2551e890642570456f73d4830df71d815c5..fe9f0d7408cd7ae43d1dd1f5e523691bfc2507e7 100644 (file)
@@ -74,7 +74,7 @@ GetS3MemoryInfo (
 VOID\r
 EFIAPI\r
 CallFspWrapperResetSystem (\r
-  IN UINT32  FspStatusResetType\r
+  IN EFI_STATUS  FspStatusResetType\r
   );\r
 \r
 #endif\r
index 591a5c7a5591455862395624f7bada43b7a3fbe0..22e009ace3dff851ec71a4ec2c984620b409a697 100644 (file)
@@ -121,6 +121,10 @@ Execute32BitCode (
   //\r
   AsmReadIdtr (&Idtr);\r
   Status = AsmExecute32BitCode (Function, Param1, Param2, &mGdt);\r
+  //\r
+  // Convert FSP Status code from 32bit to 64bit to match caller expectation.\r
+  //\r
+  Status = (Status & ~(BIT31 + BIT30)) | LShiftU64 (Status & (BIT31 + BIT30), 32);\r
   AsmWriteIdtr (&Idtr);\r
 \r
   return Status;\r
@@ -150,4 +154,3 @@ Execute64BitCode (
 \r
   return Status;\r
 }\r
-\r
index fa7d60c292dd2e9a4f134bfb9a966e007db9cc07..00b4799fb4932acdc9cb2b6806b3fab9ea29f240 100644 (file)
@@ -86,7 +86,7 @@ GetS3MemoryInfo (
 VOID\r
 EFIAPI\r
 CallFspWrapperResetSystem (\r
-  IN UINT32  FspStatusResetType\r
+  IN EFI_STATUS  FspStatusResetType\r
   )\r
 {\r
   //\r