Changeset 75997 in vbox for trunk/src/VBox
- Timestamp:
- Dec 6, 2018 6:45:19 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/EM.cpp
r75960 r75997 1695 1695 } 1696 1696 1697 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 1698 /* 1699 * VMX Nested-guest APIC-write pending (can cause VM-exits). 1700 * Takes priority over even SMI and INIT signals. 1701 * See Intel spec. 29.4.3.2 "APIC-Write Emulation". 1702 */ 1703 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_APIC_WRITE)) 1704 { 1705 rc = VBOXSTRICTRC_VAL(IEMExecVmxVmexitApicWrite(pVCpu)); 1706 Assert(rc != VINF_VMX_INTERCEPT_NOT_ACTIVE); 1707 } 1708 #endif 1709 1697 1710 #ifdef VBOX_WITH_RAW_MODE 1698 1711 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_CSAM_PENDING_ACTION)) … … 2111 2124 } 2112 2125 2113 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX2114 /*2115 * VMX Nested-guest APIC-write VM-exit.2116 * Takes priority over SMI, INIT signals.2117 * See Intel spec. 29.4.3.2 "APIC-Write Emulation".2118 */2119 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_APIC_WRITE))2120 {2121 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitApicWrite(pVCpu));2122 if (rc2 == VINF_VMX_INTERCEPT_NOT_ACTIVE)2123 rc2 = VINF_SUCCESS;2124 UPDATE_RC();2125 }2126 #endif2127 2128 2126 /** @todo SMIs. If we implement SMIs, this is where they will have to be 2129 2127 * delivered. */ … … 2195 2193 if (fGif) 2196 2194 { 2197 /* In VMX, virtual interrupt takes priority over physical interrupts. */ 2195 /* 2196 * With VMX, virtual interrupts takes priority over physical interrupts. 2197 * With SVM, physical interrupts takes priority over virtual interrupts. 2198 */ 2198 2199 if ( VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INTERRUPT_NESTED_GUEST) 2199 2200 && CPUMIsGuestInVmxNonRootMode(&pVCpu->cpum.GstCtx) … … 2203 2204 rc2 = VINF_NO_CHANGE; 2204 2205 } 2205 /* In SVM, physical interrupts take priority over virtual interrupts. */2206 2206 else if ( VMCPU_FF_IS_ANY_SET(pVCpu, VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC) 2207 2207 && CPUMIsGuestPhysIntrEnabled(pVCpu)) … … 2918 2918 2919 2919 if (VMCPU_FF_IS_ANY_SET(pVCpu, VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC 2920 | VMCPU_FF_INTERRUPT_NESTED_GUEST 2920 2921 | VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_UNHALT)) 2921 2922 {
Note:
See TracChangeset
for help on using the changeset viewer.