Changeset 79721 in vbox
- Timestamp:
- Jul 12, 2019 8:35:44 AM (5 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r79719 r79721 16988 16988 case VMX_EXIT_INT_INFO_TYPE_NMI: 16989 16989 { 16990 Assert(!pVCpu->hm.s.Event.fPending); /* NMIs cannot be caused duringdelivery on another event. */16990 Assert(!pVCpu->hm.s.Event.fPending); /* An NMI cannot be caused by the delivery on another event. */ 16991 16991 return hmR0VmxExitHostNmi(pVCpu, pVmxTransient->pVmcsInfo); 16992 16992 } … … 17039 17039 if (pVCpu->hm.s.Event.fPending) 17040 17040 { 17041 Assert(ExitEventInfo.uIdtVectoringInfo == pVCpu->hm.s.Event.u64IntInfo);17041 Assert(ExitEventInfo.uIdtVectoringInfo == pVCpu->hm.s.Event.u64IntInfo); 17042 17042 if (VMX_IDT_VECTORING_INFO_IS_ERROR_CODE_VALID(ExitEventInfo.uIdtVectoringInfo)) 17043 17043 Assert(ExitEventInfo.uIdtVectoringErrCode == pVCpu->hm.s.Event.u32ErrCode); … … 17057 17057 /* 17058 17058 * If the guest hypervisor is not intercepting an exception that caused a VM-exit directly, 17059 * forward it to the guest (for e.g, an instruction raises a #GP that causes a VM-exit but 17060 * the guest hypervisor is not intercept #GPs, inject #GP into the guest). 17059 * forward it to the guest (for e.g, an instruction raises a #GP that causes this VM-exit 17060 * despite the guest hypervisor not intercept #GPs, inject #GP into the nested-guest). 17061 * 17062 * If the guest hypervisor is not intercepting an exception that caused a VM-exit indirectly, 17063 * inject the secondary exception into the nested-guest (for e.g, an instruction raises a #GP, 17064 * delivery of which causes an #AC. We get a #AC VM-exit but the guest-hypervisor is not 17065 * intercepting #AC, then inject the #AC into the nested-guest rather than the original #GP). 17061 17066 */ 17062 if (!pVCpu->hm.s.Event.fPending) 17063 { 17064 hmR0VmxSetPendingEvent(pVCpu, VMX_ENTRY_INT_INFO_FROM_EXIT_INT_INFO(uExitIntInfo), pVmxTransient->cbInstr, 17065 pVmxTransient->uExitIntErrorCode, pVmxTransient->uExitQual); 17066 } 17067 pVCpu->hm.s.Event.fPending = false; 17068 hmR0VmxSetPendingEvent(pVCpu, VMX_ENTRY_INT_INFO_FROM_EXIT_INT_INFO(uExitIntInfo), pVmxTransient->cbInstr, 17069 pVmxTransient->uExitIntErrorCode, pVmxTransient->uExitQual); 17067 17070 return VINF_SUCCESS; 17068 17071 }
Note:
See TracChangeset
for help on using the changeset viewer.

