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.biesheu...@linaro.org> Cc: Boris Ostrovsky <boris.ostrov...@oracle.com> Cc: Brijesh Singh <brijesh.si...@amd.com> Cc: Igor Mammedov <imamm...@redhat.com> Cc: Jiewen Yao <jiewen....@intel.com> Cc: Joao M Martins <joao.m.mart...@oracle.com> Cc: Jordan Justen <jordan.l.jus...@intel.com> Cc: Jun Nakajima <jun.nakaj...@intel.com> Cc: Michael Kinney <michael.d.kin...@intel.com> Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: Phillip Goerl <phillip.go...@oracle.com> Cc: Yingwen Chen <yingwen.c...@intel.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1512 Signed-off-by: Laszlo Ersek <ler...@redhat.com> --- OvmfPkg/PlatformPei/PlatformPei.inf | 1 + OvmfPkg/PlatformPei/Platform.h | 7 +++++++ OvmfPkg/PlatformPei/MemDetect.c | 18 ++++++++++++++++++ OvmfPkg/PlatformPei/Platform.c | 1 + 4 files changed, 27 insertions(+) diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf index d9fd9c8f05b3..2b0c2c886929 100644 --- a/OvmfPkg/PlatformPei/PlatformPei.inf +++ b/OvmfPkg/PlatformPei/PlatformPei.inf @@ -84,6 +84,7 @@ [Pcd] gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDecompressionScratchEnd gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes + gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize diff --git a/OvmfPkg/PlatformPei/Platform.h b/OvmfPkg/PlatformPei/Platform.h index 2f3cebcd3a6a..43f20f067f22 100644 --- a/OvmfPkg/PlatformPei/Platform.h +++ b/OvmfPkg/PlatformPei/Platform.h @@ -52,6 +52,11 @@ Q35TsegMbytesInitialization ( VOID ); +VOID +Q35SmramAtDefaultSmbaseInitialization ( + VOID + ); + EFI_STATUS PublishPeiMemory ( VOID @@ -119,6 +124,8 @@ extern UINT32 mMaxCpuCount; extern UINT16 mHostBridgeDevId; +extern BOOLEAN mQ35SmramAtDefaultSmbase; + extern UINT32 mQemuUc32Base; #endif // _PLATFORM_PEI_H_INCLUDED_ diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c index 58b171fba1c8..2bc1c46dffc2 100644 --- a/OvmfPkg/PlatformPei/MemDetect.c +++ b/OvmfPkg/PlatformPei/MemDetect.c @@ -43,6 +43,8 @@ STATIC UINT32 mS3AcpiReservedMemorySize; STATIC UINT16 mQ35TsegMbytes; +BOOLEAN mQ35SmramAtDefaultSmbase; + UINT32 mQemuUc32Base; VOID @@ -90,6 +92,22 @@ Q35TsegMbytesInitialization ( } +VOID +Q35SmramAtDefaultSmbaseInitialization ( + VOID + ) +{ + RETURN_STATUS PcdStatus; + + ASSERT (mHostBridgeDevId == INTEL_Q35_MCH_DEVICE_ID); + + mQ35SmramAtDefaultSmbase = FALSE; + PcdStatus = PcdSetBoolS (PcdQ35SmramAtDefaultSmbase, + mQ35SmramAtDefaultSmbase); + ASSERT_RETURN_ERROR (PcdStatus); +} + + VOID QemuUc32BaseInitialization ( VOID diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c index ca6d37cb1549..6989712b0645 100644 --- a/OvmfPkg/PlatformPei/Platform.c +++ b/OvmfPkg/PlatformPei/Platform.c @@ -670,6 +670,7 @@ InitializePlatform ( if (FeaturePcdGet (PcdSmmSmramRequire)) { Q35BoardVerification (); Q35TsegMbytesInitialization (); + Q35SmramAtDefaultSmbaseInitialization (); } PublishPeiMemory (); -- 2.19.1.3.g30247aa5d201 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#47929): https://edk2.groups.io/g/devel/message/47929 Mute This Topic: https://groups.io/mt/34274940/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-