\r
EFI_CPU_INTERRUPT_HANDLER mExternalVectorTable[EXCEPTION_VECTOR_NUMBER];\r
\r
-///\r
-/// SMM CPU Save State Protocol instance\r
-///\r
-EFI_SMM_CPU_SAVE_STATE_PROTOCOL mSmmCpuSaveState = {\r
- NULL\r
-};\r
-\r
//\r
// SMM stack information\r
//\r
}\r
\r
//\r
- // Do below CPU things for native platform only\r
+ // Skip initialization if mAcpiCpuData is not valid\r
//\r
- if (!FeaturePcdGet(PcdFrameworkCompatibilitySupport)) {\r
+ if (mAcpiCpuData.NumberOfCpus > 0) {\r
//\r
- // Skip initialization if mAcpiCpuData is not valid\r
+ // First time microcode load and restore MTRRs\r
//\r
- if (mAcpiCpuData.NumberOfCpus > 0) {\r
- //\r
- // First time microcode load and restore MTRRs\r
- //\r
- EarlyInitializeCpu ();\r
- }\r
+ EarlyInitializeCpu ();\r
}\r
\r
//\r
SmmRelocateBases ();\r
\r
//\r
- // Do below CPU things for native platform only\r
+ // Skip initialization if mAcpiCpuData is not valid\r
//\r
- if (!FeaturePcdGet(PcdFrameworkCompatibilitySupport)) {\r
+ if (mAcpiCpuData.NumberOfCpus > 0) {\r
//\r
- // Skip initialization if mAcpiCpuData is not valid\r
+ // Restore MSRs for BSP and all APs\r
//\r
- if (mAcpiCpuData.NumberOfCpus > 0) {\r
- //\r
- // Restore MSRs for BSP and all APs\r
- //\r
- InitializeCpu ();\r
- }\r
+ InitializeCpu ();\r
}\r
\r
//\r
//\r
mAcpiCpuData.NumberOfCpus = 0;\r
\r
- //\r
- // If FrameworkCompatibilitySspport is enabled, then do not copy CPU S3 Data into SMRAM\r
- //\r
- if (FeaturePcdGet (PcdFrameworkCompatibilitySupport)) {\r
- goto Done;\r
- }\r
-\r
//\r
// If PcdCpuS3DataAddress was never set, then do not copy CPU S3 Data into SMRAM\r
//\r
\r
mSmmCpuPrivateData.SmmCoreEntryContext.CpuSaveStateSize = gSmmCpuPrivate->CpuSaveStateSize;\r
mSmmCpuPrivateData.SmmCoreEntryContext.CpuSaveState = gSmmCpuPrivate->CpuSaveState;\r
- mSmmCpuSaveState.CpuSaveState = (EFI_SMM_CPU_STATE **)gSmmCpuPrivate->CpuSaveState;\r
\r
//\r
// Allocate buffer for pointers to array in CPU_HOT_PLUG_DATA.\r
Status = InitializeSmmCpuServices (mSmmCpuHandle);\r
ASSERT_EFI_ERROR (Status);\r
\r
- if (FeaturePcdGet (PcdFrameworkCompatibilitySupport)) {\r
- //\r
- // Install Framework SMM Save State Protocol into UEFI protocol database for backward compatibility\r
- //\r
- Status = SystemTable->BootServices->InstallMultipleProtocolInterfaces (\r
- &gSmmCpuPrivate->SmmCpuHandle,\r
- &gEfiSmmCpuSaveStateProtocolGuid,\r
- &mSmmCpuSaveState,\r
- NULL\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
- //\r
- // The SmmStartupThisAp service in Framework SMST should always be non-null.\r
- // Update SmmStartupThisAp pointer in PI SMST here so that PI/Framework SMM thunk\r
- // can have it ready when constructing Framework SMST.\r
- //\r
- gSmst->SmmStartupThisAp = SmmStartupThisAp;\r
- }\r
-\r
//\r
// register SMM Ready To Lock Protocol notification\r
//\r
MdePkg/MdePkg.dec\r
MdeModulePkg/MdeModulePkg.dec\r
UefiCpuPkg/UefiCpuPkg.dec\r
- IntelFrameworkPkg/IntelFrameworkPkg.dec\r
\r
[LibraryClasses]\r
UefiDriverEntryPoint\r
gEfiSmmCpuProtocolGuid ## PRODUCES\r
gEfiSmmReadyToLockProtocolGuid ## NOTIFY\r
gEfiSmmCpuServiceProtocolGuid ## PRODUCES\r
- gEfiSmmCpuSaveStateProtocolGuid ## SOMETIMES_PRODUCES\r
\r
[Guids]\r
gEfiAcpiVariableGuid ## SOMETIMES_CONSUMES ## HOB # it is used for S3 boot.\r
gEfiAcpi10TableGuid ## SOMETIMES_CONSUMES ## SystemTable\r
\r
[FeaturePcd]\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport ## CONSUMES\r
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug ## CONSUMES\r
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp ## CONSUMES\r
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmEnableBspElection ## CONSUMES\r