]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/PlatformPei: detect SMRAM at default SMBASE (skeleton)
authorLaszlo Ersek <lersek@redhat.com>
Fri, 20 Sep 2019 12:02:14 +0000 (14:02 +0200)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 5 Feb 2020 12:59:32 +0000 (12:59 +0000)
Introduce the Q35SmramAtDefaultSmbaseInitialization() function for
detecting the "SMRAM at default SMBASE" feature.

For now, the function is only a skeleton, so that we can gradually build
upon the result while the result is hard-coded as FALSE. The actual
detection will occur in a later patch.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1512
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Message-Id: <20200129214412.2361-6-lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
OvmfPkg/PlatformPei/MemDetect.c
OvmfPkg/PlatformPei/Platform.c
OvmfPkg/PlatformPei/Platform.h
OvmfPkg/PlatformPei/PlatformPei.inf

index 58b171fba1c8d70f9026e4932948a5ae68eb2fe0..2bc1c46dffc2e8c8d2adfb80fcda32e0f75f9370 100644 (file)
@@ -43,6 +43,8 @@ STATIC UINT32 mS3AcpiReservedMemorySize;
 \r
 STATIC UINT16 mQ35TsegMbytes;\r
 \r
+BOOLEAN mQ35SmramAtDefaultSmbase;\r
+\r
 UINT32 mQemuUc32Base;\r
 \r
 VOID\r
@@ -90,6 +92,22 @@ Q35TsegMbytesInitialization (
 }\r
 \r
 \r
+VOID\r
+Q35SmramAtDefaultSmbaseInitialization (\r
+  VOID\r
+  )\r
+{\r
+  RETURN_STATUS PcdStatus;\r
+\r
+  ASSERT (mHostBridgeDevId == INTEL_Q35_MCH_DEVICE_ID);\r
+\r
+  mQ35SmramAtDefaultSmbase = FALSE;\r
+  PcdStatus = PcdSetBoolS (PcdQ35SmramAtDefaultSmbase,\r
+                mQ35SmramAtDefaultSmbase);\r
+  ASSERT_RETURN_ERROR (PcdStatus);\r
+}\r
+\r
+\r
 VOID\r
 QemuUc32BaseInitialization (\r
   VOID\r
index 510d6d7477ecbf2a80f33a9a2d1e3d6cf67e5ef2..473af102783a291245951c4c87969c2a77c7521e 100644 (file)
@@ -792,6 +792,7 @@ InitializePlatform (
   if (FeaturePcdGet (PcdSmmSmramRequire)) {\r
     Q35BoardVerification ();\r
     Q35TsegMbytesInitialization ();\r
+    Q35SmramAtDefaultSmbaseInitialization ();\r
   }\r
 \r
   PublishPeiMemory ();\r
index 2f3cebcd3a6a983a93b459e9184e593d9f4baff9..43f20f067f226f08ae5802320f0a87c4d4e5670d 100644 (file)
@@ -52,6 +52,11 @@ Q35TsegMbytesInitialization (
   VOID\r
   );\r
 \r
+VOID\r
+Q35SmramAtDefaultSmbaseInitialization (\r
+  VOID\r
+  );\r
+\r
 EFI_STATUS\r
 PublishPeiMemory (\r
   VOID\r
@@ -119,6 +124,8 @@ extern UINT32 mMaxCpuCount;
 \r
 extern UINT16 mHostBridgeDevId;\r
 \r
+extern BOOLEAN mQ35SmramAtDefaultSmbase;\r
+\r
 extern UINT32 mQemuUc32Base;\r
 \r
 #endif // _PLATFORM_PEI_H_INCLUDED_\r
index 30eaebdfae63508ce27d85a0be09852fc698dc05..25229618ed137f7979365530a7ce570bc5509fb7 100644 (file)
@@ -84,6 +84,7 @@
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size\r
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDecompressionScratchEnd\r
   gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase\r
   gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize\r