VirtualBox

Ignore:
Timestamp:
Oct 16, 2012 3:34:05 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
81423
Message:

VMM: APIC refactor. Moved APIC base MSR to the VCPU (where it belongs) for lockless accesses.

File:
1 edited

Legend:

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

    r43566 r43657  
    11661166        Assert((TRPMQueryTrap(pVCpu, NULL, NULL) == VERR_TRPM_NO_ACTIVE_TRAP));
    11671167
    1168         /* 
     1168        /*
    11691169         * Clear the pending event and move it over to TRPM for the rest
    11701170         * of the world to see.
     
    35053505                {
    35063506                    RTGCPHYS GCPhysApicBase, GCPhys;
    3507                     PDMApicGetBase(pVM, &GCPhysApicBase);   /** @todo cache this */
     3507                    GCPhysApicBase = pCtx->msrApicBase;
    35083508                    GCPhysApicBase &= PAGE_BASE_GC_MASK;
    35093509
     
    35363536                {
    35373537                    RTGCPHYS GCPhysApicBase, GCPhys;
    3538                     PDMApicGetBase(pVM, &GCPhysApicBase);   /* @todo cache this */
     3538                    GCPhysApicBase = pCtx->msrApicBase;
    35393539                    GCPhysApicBase &= PAGE_BASE_GC_MASK;
    35403540
     
    40484048            {
    40494049                RTGCPHYS GCPhysApicBase;
    4050                 PDMApicGetBase(pVM, &GCPhysApicBase);   /* @todo cache this */
     4050                GCPhysApicBase = pCtx->msrApicBase;
    40514051                GCPhysApicBase &= PAGE_BASE_GC_MASK;
    40524052                if (GCPhys == GCPhysApicBase + 0x80)
     
    41084108            &&  (pVM->hm.s.vmx.msr.vmx_proc_ctls2.n.allowed1 & VMX_VMCS_CTRL_PROC_EXEC2_VIRT_APIC))
    41094109        {
    4110             RTGCPHYS GCPhysApicBase;
    4111             PDMApicGetBase(pVM, &GCPhysApicBase);   /* @todo cache this */
     4110            RTGCPHYS GCPhysApicBase = pCtx->msrApicBase;
    41124111            GCPhysApicBase &= PAGE_BASE_GC_MASK;
    41134112            if (GCPhys == GCPhysApicBase + 0x80)
     
    46484647            case VMX_APIC_ACCESS_TYPE_LINEAR_WRITE:
    46494648            {
    4650                 RTGCPHYS GCPhys;
    4651                 PDMApicGetBase(pVM, &GCPhys);
     4649                RTGCPHYS GCPhys = pCtx->msrApicBase;
    46524650                GCPhys &= PAGE_BASE_GC_MASK;
    46534651                GCPhys += VMX_EXIT_QUALIFICATION_APIC_ACCESS_OFFSET(exitQualification);
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