Changeset 79626 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Jul 9, 2019 4:43:00 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r79601 r79626 14804 14804 { 14805 14805 if (rcStrict == VINF_HM_DOUBLE_FAULT) 14806 { 14807 Assert(pVCpu->hm.s.Event.fPending); 14806 14808 rcStrict = VINF_SUCCESS; 14809 } 14807 14810 STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExitXcptNmi, y3); 14808 14811 return rcStrict; … … 16198 16201 { 16199 16202 if (rcStrict1 == VINF_HM_DOUBLE_FAULT) 16203 { 16204 Assert(pVCpu->hm.s.Event.fPending); 16200 16205 rcStrict1 = VINF_SUCCESS; 16206 } 16201 16207 return rcStrict1; 16202 16208 } … … 16361 16367 { 16362 16368 /* 16363 * If event delivery causes an EPT misconfig (MMIO), go back to instruction emulation. Otherwise, 16364 * injecting the original event would most likely cause the same EPT misconfig VM-exit again. 16369 * In the unlikely case where delivering an event causes an EPT misconfig (MMIO), go back to 16370 * instruction emulation to inject the original event. Otherwise, injecting the original event 16371 * using hardware-assisted VMX would would trigger the same EPT misconfig VM-exit again. 16365 16372 */ 16366 16373 if (RT_UNLIKELY(pVCpu->hm.s.Event.fPending)) … … 16448 16455 if (RT_LIKELY(rcStrict1 == VINF_SUCCESS)) 16449 16456 { 16450 /* In the unlikely case that the EPT violation happened as a result of delivering an event, log it. */ 16451 if (RT_UNLIKELY(pVCpu->hm.s.Event.fPending)) 16452 Log4Func(("EPT violation with an event pending u64IntInfo=%#RX64\n", pVCpu->hm.s.Event.u64IntInfo)); 16457 /* 16458 * If delivery of an event causes an EPT violation (true nested #PF and not MMIO), 16459 * we shall resolve the nested #PF and re-inject the original event. 16460 */ 16461 if (pVCpu->hm.s.Event.fPending) 16462 STAM_COUNTER_INC(&pVCpu->hm.s.StatInjectPendingNPF); 16453 16463 } 16454 16464 else 16455 16465 { 16456 16466 if (rcStrict1 == VINF_HM_DOUBLE_FAULT) 16467 { 16468 Assert(pVCpu->hm.s.Event.fPending); 16457 16469 rcStrict1 = VINF_SUCCESS; 16470 } 16458 16471 return rcStrict1; 16459 16472 }
Note:
See TracChangeset
for help on using the changeset viewer.