VirtualBox

Changeset 50749 in vbox


Ignore:
Timestamp:
Mar 12, 2014 3:00:05 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
92759
Message:

VMM/HMVMXR0: When only all-context VPID flush is supported by the CPU, avoid reflushing -all- VPIDs for every run
after hitting VPID limit.

It is sufficient to flush all VPIDs once per host CPU when the limit is reached.

File:
1 edited

Legend:

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

    r50739 r50749  
    20402040        pVCpu->hm.s.uCurrentAsid   = pCpu->uCurrentAsid;
    20412041        if (pCpu->fFlushAsidBeforeUse)
    2042             hmR0VmxFlushVpid(pVM, pVCpu, pVM->hm.s.vmx.enmFlushVpid, 0 /* GCPtr */);
     2042        {
     2043            if (pVM->hm.s.vmx.enmFlushVpid == VMX_FLUSH_VPID_SINGLE_CONTEXT)
     2044                hmR0VmxFlushVpid(pVM, pVCpu, VMX_FLUSH_VPID_SINGLE_CONTEXT, 0 /* GCPtr */);
     2045            else if (pVM->hm.s.vmx.enmFlushVpid == VMX_FLUSH_VPID_ALL_CONTEXTS)
     2046            {
     2047                hmR0VmxFlushVpid(pVM, pVCpu, VMX_FLUSH_VPID_ALL_CONTEXTS, 0 /* GCPtr */);
     2048                pCpu->fFlushAsidBeforeUse = false;
     2049            }
     2050            else
     2051            {
     2052                /* hmR0VmxSetupTaggedTlb() ensures we never get here. Paranoia. */
     2053                AssertMsgFailed(("Unsupported VPID-flush context type.\n"));
     2054            }
     2055        }
    20432056    }
    20442057    /** @todo We never set VMCPU_FF_TLB_SHOOTDOWN anywhere. See hmQueueInvlPage()
Note: See TracChangeset for help on using the changeset viewer.

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