Changeset 78656 in vbox for trunk/src/VBox
- Timestamp:
- May 22, 2019 11:17:54 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r78650 r78656 12794 12794 case VMX_EXIT_XCPT_OR_NMI: 12795 12795 case VMX_EXIT_MOV_CRX: 12796 12796 12797 case VMX_EXIT_EXT_INT: 12798 { 12799 /* We shouldn't direct physical interrupts to the nested-guest. */ 12800 rcStrict = hmR0VmxExitExtInt(pVCpu, pVmxTransient); 12801 break; 12802 } 12803 12797 12804 case VMX_EXIT_INT_WINDOW: 12798 12805 case VMX_EXIT_TPR_BELOW_THRESHOLD: 12799 12806 case VMX_EXIT_MWAIT: 12800 12807 case VMX_EXIT_MONITOR: 12808 12801 12809 case VMX_EXIT_PAUSE: 12810 { 12811 /* The CPU would have already performed the necessary CPL checks for PAUSE-loop exiting. */ 12812 /** @todo NSTVMX: Think about this more. Does the outer guest need to intercept 12813 * PAUSE when executing a nested-guest? If it does not, we would not need 12814 * to check for the intercepts here. Just call VM-exit... */ 12815 if ( CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_PAUSE_EXIT) 12816 || CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_PAUSE_LOOP_EXIT)) 12817 { 12818 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 12819 AssertRCReturn(rc, rc); 12820 12821 VMXVEXITINFO ExitInfo; 12822 RT_ZERO(ExitInfo); 12823 ExitInfo.uReason = uExitReason; 12824 ExitInfo.cbInstr = pVmxTransient->cbInstr; 12825 rcStrict = IEMExecVmxVmexitInstr(pVCpu, uExitReason, pVmxTransient->cbInstr); 12826 } 12827 else 12828 rcStrict = hmR0VmxExitPause(pVCpu, pVmxTransient); 12829 break; 12830 } 12831 12802 12832 case VMX_EXIT_PREEMPT_TIMER: 12803 12833 case VMX_EXIT_MOV_DRX:
Note:
See TracChangeset
for help on using the changeset viewer.