Changeset 74566 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Oct 2, 2018 6:01:50 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
r74563 r74566 5985 5985 if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fInvpcid) 5986 5986 return iemRaiseUndefinedOpcode(pVCpu); 5987 5988 /* When in VMX non-root mode and INVPCID is not enabled, it results in #UD. */ 5989 if ( IEM_VMX_IS_NON_ROOT_MODE(pVCpu) 5990 && !IEM_VMX_IS_PROCCTLS2_SET(pVCpu, VMX_PROC_CTLS2_INVPCID)) 5991 { 5992 Log(("invpcid: Not enabled for nested-guest execution -> #UD\n")); 5993 return iemRaiseUndefinedOpcode(pVCpu); 5994 } 5995 5987 5996 if (pVCpu->iem.s.uCpl != 0) 5988 5997 { … … 5990 5999 return iemRaiseGeneralProtectionFault0(pVCpu); 5991 6000 } 6001 5992 6002 if (IEM_IS_V86_MODE(pVCpu)) 5993 6003 { … … 5995 6005 return iemRaiseGeneralProtectionFault0(pVCpu); 5996 6006 } 6007 6008 /* 6009 * Check nested-guest intercept. 6010 * 6011 * INVPCID causes a VM-exit if "enable INVPCID" and "INVLPG exiting" are 6012 * both set. We have already checked the former earlier in this function. 6013 * 6014 * CPL checks take priority over VM-exit. 6015 * See Intel spec. "25.1.1 Relative Priority of Faults and VM Exits". 6016 */ 6017 /** @todo r=ramshankar: NSTVMX: I'm not entirely certain if V86 mode check has 6018 * higher or lower priority than a VM-exit, we assume higher for the time 6019 * being. */ 6020 if (IEM_VMX_IS_PROCCTLS_SET(pVCpu, VMX_PROC_CTLS_INVLPG_EXIT)) 6021 { 6022 Log(("invpcid: Guest intercept -> #VM-exit\n")); 6023 IEM_VMX_VMEXIT_INSTR_NEEDS_INFO_RET(pVCpu, VMX_EXIT_INVPCID, VMXINSTRID_NONE, cbInstr); 6024 } 6025 5997 6026 if (uInvpcidType > X86_INVPCID_TYPE_MAX_VALID) 5998 6027 {
Note:
See TracChangeset
for help on using the changeset viewer.