Changeset 31102 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Jul 26, 2010 10:45:09 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 64055
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r31101 r31102 147 147 # endif 148 148 { 149 STAM_PROFILE_START(&pVCpu->pgm.s.StatRZTrap0eTimeHandlers, b);150 149 # if !PGM_WITH_PAGING(PGM_GST_TYPE, PGM_SHW_TYPE) 151 150 GSTPDE const PdeSrcDummy = { X86_PDE_P | X86_PDE_US | X86_PDE_RW | X86_PDE_A}; … … 189 188 AssertRC(rc); 190 189 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersOutOfSync); 191 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeHandlers, b);192 190 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2OutOfSyncHndPhys; }); 193 191 return rc; … … 234 232 235 233 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersPhysical); 236 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeHandlers, b);237 234 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2HndPhys; }); 238 235 return rc; … … 258 255 AssertRC(rc); 259 256 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersOutOfSync); 260 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeHandlers, b);261 257 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2OutOfSyncHndVirt; }); 262 258 return rc; … … 299 295 # endif 300 296 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersVirtual); 301 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeHandlers, b);302 297 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2HndVirt; }); 303 298 return rc; … … 328 323 # endif 329 324 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersVirtualByPhys); 330 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeHandlers, b);331 325 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2HndVirt; }); 332 326 return rc; … … 360 354 AssertRC(rc); 361 355 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersOutOfSync); 362 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeHandlers, b);363 356 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2OutOfSyncHndPhys; }); 364 357 return rc; … … 371 364 rc = PGMInterpretInstruction(pVM, pVCpu, pRegFrame, pvFault); 372 365 LogFlow(("PGM: PGMInterpretInstruction -> rc=%d pPage=%R[pgmpage]\n", rc, pPage)); 373 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeHandlers, b);374 366 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2HndUnhandled; }); 375 367 return rc; … … 600 592 { 601 593 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2SyncPT; }); 602 STAM_PROFILE_START(&pVCpu->pgm.s.StatRZTrap0eTimeSyncPT, f);603 594 # if PGM_WITH_PAGING(PGM_GST_TYPE, PGM_SHW_TYPE) 604 595 LogFlow(("=>SyncPT %04x = %08RX64\n", (pvFault >> GST_PD_SHIFT) & GST_PD_MASK, (uint64_t)GstWalk.Pde.u)); … … 609 600 # endif 610 601 if (RT_SUCCESS(rc)) 611 {612 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeSyncPT, f);613 602 return rc; 614 }615 603 Log(("SyncPT: %RGv failed!! rc=%Rrc\n", pvFault, rc)); 616 604 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3); /** @todo no need to do global sync, right? */ 617 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeSyncPT, f);618 605 return VINF_PGM_SYNC_CR3; 619 606 } … … 629 616 if (pgmMapAreMappingsEnabled(&pVM->pgm.s)) 630 617 { 631 STAM_PROFILE_START(&pVCpu->pgm.s.StatRZTrap0eTimeMapping, a);632 618 PPGMMAPPING pMapping = pVM->pgm.s.CTX_SUFF(pMappings); 633 619 for ( ; pMapping; pMapping = pMapping->CTX_SUFF(pNext)) … … 649 635 Log(("Trap0e: Detected Conflict %RGv-%RGv\n", pMapping->GCPtr, pMapping->GCPtrLast)); 650 636 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3); /** @todo no need to do global sync,right? */ 651 STAM_ PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeMapping, a);637 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2Mapping; }); 652 638 return VINF_PGM_SYNC_CR3; 653 639 } … … 673 659 # endif 674 660 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersMapping); 675 STAM_ PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeMapping, a);661 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2Mapping; }); 676 662 return rc; 677 663 } … … 683 669 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eGuestPFMapping); 684 670 LogFlow(("PGM: Mapping access -> route trap to recompiler!\n")); 685 STAM_ PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeMapping, a);671 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2Mapping; }); 686 672 return VINF_EM_RAW_GUEST_TRAP; 687 673 } 688 674 } 689 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeMapping, a);690 675 } /* pgmAreMappingsEnabled(&pVM->pgm.s) */ 691 676 # endif /* PGM_WITH_PAGING(PGM_GST_TYPE, PGM_SHW_TYPE) */ … … 715 700 LogFlow(("PGM #PF: pgmPhysGetPageEx(%RGp) failed with %Rrc\n", GCPhys, rc)); 716 701 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersInvalid); 702 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2InvalidPhys; }); 717 703 return VINF_EM_RAW_EMULATE_INSTR; 718 704 } … … 762 748 rc = VINF_EM_RAW_EMULATE_INSTR; /** @todo for VMX */ 763 749 # endif 764 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eHandlersVirtualUnmarked);765 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeOutOfSync, c);766 750 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2HndVirt; }); 767 751 return rc; … … 795 779 LogFlow(("PGM: PGMInterpretInstruction balloon -> rc=%d pPage=%R[pgmpage]\n", rc, pPage)); 796 780 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,PageOutOfSyncBallloon)); 797 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeOutOfSync, c); 798 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2HndUnhandled; }); 781 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2Ballooned; }); 799 782 return rc; 800 783 } … … 840 823 AssertRC(rc2); 841 824 842 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeOutOfSync, c);843 825 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2CSAM; }); 844 826 return rc; … … 893 875 { 894 876 /* The page was successfully synced, return to the guest. */ 895 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeOutOfSync, c);896 877 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2OutOfSync; }); 897 878 return VINF_SUCCESS; … … 921 902 Assert(!PGM_PAGE_IS_ZERO(pPage)); 922 903 AssertFatalMsg(!PGM_PAGE_IS_BALLOONED(pPage), ("Unexpected ballooned page at %RGp\n", GCPhys)); 904 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2MakeWritable; }); 923 905 924 906 rc = pgmPhysPageMakeWritable(pVM, pPage, GCPhys); … … 926 908 { 927 909 AssertMsg(rc == VINF_PGM_SYNC_CR3 || RT_FAILURE(rc), ("%Rrc\n", rc)); 928 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeOutOfSync, c);929 /// @todo STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2MakeWritable; });930 910 return rc; 931 911 } … … 948 928 else 949 929 STAM_COUNTER_INC(&pVCpu->pgm.s.StatRZTrap0eWPEmulToR3); 950 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeOutOfSync, c); 951 /// @todo STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2WPEmulation; }); 930 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2WPEmulation; }); 952 931 return rc; 953 932 } … … 994 973 AssertMsg((RT_SUCCESS(rc) && (fPageShw & X86_PTE_RW)) || pVM->cCpus > 1 /* new monitor can be installed/page table flushed between the trap exit and PGMTrap0eHandler */, ("rc=%Rrc fPageShw=%RX64\n", rc, fPageShw)); 995 974 # endif /* VBOX_STRICT */ 996 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeOutOfSync, c);997 975 STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2OutOfSyncHndObs; }); 998 976 return VINF_SUCCESS; … … 1030 1008 # endif /* PGM_WITH_PAGING(PGM_GST_TYPE, PGM_SHW_TYPE) && VBOX_STRICT */ 1031 1009 } 1032 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatRZTrap0eTimeOutOfSync, c);1033 1010 1034 1011 /** @todo This point is only ever reached when something goes awry. The
Note:
See TracChangeset
for help on using the changeset viewer.