- Timestamp:
- Apr 17, 2013 4:31:27 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r45585 r45590 4711 4711 if (uIntType == VMX_IDT_VECTORING_INFO_TYPE_HW_XCPT) 4712 4712 { 4713 if ( hmR0VmxIsBenignXcpt(uIdtVector) 4714 || hmR0VmxIsBenignXcpt(uExitVector)) 4715 { 4716 enmReflect = VMXREFLECTXCPT_XCPT; 4717 } 4718 else if ( hmR0VmxIsContributoryXcpt(uIdtVector) 4713 enmReflect = VMXREFLECTXCPT_XCPT; 4714 if ( hmR0VmxIsContributoryXcpt(uIdtVector) 4719 4715 && uExitVector == X86_XCPT_PF) 4720 4716 { 4721 enmReflect = VMXREFLECTXCPT_XCPT;4722 4717 GCPtrFaultAddress = pMixedCtx->cr2; 4723 4718 Log(("IDT: Contributory #PF uCR2=%#RGv\n", pMixedCtx->cr2)); … … 4727 4722 { 4728 4723 pVmxTransient->fVectoringPF = true; 4729 enmReflect = VMXREFLECTXCPT_XCPT;4730 4724 GCPtrFaultAddress = pMixedCtx->cr2; 4731 4725 Log(("IDT: Vectoring #PF uCR2=%#RGv\n", pMixedCtx->cr2)); … … 4740 4734 else if (uIdtVector == X86_XCPT_DF) 4741 4735 enmReflect = VMXREFLECTXCPT_TF; 4742 else4743 AssertMsgFailed(("Invalid!\n"));4744 4736 } 4745 4737 else if ( uIntType != VMX_IDT_VECTORING_INFO_TYPE_SW_INT … … 5238 5230 5239 5231 rc |= VMXReadVmcs32(idxAccess, &u32Val); 5240 pSelReg->Attr.u 5232 pSelReg->Attr.u = u32Val; 5241 5233 AssertRCReturn(rc, rc); 5242 5234 … … 7661 7653 && pMixedCtx->ecx <= MSR_IA32_X2APIC_END) 7662 7654 { 7655 Assert(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_APIC_STATE); 7663 7656 pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_VMX_GUEST_APIC_STATE; 7664 7657 } … … 8320 8313 PVM pVM = pVCpu->CTX_SUFF(pVM); 8321 8314 VBOXSTRICTRC rc2 = PGMR0Trap0eHandlerNPMisconfig(pVM, pVCpu, PGMMODE_EPT, CPUMCTX2CORE(pMixedCtx), GCPhys, UINT32_MAX); 8315 rc = VBOXSTRICTRC_VAL(rc2); 8322 8316 Log(("EPT misconfig at %#RX64 RIP=%#RX64 rc=%d\n", GCPhys, pMixedCtx->rip, rc)); 8323 rc = VBOXSTRICTRC_VAL(rc2);8324 8317 if ( rc == VINF_SUCCESS 8325 8318 || rc == VERR_PAGE_TABLE_NOT_PRESENT
Note:
See TracChangeset
for help on using the changeset viewer.