VirtualBox

Changeset 43466 in vbox


Ignore:
Timestamp:
Sep 28, 2012 2:47:29 PM (12 years ago)
Author:
vboxsync
Message:

VMM: HM bits.

Location:
trunk/src/VBox/VMM
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/HMAll.cpp

    r43387 r43466  
    305305
    306306            if (idThisCpu == idCpu)
     307            {
     308                /** @todo r=ramshankar: Intel does not support flushing by guest physical
     309                 *        address either. See comment in VMXR0InvalidatePhysPage(). Fix this. */
    307310                VMXR0InvalidatePhysPage(pVM, pVCpu, GCPhys);
     311            }
    308312            else
    309313            {
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r43455 r43466  
    25132513            pVCpu->hm.s.uCurrentASID = pCpu->uCurrentASID;
    25142514            if (pCpu->fFlushASIDBeforeUse)
    2515             {
    25162515                hmR0VmxFlushVPID(pVM, pVCpu, pVM->hm.s.vmx.enmFlushVPID, 0 /* GCPtr */);
    2517 #ifdef VBOX_WITH_STATISTICS
    2518                 STAM_COUNTER_INC(&pVCpu->hm.s.StatFlushASID);
    2519 #endif
    2520             }
    25212516        }
    25222517        else
     
    25262521            else
    25272522                hmR0VmxFlushEPT(pVM, pVCpu, pVM->hm.s.vmx.enmFlushEPT);
    2528 
    2529 #ifdef VBOX_WITH_STATISTICS
    2530             /*
    2531              * This is not terribly accurate (i.e. we don't have any StatFlushEPT counter). We currently count these
    2532              * as ASID flushes too, better than including them under StatFlushTLBWorldSwitch.
    2533              */
    2534             STAM_COUNTER_INC(&pVCpu->hm.s.StatFlushASID);
    2535 #endif
    25362523        }
    25372524
     
    26982685            pCpu->fFlushASIDBeforeUse        = true;
    26992686        }
    2700         else
    2701             STAM_COUNTER_INC(&pVCpu->hm.s.StatFlushASID);
    27022687
    27032688        pVCpu->hm.s.fForceTLBFlush = false;
     
    50114996    int rc = VMXR0InvEPT(enmFlush, &descriptor[0]);
    50124997    AssertMsg(rc == VINF_SUCCESS, ("VMXR0InvEPT %x %RGv failed with %d\n", enmFlush, pVCpu->hm.s.vmx.GCPhysEPTP, rc));
     4998#ifdef VBOX_WITH_STATISTICS
     4999    STAM_COUNTER_INC(&pVCpu->hm.s.StatFlushNP);
     5000#endif
    50135001}
    50145002
     
    50465034    AssertMsg(rc == VINF_SUCCESS,
    50475035              ("VMXR0InvVPID %x %x %RGv failed with %d\n", enmFlush, pVCpu ? pVCpu->hm.s.uCurrentASID : 0, GCPtr, rc));
     5036#ifdef VBOX_WITH_STATISTICS
     5037    if (pVCpu)
     5038        STAM_COUNTER_INC(&pVCpu->hm.s.StatFlushASID);
     5039#endif
    50485040}
    50495041
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r43455 r43466  
    557557        HM_REG_COUNTER(&pVCpu->hm.s.StatNoFlushTLBWorldSwitch,  "/HM/CPU%d/Flush/TLB/Skipped");
    558558        HM_REG_COUNTER(&pVCpu->hm.s.StatFlushASID,              "/HM/CPU%d/Flush/TLB/ASID");
     559        HM_REG_COUNTER(&pVCpu->hm.s.StatFlushNP,                "/HM/CPU%d/Flush/TLB/NP");
    559560        HM_REG_COUNTER(&pVCpu->hm.s.StatFlushTLBInvlpga,        "/HM/CPU%d/Flush/TLB/PhysInvl");
    560561        HM_REG_COUNTER(&pVCpu->hm.s.StatTlbShootdown,           "/HM/CPU%d/Flush/Shootdown/Page");
  • trunk/src/VBox/VMM/include/HMInternal.h

    r43455 r43466  
    828828    STAMCOUNTER             StatFlushTLBCRxChange;
    829829    STAMCOUNTER             StatFlushASID;
     830    STAMCOUNTER             StatFlushNP;
    830831    STAMCOUNTER             StatFlushTLBInvlpga;
    831832    STAMCOUNTER             StatTlbShootdown;
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