VirtualBox

Changeset 8861 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
May 15, 2008 2:57:35 PM (17 years ago)
Author:
vboxsync
Message:

Don't bother to invalidate pages if a TLB flush is already pending.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp

    r8860 r8861  
    17241724HWACCMR0DECL(int) SVMR0InvalidatePage(PVM pVM, RTGCPTR GCVirt)
    17251725{
    1726     SVM_VMCB   *pVMCB;
    1727 
    1728     Log2(("SVMR0InvalidatePage %VGv\n", GCVirt));
    1729     AssertReturn(pVM, VERR_INVALID_PARAMETER);
    1730     Assert(pVM->hwaccm.s.svm.fSupported);
    1731 
    1732     pVMCB = (SVM_VMCB *)pVM->hwaccm.s.svm.pVMCB;
    1733     AssertMsgReturn(pVMCB, ("Invalid pVMCB\n"), VERR_EM_INTERNAL_ERROR);
    1734 
    1735     STAM_COUNTER_INC(&pVM->hwaccm.s.StatFlushPageManual);
    1736     SVMInvlpgA(GCVirt, pVMCB->ctrl.TLBCtrl.n.u32ASID);
     1726    /* Skip it if a TLB flush is already pending. */
     1727    if (pVM->hwaccm.s.svm.fForceTLBFlush)
     1728    {
     1729        SVM_VMCB   *pVMCB;
     1730
     1731        Log2(("SVMR0InvalidatePage %VGv\n", GCVirt));
     1732        AssertReturn(pVM, VERR_INVALID_PARAMETER);
     1733        Assert(pVM->hwaccm.s.svm.fSupported);
     1734
     1735        pVMCB = (SVM_VMCB *)pVM->hwaccm.s.svm.pVMCB;
     1736        AssertMsgReturn(pVMCB, ("Invalid pVMCB\n"), VERR_EM_INTERNAL_ERROR);
     1737
     1738        STAM_COUNTER_INC(&pVM->hwaccm.s.StatFlushPageManual);
     1739        SVMInvlpgA(GCVirt, pVMCB->ctrl.TLBCtrl.n.u32ASID);
     1740    }
    17371741    return VINF_SUCCESS;
    17381742}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette