Changeset 8854 in vbox for trunk/src/VBox/VMM
- Timestamp:
- May 15, 2008 1:58:37 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp
r8853 r8854 366 366 if (!(pCtx->eflags.u32 & X86_EFL_IF)) 367 367 { 368 Log2(("Enable irq window exit!\n")); 369 /** @todo use virtual interrupt method to inject a pending irq; dispatched as soon as guest.IF is set. */ 370 pVMCB->ctrl.u32InterceptCtrl1 |= SVM_CTRL1_INTERCEPT_VINTR; 371 pVMCB->ctrl.IntCtrl.n.u1VIrqValid = 1; 372 pVMCB->ctrl.IntCtrl.n.u1IgnoreTPR = 1; /* ignore the priority in the TPR; just deliver it */ 373 pVMCB->ctrl.IntCtrl.n.u8VIrqVector = 0; /* don't care */ 368 if (!pVMCB->ctrl.IntCtrl.n.u1VIrqValid) 369 { 370 Log(("Enable irq window exit!\n")); 371 /** @todo use virtual interrupt method to inject a pending irq; dispatched as soon as guest.IF is set. */ 372 pVMCB->ctrl.u32InterceptCtrl1 |= SVM_CTRL1_INTERCEPT_VINTR; 373 pVMCB->ctrl.IntCtrl.n.u1VIrqValid = 1; 374 pVMCB->ctrl.IntCtrl.n.u1IgnoreTPR = 1; /* ignore the priority in the TPR; just deliver it */ 375 pVMCB->ctrl.IntCtrl.n.u8VIrqVector = 0; /* don't care */ 376 } 374 377 } 375 378 else … … 766 769 /* All done! Let's start VM execution. */ 767 770 STAM_PROFILE_ADV_START(&pVM->hwaccm.s.StatInGC, x); 768 769 771 if ( pVM->hwaccm.s.svm.fForceTLBFlush 770 772 || pVM->hwaccm.s.svm.fAlwaysFlushTLB) … … 1182 1184 case SVM_EXIT_VINTR: 1183 1185 /* A virtual interrupt is about to be delivered, which means IF=1. */ 1186 Log(("SVM_EXIT_VINTR IF=%d\n", pCtx->eflags.Bits.u1IF)); 1184 1187 pVMCB->ctrl.IntCtrl.n.u1VIrqValid = 0; 1185 1188 pVMCB->ctrl.IntCtrl.n.u1IgnoreTPR = 0; … … 1650 1653 { 1651 1654 /* Manually invalidate the page for the VM's TLB. */ 1655 Log(("SVMInvlpgA %VGv ASID=%d\n", addr, uASID)); 1652 1656 SVMInvlpgA(addr, uASID); 1653 1657 return VINF_SUCCESS;
Note:
See TracChangeset
for help on using the changeset viewer.