Changeset 46492 in vbox
- Timestamp:
- Jun 11, 2013 1:28:32 PM (11 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r46472 r46492 5655 5655 5656 5656 /* Pending HM CR3 sync. */ 5657 if (VMCPU_FF_IS_ SET(pVCpu, VMCPU_FF_HM_UPDATE_CR3))5657 if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_HM_UPDATE_CR3)) 5658 5658 { 5659 5659 rc = PGMUpdateCR3(pVCpu, pMixedCtx->cr3); 5660 5660 Assert(rc == VINF_SUCCESS || rc == VINF_PGM_SYNC_CR3); 5661 Assert(!VMCPU_FF_IS_ SET(pVCpu, VMCPU_FF_HM_UPDATE_CR3));5661 Assert(!VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_HM_UPDATE_CR3)); 5662 5662 } 5663 5663 5664 5664 /* Pending HM PAE PDPEs. */ 5665 if (VMCPU_FF_IS_ SET(pVCpu, VMCPU_FF_HM_UPDATE_PAE_PDPES))5665 if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_HM_UPDATE_PAE_PDPES)) 5666 5666 { 5667 5667 rc = PGMGstUpdatePaePdpes(pVCpu, &pVCpu->hm.s.aPdpes[0]); 5668 5668 AssertRC(rc); 5669 Assert(!VMCPU_FF_IS_ SET(pVCpu, VMCPU_FF_HM_UPDATE_PAE_PDPES));5669 Assert(!VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_HM_UPDATE_PAE_PDPES)); 5670 5670 } 5671 5671 … … 5728 5728 * @param pVCpu Pointer to the VMCPU. 5729 5729 */ 5730 static void hmR0VmxT RPMTrapToPendingEvent(PVMCPU pVCpu)5730 static void hmR0VmxTrpmTrapToPendingEvent(PVMCPU pVCpu) 5731 5731 { 5732 5732 Assert(TRPMHasTrap(pVCpu)); … … 5773 5773 else if (enmTrpmEvent == TRPM_HARDWARE_INT) 5774 5774 { 5775 if (uVector != X86_XCPT_NMI) 5775 if (uVector == X86_XCPT_NMI) 5776 u32IntrInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_NMI << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT); 5777 else 5776 5778 u32IntrInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_EXT_INT << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT); 5777 else5778 u32IntrInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_NMI << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT);5779 5779 } 5780 5780 else if (enmTrpmEvent == TRPM_SOFTWARE_INT) … … 5797 5797 * @param pvCpu Pointer to the VMCPU. 5798 5798 */ 5799 static void hmR0VmxPendingEventToT RPMTrap(PVMCPU pVCpu)5799 static void hmR0VmxPendingEventToTrpmTrap(PVMCPU pVCpu) 5800 5800 { 5801 5801 Assert(pVCpu->hm.s.Event.fPending); … … 5837 5837 if (fErrorCodeValid) 5838 5838 TRPMSetErrorCode(pVCpu, uErrorCode); 5839 5839 5840 if ( uVectorType == VMX_IDT_VECTORING_INFO_TYPE_HW_XCPT 5840 5841 && uVector == X86_XCPT_PF) … … 5952 5953 if (pVCpu->hm.s.Event.fPending) 5953 5954 { 5954 hmR0VmxPendingEventToT RPMTrap(pVCpu);5955 hmR0VmxPendingEventToTrpmTrap(pVCpu); 5955 5956 Assert(!pVCpu->hm.s.Event.fPending); 5956 5957 } … … 6711 6712 * recompiler. We must be cautious what we do here regarding committing 6712 6713 * guest-state information into the the VMCS assuming we assuredly execute the 6713 * guest in VT-x. If we fall back to the recompiler after updating VMCS and6714 * guest in VT-x. If we fall back to the recompiler after updating the VMCS and 6714 6715 * clearing the common-state (TRPM/forceflags), we must undo those changes so 6715 6716 * that the recompiler can (and should) use them when it resumes guest … … 6787 6788 /** @todo Rework event evaluation and injection to be completely separate. */ 6788 6789 if (TRPMHasTrap(pVCpu)) 6789 hmR0VmxT RPMTrapToPendingEvent(pVCpu);6790 hmR0VmxTrpmTrapToPendingEvent(pVCpu); 6790 6791 6791 6792 rc = hmR0VmxInjectPendingEvent(pVCpu, pMixedCtx);
Note:
See TracChangeset
for help on using the changeset viewer.

