UefiCpuPkg/PiSmmCpuDxeSmm: Remove PSD layout assumptions
https://bugzilla.tianocore.org/show_bug.cgi?id=277 Remove dependency on layout of PROCESSOR_SMM_DESCRIPTOR everywhere possible. The only exception is the standard SMI entry handler template that is included with the PiSmmCpuDxeSmm module. This allows an instance of the SmmCpuFeaturesLib to provide alternate PROCESSOR_SMM_DESCRIPTOR structure layouts. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jeff Fan <jeff.fan@intel.com> Cc: Feng Tian <feng.tian@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
This commit is contained in:
@@ -1371,7 +1371,6 @@ InitializeMpServiceData (
|
||||
{
|
||||
UINT32 Cr3;
|
||||
UINTN Index;
|
||||
PROCESSOR_SMM_DESCRIPTOR *Psd;
|
||||
UINT8 *GdtTssTables;
|
||||
UINTN GdtTableStepSize;
|
||||
|
||||
@@ -1406,24 +1405,16 @@ InitializeMpServiceData (
|
||||
GdtTssTables = InitGdt (Cr3, &GdtTableStepSize);
|
||||
|
||||
//
|
||||
// Initialize PROCESSOR_SMM_DESCRIPTOR for each CPU
|
||||
// Install SMI handler for each CPU
|
||||
//
|
||||
for (Index = 0; Index < mMaxNumberOfCpus; Index++) {
|
||||
Psd = (PROCESSOR_SMM_DESCRIPTOR *)(VOID *)(UINTN)(mCpuHotPlugData.SmBase[Index] + SMM_PSD_OFFSET);
|
||||
CopyMem (Psd, &gcPsd, sizeof (gcPsd));
|
||||
Psd->SmmGdtPtr = (UINT64)(UINTN)(GdtTssTables + GdtTableStepSize * Index);
|
||||
Psd->SmmGdtSize = gcSmiGdtr.Limit + 1;
|
||||
|
||||
//
|
||||
// Install SMI handler
|
||||
//
|
||||
InstallSmiHandler (
|
||||
Index,
|
||||
(UINT32)mCpuHotPlugData.SmBase[Index],
|
||||
(VOID*)((UINTN)Stacks + (StackSize * Index)),
|
||||
StackSize,
|
||||
(UINTN)Psd->SmmGdtPtr,
|
||||
Psd->SmmGdtSize,
|
||||
(UINTN)(GdtTssTables + GdtTableStepSize * Index),
|
||||
gcSmiGdtr.Limit + 1,
|
||||
gcSmiIdtr.Base,
|
||||
gcSmiIdtr.Limit + 1,
|
||||
Cr3
|
||||
|
Reference in New Issue
Block a user