mirror of https://review.coreboot.org/STM.git
Fix guest XD enabling issue in test FRM.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
parent
957328a129
commit
6ddc89f7e7
|
@ -112,6 +112,7 @@ SetVmcsControlField (
|
|||
if (PinBasedCtls.Bits.VmxPreemptionTimer) {
|
||||
VmExitCtrls.Bits.SaveVmxPreemptionTimerValue = 1;
|
||||
}
|
||||
VmExitCtrls.Bits.SaveIA32_EFER = 1;
|
||||
|
||||
Data64 = AsmReadMsr64 (IA32_VMX_ENTRY_CTLS_MSR_INDEX);
|
||||
VmEntryCtrls.Uint32 = (UINT32)Data64 & (UINT32)RShiftU64 (Data64, 32);
|
||||
|
@ -235,9 +236,11 @@ SetVmcsGuestField (
|
|||
VmWrite64 (VMCS_64_GUEST_VMCS_LINK_PTR_INDEX, 0xffffffffffffffff);
|
||||
|
||||
if ((mGuestContextCommon.GuestContextPerCpu[mBspIndex].Cr0 & CR0_PG) == 0) {
|
||||
ASSERT(mGuestContextCommon.GuestContextPerCpu[Index].UnrestrictedGuest);
|
||||
// do not assert here, because it will be assigned later.
|
||||
//ASSERT(mGuestContextCommon.GuestContextPerCpu[Index].UnrestrictedGuest);
|
||||
VmWriteN(VMCS_N_GUEST_CR0_INDEX, VmReadN(VMCS_N_GUEST_CR0_INDEX) & (~CR0_PG));
|
||||
}
|
||||
|
||||
VmWrite64 (VMCS_64_GUEST_IA32_EFER_INDEX, mGuestContextCommon.GuestContextPerCpu[Index].EFER);
|
||||
return ;
|
||||
}
|
||||
|
|
|
@ -178,6 +178,8 @@ SetVmcsGuestApWakeupField (
|
|||
VmWriteN (VMCS_N_CONTROL_CR0_READ_SHADOW_INDEX, mGuestContextCommon.GuestContextPerCpu[Index].Cr0);
|
||||
VmWriteN (VMCS_N_CONTROL_CR4_READ_SHADOW_INDEX, mGuestContextCommon.GuestContextPerCpu[Index].Cr4 & ~CR4_VMXE & ~CR4_SMXE);
|
||||
|
||||
VmWrite64 (VMCS_64_GUEST_IA32_EFER_INDEX, mGuestContextCommon.GuestContextPerCpu[Index].EFER);
|
||||
|
||||
ZeroMem (&mGuestContextCommon.GuestContextPerCpu[Index].Register, sizeof(X86_REGISTER));
|
||||
AsmCpuidEx (
|
||||
CPUID_FEATURE_INFORMATION,
|
||||
|
|
|
@ -32,7 +32,7 @@ ReadMsrHandler (
|
|||
MsrIndex = (UINT32)mGuestContextCommon.GuestContextPerCpu[Index].Register.Rcx;
|
||||
switch (MsrIndex) {
|
||||
case IA32_EFER_MSR_INDEX:
|
||||
Data64 = mGuestContextCommon.GuestContextPerCpu[Index].EFER;
|
||||
Data64 = VmRead64 (VMCS_64_GUEST_IA32_EFER_INDEX);
|
||||
break;
|
||||
|
||||
case IA32_SYSENTER_CS_MSR_INDEX:
|
||||
|
|
Loading…
Reference in New Issue