VirtualBox

Changeset 8861

Show
Ignore:
Timestamp:
05/15/08 16:57:35 (8 months ago)
Author:
vboxsync
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 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} 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy