summaryrefslogtreecommitdiffstats
path: root/UefiCpuPkg/PiSmmCpuDxeSmm
diff options
context:
space:
mode:
authorMichael Kinney <michael.d.kinney@intel.com>2016-12-05 16:53:33 -0800
committerMichael Kinney <michael.d.kinney@intel.com>2016-12-06 23:26:31 -0800
commita6b7bc7a87bc7690f7f5fd48cfcd79f14676896e (patch)
treeac6b8213aef8da1857db3eea496c7eb4e646d742 /UefiCpuPkg/PiSmmCpuDxeSmm
parente4435f710cea2d2f10cd7343d545920867780086 (diff)
downloaddevice_linaro_bootloader_edk2-a6b7bc7a87bc7690f7f5fd48cfcd79f14676896e.tar.gz
device_linaro_bootloader_edk2-a6b7bc7a87bc7690f7f5fd48cfcd79f14676896e.tar.bz2
device_linaro_bootloader_edk2-a6b7bc7a87bc7690f7f5fd48cfcd79f14676896e.zip
UefiCpuPkg/PiSmmCpuDxeSmm: Always initialze PSD
The following commit moved the initialization of the default PROCESSOR_SMM_DESCRIPTOR from MpService.c to SmramSaveState.c and made this initialization conditional on the value returned by the SmmCpuFeaturesGetSmiHandlerSize() library function. https://github.com/tianocore/edk2/commit/f12367a0b1de7838f1cb8e0839e168ed7b862333 This changed the behavior of the PiSmmCpuDxeSmm module. The initialization of the PROCESSOR_SMM_DESCRIPTOR is moved before the call to SmmCpuFeaturesGetSmiHandlerSize() to preserve the previous behavior. 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>
Diffstat (limited to 'UefiCpuPkg/PiSmmCpuDxeSmm')
-rw-r--r--UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c b/UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c
index c37e9e830..b4bc0ec6a 100644
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c
+++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c
@@ -687,6 +687,14 @@ InstallSmiHandler (
{
PROCESSOR_SMM_DESCRIPTOR *Psd;
+ //
+ // Initialize PROCESSOR_SMM_DESCRIPTOR
+ //
+ Psd = (PROCESSOR_SMM_DESCRIPTOR *)(VOID *)(UINTN)(SmBase + SMM_PSD_OFFSET);
+ CopyMem (Psd, &gcPsd, sizeof (gcPsd));
+ Psd->SmmGdtPtr = (UINT64)GdtBase;
+ Psd->SmmGdtSize = (UINT32)GdtSize;
+
if (SmmCpuFeaturesGetSmiHandlerSize () != 0) {
//
// Install SMI handler provided by library
@@ -706,14 +714,6 @@ InstallSmiHandler (
}
//
- // Initialize PROCESSOR_SMM_DESCRIPTOR
- //
- Psd = (PROCESSOR_SMM_DESCRIPTOR *)(VOID *)(UINTN)(SmBase + SMM_PSD_OFFSET);
- CopyMem (Psd, &gcPsd, sizeof (gcPsd));
- Psd->SmmGdtPtr = (UINT64)GdtBase;
- Psd->SmmGdtSize = (UINT32)GdtSize;
-
- //
// Initialize values in template before copy
//
gSmiStack = (UINT32)((UINTN)SmiStack + StackSize - sizeof (UINTN));