Changeset 77578 in vbox for trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
- Timestamp:
- Mar 6, 2019 10:02:07 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 129194
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r77577 r77578 9014 9014 } 9015 9015 9016 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 9017 /** 9018 * Runs the nested-guest code using VT-x the normal way. 9019 * 9020 * @returns VBox status code. 9021 * @param pVCpu The cross context virtual CPU structure. 9022 * @sa hmR0VmxRunGuestCodeNormal. 9023 */ 9024 static VBOXSTRICTRC hmR0VmxRunGuestCodeNested(PVMCPU pVCpu) 9025 { 9026 RT_NOREF(pVCpu); 9027 return VERR_NOT_IMPLEMENTED; 9028 } 9029 #endif /* VBOX_WITH_NESTED_HWVIRT_VMX */ 9016 9030 9017 9031 … … 10344 10358 10345 10359 VBOXSTRICTRC rcStrict; 10346 if ( !pVCpu->hm.s.fUseDebugLoop 10347 && (!VBOXVMM_ANY_PROBES_ENABLED() || !hmR0VmxAnyExpensiveProbesEnabled()) 10348 && !DBGFIsStepping(pVCpu) 10349 && !pVCpu->CTX_SUFF(pVM)->dbgf.ro.cEnabledInt3Breakpoints) 10350 rcStrict = hmR0VmxRunGuestCodeNormal(pVCpu); 10360 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 10361 bool const fInNestedGuestMode = CPUMIsGuestInVmxNonRootMode(pCtx); 10362 #else 10363 bool const fInNestedGuestMode = false; 10364 #endif 10365 if (!fInNestedGuestMode) 10366 { 10367 if ( !pVCpu->hm.s.fUseDebugLoop 10368 && (!VBOXVMM_ANY_PROBES_ENABLED() || !hmR0VmxAnyExpensiveProbesEnabled()) 10369 && !DBGFIsStepping(pVCpu) 10370 && !pVCpu->CTX_SUFF(pVM)->dbgf.ro.cEnabledInt3Breakpoints) 10371 rcStrict = hmR0VmxRunGuestCodeNormal(pVCpu); 10372 else 10373 rcStrict = hmR0VmxRunGuestCodeDebug(pVCpu); 10374 } 10375 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 10351 10376 else 10352 rcStrict = hmR0VmxRunGuestCodeDebug(pVCpu); 10377 rcStrict = VINF_VMX_VMLAUNCH_VMRESUME; 10378 10379 if (rcStrict == VINF_VMX_VMLAUNCH_VMRESUME) 10380 rcStrict = hmR0VmxRunGuestCodeNested(pVCpu); 10381 #endif 10353 10382 10354 10383 if (rcStrict == VERR_EM_INTERPRETER) … … 13536 13565 VBOXSTRICTRC rcStrict = IEMExecDecodedVmlaunchVmresume(pVCpu, pVmxTransient->cbInstr, VMXINSTRID_VMLAUNCH); 13537 13566 if (RT_LIKELY(rcStrict == VINF_SUCCESS)) 13567 { 13568 rcStrict = VINF_VMX_VMLAUNCH_VMRESUME; 13538 13569 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_ALL_GUEST); 13570 } 13539 13571 Assert(rcStrict != VINF_IEM_RAISED_XCPT); 13540 13572 return rcStrict; … … 13666 13698 VBOXSTRICTRC rcStrict = IEMExecDecodedVmlaunchVmresume(pVCpu, pVmxTransient->cbInstr, VMXINSTRID_VMRESUME); 13667 13699 if (RT_LIKELY(rcStrict == VINF_SUCCESS)) 13700 { 13701 rcStrict = VINF_VMX_VMLAUNCH_VMRESUME; 13668 13702 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_ALL_GUEST); 13703 } 13669 13704 Assert(rcStrict != VINF_IEM_RAISED_XCPT); 13670 13705 return rcStrict;
Note:
See TracChangeset
for help on using the changeset viewer.