Changeset 46871 in vbox for trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
- Timestamp:
- Jun 28, 2013 4:25:06 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r46850 r46871 4711 4711 * @param GCPtrFaultAddress The fault-address (CR2) in case it's a 4712 4712 * page-fault. 4713 * 4714 * @remarks Statistics counter assumes this is a guest event being injected or 4715 * re-injected into the guest, i.e. 'StatInjectPendingReflect' is 4716 * always incremented. 4713 4717 */ 4714 4718 DECLINLINE(void) hmR0VmxSetPendingEvent(PVMCPU pVCpu, uint32_t u32IntrInfo, uint32_t cbInstr, uint32_t u32ErrCode, … … 4721 4725 pVCpu->hm.s.Event.cbInstr = cbInstr; 4722 4726 pVCpu->hm.s.Event.GCPtrFaultAddress = GCPtrFaultAddress; 4727 4728 STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectPendingReflect); 4723 4729 } 4724 4730 … … 4858 4864 Log4(("IDT: vcpu[%RU32] Pending vectoring event %#RX64 Err=%#RX32\n", pVCpu->idCpu, 4859 4865 pVCpu->hm.s.Event.u64IntrInfo, pVCpu->hm.s.Event.u32ErrCode)); 4866 4860 4867 break; 4861 4868 } … … 4867 4874 Log4(("IDT: vcpu[%RU32] Pending vectoring #DF %#RX64 uIdtVector=%#x uExitVector=%#x\n", pVCpu->idCpu, 4868 4875 pVCpu->hm.s.Event.u64IntrInfo, uIdtVector, uExitVector)); 4876 4869 4877 break; 4870 4878 } … … 5798 5806 Log4(("TRPM->HM event: u32IntrInfo=%#RX32 enmTrpmEvent=%d cbInstr=%u uErrCode=%#RX32 GCPtrFaultAddress=%#RGv\n", 5799 5807 u32IntrInfo, enmTrpmEvent, cbInstr, uErrCode, GCPtrFaultAddress)); 5808 5800 5809 hmR0VmxSetPendingEvent(pVCpu, u32IntrInfo, cbInstr, uErrCode, GCPtrFaultAddress); 5810 STAM_COUNTER_DEC(&pVCpu->hm.s.StatInjectPendingReflect); 5801 5811 } 5802 5812 … … 6096 6106 AssertRCReturn(rc, rc); 6097 6107 pVCpu->hm.s.Event.fPending = false; 6098 STAM_COUNTER_INC(&pVCpu->hm.s.StatIntReinject); 6108 6109 #ifdef VBOX_WITH_STATISTICS 6110 if (uIntrType == VMX_EXIT_INTERRUPTION_INFO_TYPE_EXT_INT) 6111 STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectInterrupt); 6112 else 6113 STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt); 6114 #endif 6099 6115 } 6100 6116 else … … 6114 6130 AssertRCReturn(rc, rc); 6115 6131 VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_INTERRUPT_NMI); 6132 6133 STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectXcpt); 6116 6134 } 6117 6135 else … … 6137 6155 rc = hmR0VmxInjectEventVmcs(pVCpu, pMixedCtx, u32IntrInfo, 0 /* cbInstr */, 0 /* u32ErrCode */, 6138 6156 0 /* GCPtrFaultAddress */, &uIntrState); 6139 STAM_COUNTER_INC(&pVCpu->hm.s.StatIntInject); 6157 6158 STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectInterrupt); 6140 6159 } 6141 6160 else … … 8717 8736 return VERR_EM_INTERPRETER; 8718 8737 } 8738 8719 8739 hmR0VmxSetPendingEvent(pVCpu, VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntrInfo), 8720 8740 pVmxTransient->cbInstr, pVmxTransient->uExitIntrErrorCode, 0 /* GCPtrFaultAddress */);
Note:
See TracChangeset
for help on using the changeset viewer.