- Timestamp:
- Apr 14, 2013 8:32:40 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r45545 r45546 4738 4738 typedef enum 4739 4739 { 4740 VMXREFLECTXCPT_XCPT, /* Reflect Idt-vectoring exception. */4741 VMXREFLECTXCPT_DF, /* Reflect a double-fault to the guest. */4742 VMXREFLECTXCPT_TF, /* Reflect a triple faultstate to the VMM. */4740 VMXREFLECTXCPT_XCPT, /* Reflect the exception to the guest or for further evaluation by VMM. */ 4741 VMXREFLECTXCPT_DF, /* Reflect the exception as a double-fault to the guest. */ 4742 VMXREFLECTXCPT_TF, /* Indicate a triple faulted state to the VMM. */ 4743 4743 VMXREFLECTXCPT_NONE /* Nothing to reflect. */ 4744 4744 } VMXREFLECTXCPT; … … 4754 4754 } 4755 4755 else if ( uExitVector == X86_XCPT_PF 4756 && ( hmR0VmxIsContributoryXcpt(uIdtVector) 4757 || uIdtVector == X86_XCPT_PF)) 4756 && uIdtVector == X86_XCPT_PF) 4758 4757 { 4759 4758 pVmxTransient->fVectoringPF = true; 4759 enmReflect = VMXREFLECTXCPT_XCPT; 4760 4760 } 4761 4761 else if ( hmR0VmxIsContributoryXcpt(uIdtVector) … … 4785 4785 } 4786 4786 4787 Assert(pVmxTransient->fVectoringPF == false || enmReflect == VMXREFLECTXCPT_NONE);4788 4787 switch (enmReflect) 4789 4788 { … … 8826 8825 /* A guest page-fault occurred during delivery of a page-fault. Inject #DF. */ 8827 8826 Log(("Pending #DF due to vectoring #PF.\n")); 8827 pVCpu->hm.s.Event.fPending = false; 8828 8828 rc = hmR0VmxSetPendingXcptDF(pVCpu, pMixedCtx); 8829 8829 } … … 8866 8866 #endif 8867 8867 8868 Assert(!pVmxTransient->fVectoringPF || pVCpu->hm.s.Event.fPending); 8869 8868 8870 rc = hmR0VmxSaveGuestState(pVCpu, pMixedCtx); 8869 8871 AssertRCReturn(rc, rc); … … 8898 8900 pMixedCtx->cr2 = pVmxTransient->uExitQualification; 8899 8901 hmR0VmxSetPendingEvent(pVCpu, VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntrInfo), 8900 pVmxTransient->cbInstr, uGstErrorCode, pMixedCtx->cr2);8902 0 /* cbInstr */, uGstErrorCode, pMixedCtx->cr2); 8901 8903 } 8902 8904 else … … 8904 8906 /* A guest page-fault occurred during delivery of a page-fault. Inject #DF. */ 8905 8907 TRPMResetTrap(pVCpu); 8908 pVCpu->hm.s.Event.fPending = false; 8906 8909 hmR0VmxSetPendingXcptDF(pVCpu, pMixedCtx); 8907 8910 Log(("#PF: Pending #DF due to vectoring #PF\n"));
Note:
See TracChangeset
for help on using the changeset viewer.