Changeset 77610 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Mar 8, 2019 10:31:35 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 129238
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/EM.cpp
r77575 r77610 1697 1697 } 1698 1698 1699 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX1700 /*1701 * VMX Nested-guest APIC-write pending (can cause VM-exits).1702 * Takes priority over even SMI and INIT signals.1703 * See Intel spec. 29.4.3.2 "APIC-Write Emulation".1704 */1705 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_APIC_WRITE))1706 {1707 rc = VBOXSTRICTRC_VAL(IEMExecVmxVmexitApicWrite(pVCpu));1708 Assert(rc != VINF_VMX_INTERCEPT_NOT_ACTIVE);1709 }1710 #endif1711 1712 1699 #ifdef VBOX_WITH_RAW_MODE 1713 1700 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_CSAM_PENDING_ACTION)) … … 2152 2139 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 2153 2140 /* 2141 * VMX Nested-guest APIC-write pending (can cause VM-exits). 2142 * Takes priority over even SMI and INIT signals. 2143 * See Intel spec. 29.4.3.2 "APIC-Write Emulation". 2144 */ 2145 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_APIC_WRITE)) 2146 { 2147 rc = VBOXSTRICTRC_VAL(IEMExecVmxVmexitApicWrite(pVCpu)); 2148 Assert(rc != VINF_VMX_INTERCEPT_NOT_ACTIVE); 2149 } 2150 2151 /* 2154 2152 * VMX Nested-guest monitor-trap flag (MTF) VM-exit. 2155 2153 * Takes priority over "Traps on the previous instruction". … … 2165 2163 /* 2166 2164 * VMX Nested-guest preemption timer VM-exit. 2167 * Takes priority over non-maskable interrupts (NMIs).2165 * Takes priority over NMI-window VM-exits. 2168 2166 */ 2169 2167 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_PREEMPT_TIMER)) … … 2172 2170 if (rc2 == VINF_VMX_INTERCEPT_NOT_ACTIVE) 2173 2171 rc2 = VINF_SUCCESS; 2172 UPDATE_RC(); 2173 } 2174 2175 /* 2176 * VMX NMI-window VM-exit. 2177 * Takes priority over non-maskable interrupts (NMIs). 2178 */ 2179 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_NMI_WINDOW)) 2180 { 2181 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitNmiWindow(pVCpu)); 2182 Assert(rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE); 2174 2183 UPDATE_RC(); 2175 2184 } … … 2397 2406 /* check that we got them all */ 2398 2407 AssertCompile(VM_FF_HIGH_PRIORITY_PRE_MASK == (VM_FF_TM_VIRTUAL_SYNC | VM_FF_DBGF | VM_FF_CHECK_VM_STATE | VM_FF_DEBUG_SUSPEND | VM_FF_PGM_NEED_HANDY_PAGES | VM_FF_PGM_NO_MEMORY | VM_FF_EMT_RENDEZVOUS)); 2399 AssertCompile(VMCPU_FF_HIGH_PRIORITY_PRE_MASK == (VMCPU_FF_TIMER | VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_UPDATE_APIC | VMCPU_FF_INTERRUPT_PIC | VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL | VMCPU_FF_INHIBIT_INTERRUPTS | VMCPU_FF_DBGF | VMCPU_FF_INTERRUPT_NESTED_GUEST | VMCPU_FF_VMX_MTF | VM _WHEN_RAW_MODE(VMCPU_FF_SELM_SYNC_TSS | VMCPU_FF_TRPM_SYNC_IDT | VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT, 0)));2408 AssertCompile(VMCPU_FF_HIGH_PRIORITY_PRE_MASK == (VMCPU_FF_TIMER | VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_UPDATE_APIC | VMCPU_FF_INTERRUPT_PIC | VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL | VMCPU_FF_INHIBIT_INTERRUPTS | VMCPU_FF_DBGF | VMCPU_FF_INTERRUPT_NESTED_GUEST | VMCPU_FF_VMX_MTF | VMCPU_FF_VMX_APIC_WRITE | VMCPU_FF_VMX_PREEMPT_TIMER | VMCPU_FF_VMX_INT_WINDOW | VMCPU_FF_VMX_NMI_WINDOW | VM_WHEN_RAW_MODE(VMCPU_FF_SELM_SYNC_TSS | VMCPU_FF_TRPM_SYNC_IDT | VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT, 0))); 2400 2409 } 2401 2410
Note:
See TracChangeset
for help on using the changeset viewer.