]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/PlatformPei: remove mPlatformInfoHob
authorGerd Hoffmann <kraxel@redhat.com>
Fri, 2 Dec 2022 13:10:05 +0000 (14:10 +0100)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 14 Dec 2022 17:45:41 +0000 (17:45 +0000)
Stop using the mPlatformInfoHob global variable.  Let
BuildPlatformInfoHob() allocate and return PlatformInfoHob instead.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
OvmfPkg/PlatformPei/Platform.c
OvmfPkg/PlatformPei/Platform.h

index d8c4499804fb33d9ccf7da325e7ea06ab082c4da..ebce2ba1290e794c2375fb8460bea31e64b484d1 100644 (file)
@@ -41,8 +41,6 @@
 \r
 #include "Platform.h"\r
 \r
-EFI_HOB_PLATFORM_INFO  mPlatformInfoHob = { 0 };\r
-\r
 EFI_PEI_PPI_DESCRIPTOR  mPpiBootMode[] = {\r
   {\r
     EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,\r
@@ -305,12 +303,18 @@ MaxCpuCountInitialization (
 /**\r
  * @brief Builds PlatformInfo Hob\r
  */\r
-VOID\r
+EFI_HOB_PLATFORM_INFO *\r
 BuildPlatformInfoHob (\r
   VOID\r
   )\r
 {\r
-  BuildGuidDataHob (&gUefiOvmfPkgPlatformInfoGuid, &mPlatformInfoHob, sizeof (EFI_HOB_PLATFORM_INFO));\r
+  EFI_HOB_PLATFORM_INFO  PlatformInfoHob;\r
+  EFI_HOB_GUID_TYPE      *GuidHob;\r
+\r
+  ZeroMem (&PlatformInfoHob, sizeof PlatformInfoHob);\r
+  BuildGuidDataHob (&gUefiOvmfPkgPlatformInfoGuid, &PlatformInfoHob, sizeof (EFI_HOB_PLATFORM_INFO));\r
+  GuidHob = GetFirstGuidHob (&gUefiOvmfPkgPlatformInfoGuid);\r
+  return (EFI_HOB_PLATFORM_INFO *)GET_GUID_HOB_DATA (GuidHob);\r
 }\r
 \r
 /**\r
@@ -329,69 +333,70 @@ InitializePlatform (
   IN CONST EFI_PEI_SERVICES     **PeiServices\r
   )\r
 {\r
-  EFI_STATUS  Status;\r
+  EFI_HOB_PLATFORM_INFO  *PlatformInfoHob;\r
+  EFI_STATUS             Status;\r
 \r
   DEBUG ((DEBUG_INFO, "Platform PEIM Loaded\n"));\r
+  PlatformInfoHob = BuildPlatformInfoHob ();\r
 \r
-  mPlatformInfoHob.SmmSmramRequire     = FeaturePcdGet (PcdSmmSmramRequire);\r
-  mPlatformInfoHob.SevEsIsEnabled      = MemEncryptSevEsIsEnabled ();\r
-  mPlatformInfoHob.PcdPciMmio64Size    = PcdGet64 (PcdPciMmio64Size);\r
-  mPlatformInfoHob.DefaultMaxCpuNumber = PcdGet32 (PcdCpuMaxLogicalProcessorNumber);\r
+  PlatformInfoHob->SmmSmramRequire     = FeaturePcdGet (PcdSmmSmramRequire);\r
+  PlatformInfoHob->SevEsIsEnabled      = MemEncryptSevEsIsEnabled ();\r
+  PlatformInfoHob->PcdPciMmio64Size    = PcdGet64 (PcdPciMmio64Size);\r
+  PlatformInfoHob->DefaultMaxCpuNumber = PcdGet32 (PcdCpuMaxLogicalProcessorNumber);\r
 \r
   PlatformDebugDumpCmos ();\r
 \r
   if (QemuFwCfgS3Enabled ()) {\r
     DEBUG ((DEBUG_INFO, "S3 support was detected on QEMU\n"));\r
-    mPlatformInfoHob.S3Supported = TRUE;\r
+    PlatformInfoHob->S3Supported = TRUE;\r
     Status                       = PcdSetBoolS (PcdAcpiS3Enable, TRUE);\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
 \r
-  S3Verification (&mPlatformInfoHob);\r
-  BootModeInitialization (&mPlatformInfoHob);\r
+  S3Verification (PlatformInfoHob);\r
+  BootModeInitialization (PlatformInfoHob);\r
 \r
   //\r
   // Query Host Bridge DID\r
   //\r
-  mPlatformInfoHob.HostBridgeDevId = PciRead16 (OVMF_HOSTBRIDGE_DID);\r
-  AddressWidthInitialization (&mPlatformInfoHob);\r
+  PlatformInfoHob->HostBridgeDevId = PciRead16 (OVMF_HOSTBRIDGE_DID);\r
+  AddressWidthInitialization (PlatformInfoHob);\r
 \r
-  MaxCpuCountInitialization (&mPlatformInfoHob);\r
+  MaxCpuCountInitialization (PlatformInfoHob);\r
 \r
-  if (mPlatformInfoHob.SmmSmramRequire) {\r
-    Q35BoardVerification (&mPlatformInfoHob);\r
-    Q35TsegMbytesInitialization (&mPlatformInfoHob);\r
-    Q35SmramAtDefaultSmbaseInitialization (&mPlatformInfoHob);\r
+  if (PlatformInfoHob->SmmSmramRequire) {\r
+    Q35BoardVerification (PlatformInfoHob);\r
+    Q35TsegMbytesInitialization (PlatformInfoHob);\r
+    Q35SmramAtDefaultSmbaseInitialization (PlatformInfoHob);\r
   }\r
 \r
-  PublishPeiMemory (&mPlatformInfoHob);\r
+  PublishPeiMemory (PlatformInfoHob);\r
 \r
-  PlatformQemuUc32BaseInitialization (&mPlatformInfoHob);\r
+  PlatformQemuUc32BaseInitialization (PlatformInfoHob);\r
 \r
-  InitializeRamRegions (&mPlatformInfoHob);\r
+  InitializeRamRegions (PlatformInfoHob);\r
 \r
-  if (mPlatformInfoHob.BootMode != BOOT_ON_S3_RESUME) {\r
-    if (!mPlatformInfoHob.SmmSmramRequire) {\r
+  if (PlatformInfoHob->BootMode != BOOT_ON_S3_RESUME) {\r
+    if (!PlatformInfoHob->SmmSmramRequire) {\r
       ReserveEmuVariableNvStore ();\r
     }\r
 \r
-    PeiFvInitialization (&mPlatformInfoHob);\r
-    MemTypeInfoInitialization (&mPlatformInfoHob);\r
-    MemMapInitialization (&mPlatformInfoHob);\r
-    NoexecDxeInitialization (&mPlatformInfoHob);\r
+    PeiFvInitialization (PlatformInfoHob);\r
+    MemTypeInfoInitialization (PlatformInfoHob);\r
+    MemMapInitialization (PlatformInfoHob);\r
+    NoexecDxeInitialization (PlatformInfoHob);\r
   }\r
 \r
   InstallClearCacheCallback ();\r
-  AmdSevInitialize (&mPlatformInfoHob);\r
-  if (mPlatformInfoHob.HostBridgeDevId == 0xffff) {\r
-    MiscInitializationForMicrovm (&mPlatformInfoHob);\r
+  AmdSevInitialize (PlatformInfoHob);\r
+  if (PlatformInfoHob->HostBridgeDevId == 0xffff) {\r
+    MiscInitializationForMicrovm (PlatformInfoHob);\r
   } else {\r
-    MiscInitialization (&mPlatformInfoHob);\r
+    MiscInitialization (PlatformInfoHob);\r
   }\r
 \r
   IntelTdxInitialize ();\r
   InstallFeatureControlCallback ();\r
-  BuildPlatformInfoHob ();\r
 \r
   return EFI_SUCCESS;\r
 }\r
index 0c0558f0626c378ba6e564267f95d9b548265749..86f603ff649c8906cdb04f8fcb96008b18dc345a 100644 (file)
@@ -13,8 +13,6 @@
 #include <Library/PlatformInitLib.h>\r
 #include <IndustryStandard/IntelTdx.h>\r
 \r
-extern EFI_HOB_PLATFORM_INFO  mPlatformInfoHob;\r
-\r
 VOID\r
 AddressWidthInitialization (\r
   IN OUT EFI_HOB_PLATFORM_INFO  *PlatformInfoHob\r
@@ -98,7 +96,7 @@ IntelTdxInitialize (
 /**\r
  * @brief Builds PlatformInfo Hob\r
  */\r
-VOID\r
+EFI_HOB_PLATFORM_INFO *\r
 BuildPlatformInfoHob (\r
   VOID\r
   );\r