Changeset 80460 in vbox for trunk/src/VBox
- Timestamp:
- Aug 28, 2019 8:43:07 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/EM.cpp
r80363 r80460 2005 2005 2006 2006 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 2007 /* 2008 * VMX Nested-guest APIC-write pending (can cause VM-exits). 2009 * Takes priority over even SMI and INIT signals. 2010 * See Intel spec. 29.4.3.2 "APIC-Write Emulation". 2011 */ 2012 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_APIC_WRITE)) 2013 { 2014 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitApicWrite(pVCpu)); 2015 if (rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE) 2007 if (VMCPU_FF_IS_ANY_SET(pVCpu, VMCPU_FF_VMX_APIC_WRITE | VMCPU_FF_VMX_MTF | VMCPU_FF_VMX_PREEMPT_TIMER)) 2008 { 2009 /* 2010 * VMX Nested-guest APIC-write pending (can cause VM-exits). 2011 * Takes priority over even SMI and INIT signals. 2012 * See Intel spec. 29.4.3.2 "APIC-Write Emulation". 2013 */ 2014 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_APIC_WRITE)) 2015 { 2016 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitApicWrite(pVCpu)); 2017 if (rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE) 2018 UPDATE_RC(); 2019 } 2020 2021 /* 2022 * VMX Nested-guest monitor-trap flag (MTF) VM-exit. 2023 * Takes priority over "Traps on the previous instruction". 2024 * See Intel spec. 6.9 "Priority Among Simultaneous Exceptions And Interrupts". 2025 */ 2026 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_MTF)) 2027 { 2028 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexit(pVCpu, VMX_EXIT_MTF, 0 /* uExitQual */)); 2029 Assert(rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE); 2016 2030 UPDATE_RC(); 2017 } 2018 2019 /* 2020 * VMX Nested-guest monitor-trap flag (MTF) VM-exit. 2021 * Takes priority over "Traps on the previous instruction". 2022 * See Intel spec. 6.9 "Priority Among Simultaneous Exceptions And Interrupts". 2023 */ 2024 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_MTF)) 2025 { 2026 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexit(pVCpu, VMX_EXIT_MTF, 0 /* uExitQual */)); 2027 Assert(rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE); 2028 UPDATE_RC(); 2029 } 2030 2031 /* 2032 * VMX Nested-guest preemption timer VM-exit. 2033 * Takes priority over NMI-window VM-exits. 2034 */ 2035 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_PREEMPT_TIMER)) 2036 { 2037 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitPreemptTimer(pVCpu)); 2038 if (rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE) 2039 UPDATE_RC(); 2031 } 2032 2033 /* 2034 * VMX Nested-guest preemption timer VM-exit. 2035 * Takes priority over NMI-window VM-exits. 2036 */ 2037 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_PREEMPT_TIMER)) 2038 { 2039 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitPreemptTimer(pVCpu)); 2040 if (rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE) 2041 UPDATE_RC(); 2042 } 2040 2043 } 2041 2044 #endif
Note:
See TracChangeset
for help on using the changeset viewer.