This field is simply pointed to the same AcpiNVS block in which UefiCpuPkg/CpuDxe maintains the most recent MTRR settings.
This way PiSmmCpuDxeSmm will stash the then most recent MTRR settings from AcpiNVS to SMRAM -- on the normal boot path, in SmmReadyToLockEventNotify() --, and on the S3 resume path, it will apply the MTRR settings to all APs directly from SMRAM. We can rely on PcdCpuMtrrTableAddress being set by the time we look at it, as our Depex already orders us behind UefiCpuPkg/CpuDxe through gEfiMpServiceProtocolGuid. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <[email protected]> --- OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf | 1 + OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c | 2 ++ OvmfPkg/OvmfPkgIa32.dsc | 2 ++ OvmfPkg/OvmfPkgIa32X64.dsc | 2 ++ OvmfPkg/OvmfPkgX64.dsc | 2 ++ 5 files changed, 9 insertions(+) diff --git a/OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf b/OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf index 7c8c90b..8b15bfb 100644 --- a/OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf +++ b/OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf @@ -93,6 +93,7 @@ [FixedPcd] [Pcd] gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize + gUefiCpuPkgTokenSpaceGuid.PcdCpuMtrrTableAddress gQuarkPortCpuTokenSpaceGuid.PcdCpuS3DataAddress gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdEbdaReservedMemorySize diff --git a/OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c b/OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c index a69c58c..e06d14a 100644 --- a/OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c +++ b/OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c @@ -252,6 +252,8 @@ SaveCpuS3Data ( mAcpiCpuData->StackAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) mExchangeInfo->StackStart; mAcpiCpuData->StackSize = PcdGet32 (PcdCpuApStackSize); + mAcpiCpuData->MtrrTable = + (EFI_PHYSICAL_ADDRESS) (UINTN) PcdGet64 (PcdCpuMtrrTableAddress); mAcpiCpuData->ApMachineCheckHandlerBase = mApMachineCheckHandlerBase; mAcpiCpuData->ApMachineCheckHandlerSize = mApMachineCheckHandlerSize; diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index 117f9b2..8ce7ab1 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -331,6 +331,7 @@ [PcdsFeatureFlag] !endif !if $(SMM_REQUIRE) == TRUE gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire|TRUE + gUefiCpuPkgTokenSpaceGuid.PcdCpuSyncMtrrToAcpiNvs|TRUE !endif ## Feature PCDs imported from @@ -412,6 +413,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 + gUefiCpuPkgTokenSpaceGuid.PcdCpuMtrrTableAddress|0 gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0 diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index 0391fe6..67a2be1 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -336,6 +336,7 @@ [PcdsFeatureFlag] !endif !if $(SMM_REQUIRE) == TRUE gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire|TRUE + gUefiCpuPkgTokenSpaceGuid.PcdCpuSyncMtrrToAcpiNvs|TRUE !endif ## Feature PCDs imported from @@ -418,6 +419,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 + gUefiCpuPkgTokenSpaceGuid.PcdCpuMtrrTableAddress|0 gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0 diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index c36fc85..bb228bb 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -336,6 +336,7 @@ [PcdsFeatureFlag] !endif !if $(SMM_REQUIRE) == TRUE gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire|TRUE + gUefiCpuPkgTokenSpaceGuid.PcdCpuSyncMtrrToAcpiNvs|TRUE !endif ## Feature PCDs imported from @@ -417,6 +418,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 + gUefiCpuPkgTokenSpaceGuid.PcdCpuMtrrTableAddress|0 gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0 -- 1.8.3.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

