mirror of https://github.com/acidanthera/audk.git
UefiCpuPkg/MpInitLib: fix register restore issue in AP wakeup
The conflict issues are introduced by Stack Guard feature enabled for PEI. The first is CR0 which should be restored after CR3 and CR4. Another is TR which should not be passed from BSP to AP during init phase. Cc: Eric Dong <eric.dong@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: "Ware, Ryan R" <ryan.r.ware@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang <jian.j.wang@intel.com> Regression-tested-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
This commit is contained in:
parent
fc0e7fd5e8
commit
e09b6b5953
|
@ -217,9 +217,9 @@ RestoreVolatileRegisters (
|
|||
CPUID_VERSION_INFO_EDX VersionInfoEdx;
|
||||
IA32_TSS_DESCRIPTOR *Tss;
|
||||
|
||||
AsmWriteCr0 (VolatileRegisters->Cr0);
|
||||
AsmWriteCr3 (VolatileRegisters->Cr3);
|
||||
AsmWriteCr4 (VolatileRegisters->Cr4);
|
||||
AsmWriteCr0 (VolatileRegisters->Cr0);
|
||||
|
||||
if (IsRestoreDr) {
|
||||
AsmCpuid (CPUID_VERSION_INFO, NULL, NULL, NULL, &VersionInfoEdx.Uint32);
|
||||
|
@ -1558,7 +1558,7 @@ MpInitLibInitialize (
|
|||
ApLoopMode = GetApLoopMode (&MonitorFilterSize);
|
||||
|
||||
//
|
||||
// Save BSP's Control registers for APs
|
||||
// Save BSP's Control registers for APs.
|
||||
//
|
||||
SaveVolatileRegisters (&VolatileRegisters);
|
||||
|
||||
|
@ -1656,6 +1656,10 @@ MpInitLibInitialize (
|
|||
//
|
||||
CopyMem ((VOID *)ApIdtBase, (VOID *)VolatileRegisters.Idtr.Base, VolatileRegisters.Idtr.Limit + 1);
|
||||
VolatileRegisters.Idtr.Base = ApIdtBase;
|
||||
//
|
||||
// Don't pass BSP's TR to APs to avoid AP init failure.
|
||||
//
|
||||
VolatileRegisters.Tr = 0;
|
||||
CopyMem (&CpuMpData->CpuData[0].VolatileRegisters, &VolatileRegisters, sizeof (VolatileRegisters));
|
||||
//
|
||||
// Set BSP basic information
|
||||
|
|
Loading…
Reference in New Issue