Changeset 52165 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Jul 24, 2014 11:54:58 AM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95207
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r52164 r52165 6837 6837 * @param pVCpu Pointer to the VMCPU. 6838 6838 */ 6839 static inthmR0VmxTrpmTrapToPendingEvent(PVMCPU pVCpu)6839 static void hmR0VmxTrpmTrapToPendingEvent(PVMCPU pVCpu) 6840 6840 { 6841 6841 Assert(TRPMHasTrap(pVCpu)); … … 6881 6881 } 6882 6882 else if (enmTrpmEvent == TRPM_HARDWARE_INT) 6883 {6884 #ifdef VBOX_STRICT6885 uint32_t uEFlags = CPUMGetGuestEFlags(pVCpu);6886 if (!(uEFlags & X86_EFL_IF))6887 {6888 Log4(("hmR0VmxTrpmTrapToPendingEvent: TRPM injecting an external interrupt when interrupts are disabled!?!"));6889 return VERR_VMX_IPE_5;6890 }6891 #endif6892 6883 u32IntInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_EXT_INT << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT); 6893 }6894 6884 else if (enmTrpmEvent == TRPM_SOFTWARE_INT) 6895 6885 u32IntInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_SW_INT << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT); … … 6904 6894 hmR0VmxSetPendingEvent(pVCpu, u32IntInfo, cbInstr, uErrCode, GCPtrFaultAddress); 6905 6895 STAM_COUNTER_DEC(&pVCpu->hm.s.StatInjectPendingReflect); 6906 return VINF_SUCCESS;6907 6896 } 6908 6897 … … 8472 8461 8473 8462 /* 8474 * Evaluate events as pending-for-injection into the guest. Toggling of force-flags here is safe as long as8475 * we update TRPM on premature exits to ring-3 before executing guest code. We must NOT restore th e force-flags.8463 * Evaluate events as pending-for-injection into the guest. Toggling of interrupt force-flags here is safe as long as 8464 * we update TRPM on premature exits to ring-3 before executing guest code. We must NOT restore those force-flags. 8476 8465 */ 8477 8466 if (TRPMHasTrap(pVCpu)) 8478 { 8479 rc = hmR0VmxTrpmTrapToPendingEvent(pVCpu); 8480 if (RT_FAILURE(rc)) 8481 return rc; 8482 } 8467 hmR0VmxTrpmTrapToPendingEvent(pVCpu); 8483 8468 else if (!pVCpu->hm.s.Event.fPending) 8484 8469 hmR0VmxEvaluatePendingEvent(pVCpu, pMixedCtx);
Note:
See TracChangeset
for help on using the changeset viewer.