Changeset 69161 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Oct 23, 2017 10:51:34 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r69159 r69161 4766 4766 if (pVmcbNstGstCache->u64InterceptCtrl & SVM_CTRL_INTERCEPT_VINTR) 4767 4767 HM_SVM_RET_VMEXIT_NESTED(pVCpu, uExitCode, uExitInfo1, uExitInfo2); 4768 return hmR0Svm NestedExitVIntr(pVCpu, pCtx, pSvmTransient);4768 return hmR0SvmExitUnexpected(pVCpu, pCtx, pSvmTransient); 4769 4769 } 4770 4770 … … 7364 7364 } 7365 7365 7366 7366 7367 /** 7367 7368 * Nested-guest \#VMEXIT handler for IRET (SVM_EXIT_VMRUN). Conditional \#VMEXIT. … … 7381 7382 return VINF_SUCCESS; 7382 7383 } 7383 7384 7385 /**7386 * \#VMEXIT handler for virtual interrupt (SVM_EXIT_VINTR). Conditional7387 * \#VMEXIT.7388 */7389 HMSVM_EXIT_DECL hmR0SvmNestedExitVIntr(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient)7390 {7391 HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();7392 7393 /* No virtual interrupts pending, we'll inject the current one/NMI before reentry. */7394 PSVMVMCB pVmcbNstGst = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);7395 pVmcbNstGst->ctrl.IntCtrl.n.u1VIrqPending = 0;7396 pVmcbNstGst->ctrl.IntCtrl.n.u8VIntrVector = 0;7397 7398 /* Indicate that we no longer need to #VMEXIT when the nested-guest is ready to receive interrupts/NMIs, it is now ready. */7399 pVmcbNstGst->ctrl.u64InterceptCtrl &= ~SVM_CTRL_INTERCEPT_VINTR;7400 pVmcbNstGst->ctrl.u64VmcbCleanBits &= ~(HMSVM_VMCB_CLEAN_INTERCEPTS | HMSVM_VMCB_CLEAN_TPR);7401 7402 /* Deliver the pending interrupt/NMI via hmR0SvmEvaluatePendingEventNested() and resume guest execution. */7403 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIntWindow);7404 return VINF_SUCCESS;7405 }7406 7407 7384 #endif /* VBOX_WITH_NESTED_HWVIRT */ 7408 7385
Note:
See TracChangeset
for help on using the changeset viewer.