Changeset 78887 in vbox for trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
- Timestamp:
- May 31, 2019 5:09:51 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r78885 r78887 445 445 static FNVMXEXITHANDLER hmR0VmxExitMonitorNested; 446 446 static FNVMXEXITHANDLER hmR0VmxExitPauseNested; 447 //static FNVMXEXITHANDLERNSRC hmR0VmxExitTprBelowThreshold;447 static FNVMXEXITHANDLERNSRC hmR0VmxExitTprBelowThresholdNested; 448 448 static FNVMXEXITHANDLER hmR0VmxExitApicAccessNested; 449 449 static FNVMXEXITHANDLER hmR0VmxExitXdtrAccessNested; … … 7698 7698 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 7699 7699 # if 0 7700 /** @todo NSTVMX: We handle each of these fields individually by passing it to IEM 7701 * VM-exit handlers. We might handle it differently when using the fast path. */ 7700 /** @todo NSTVMX: We handle most of these fields individually by passing it to IEM 7701 * VM-exit handlers as parameters. We would handle it differently when using 7702 * the fast path. */ 7702 7703 /* 7703 7704 * The hardware virtualization state currently consists of VMCS fields that may be … … 12675 12676 case VMX_EXIT_MOV_CRX: return hmR0VmxExitMovCRxNested(pVCpu, pVmxTransient); 12676 12677 case VMX_EXIT_INT_WINDOW: return hmR0VmxExitIntWindowNested(pVCpu, pVmxTransient); 12677 12678 case VMX_EXIT_TPR_BELOW_THRESHOLD: 12679 { 12680 /** @todo NSTVMX: TPR below threshold. */ 12681 return hmR0VmxExitErrUnexpected(pVCpu, pVmxTransient); 12682 } 12683 12678 case VMX_EXIT_TPR_BELOW_THRESHOLD: return hmR0VmxExitTprBelowThresholdNested(pVCpu, pVmxTransient); 12684 12679 case VMX_EXIT_MWAIT: return hmR0VmxExitMwaitNested(pVCpu, pVmxTransient); 12685 12680 case VMX_EXIT_MONITOR: return hmR0VmxExitMonitorNested(pVCpu, pVmxTransient); … … 12693 12688 12694 12689 case VMX_EXIT_MOV_DRX: return hmR0VmxExitMovDRxNested(pVCpu, pVmxTransient); 12690 case VMX_EXIT_RDPMC: return hmR0VmxExitRdpmcNested(pVCpu, pVmxTransient); 12691 12695 12692 case VMX_EXIT_GDTR_IDTR_ACCESS: 12696 12693 case VMX_EXIT_LDTR_TR_ACCESS: return hmR0VmxExitXdtrAccessNested(pVCpu, pVmxTransient); 12697 12694 12698 case VMX_EXIT_RDPMC: return hmR0VmxExitRdpmcNested(pVCpu, pVmxTransient);12699 12700 12695 case VMX_EXIT_VMREAD: 12701 12696 case VMX_EXIT_VMWRITE: return hmR0VmxExitVmreadVmwriteNested(pVCpu, pVmxTransient); … … 12703 12698 case VMX_EXIT_TRIPLE_FAULT: return hmR0VmxExitTripleFaultNested(pVCpu, pVmxTransient); 12704 12699 case VMX_EXIT_NMI_WINDOW: return hmR0VmxExitNmiWindowNested(pVCpu, pVmxTransient); 12700 12705 12701 case VMX_EXIT_ERR_INVALID_GUEST_STATE: 12702 { 12703 /** @todo NSTVMX: Invalid guest state. */ 12704 return hmR0VmxExitErrUnexpected(pVCpu, pVmxTransient); 12705 } 12706 12706 12707 12707 case VMX_EXIT_INIT_SIGNAL: … … 16305 16305 16306 16306 /** 16307 * Nested-guest VM-exit handler for when the TPR value is lowered below the 16308 * specified threshold (VMX_EXIT_TPR_BELOW_THRESHOLD). Conditional VM-exit. 16309 */ 16310 HMVMX_EXIT_NSRC_DECL hmR0VmxExitTprBelowThresholdNested(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient) 16311 { 16312 HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 16313 16314 if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_TPR_SHADOW)) 16315 return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, 0 /* uExitQual */); 16316 return hmR0VmxExitTprBelowThreshold(pVCpu, pVmxTransient); 16317 } 16318 16319 16320 /** 16307 16321 * Nested-guest VM-exit handler for APIC access (VMX_EXIT_APIC_ACCESS). Conditional 16308 16322 * VM-exit. … … 16353 16367 if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_RDTSC_EXIT)) 16354 16368 { 16369 Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_RDTSCP)); 16355 16370 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 16356 16371 AssertRCReturn(rc, rc);
Note:
See TracChangeset
for help on using the changeset viewer.