Changeset 65504 in vbox for trunk/src/VBox/VMM/include
- Timestamp:
- Jan 29, 2017 11:54:25 AM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 113137
- Location:
- trunk/src/VBox/VMM/include
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/PGMGstDefs.h
r65466 r65504 143 143 # define GST_GET_PDE_SHW_FLAGS(pVCpu, Pde) ((Pde).u & (X86_PDE_P | X86_PDE_RW | X86_PDE_US | X86_PDE_A)) 144 144 # define GST_GET_BIG_PDE_SHW_FLAGS(pVCpu, Pde) \ 145 ( ((Pde).u & (X86_PDE4M_P | X86_PDE4M_RW | X86_PDE4M_US | X86_PDE4M_A)) | PGM_PDFLAGS_BIG_PAGE)145 ((Pde).u & (X86_PDE4M_P | X86_PDE4M_RW | X86_PDE4M_US | X86_PDE4M_A)) 146 146 # define GST_GET_BIG_PDE_SHW_FLAGS_4_PTE(pVCpu, Pde) \ 147 147 ((Pde).u & (X86_PDE4M_P | X86_PDE4M_RW | X86_PDE4M_US | X86_PDE4M_A | X86_PDE4M_D | X86_PDE4M_G)) … … 183 183 # define GST_GET_PTE_SHW_FLAGS(pVCpu, Pte) ((Pte).u & (pVCpu)->pgm.s.fGst64ShadowedPteMask ) 184 184 # define GST_GET_PDE_SHW_FLAGS(pVCpu, Pde) ((Pde).u & (pVCpu)->pgm.s.fGst64ShadowedPdeMask ) 185 # define GST_GET_BIG_PDE_SHW_FLAGS(pVCpu, Pde) ( ((Pde).u & (pVCpu)->pgm.s.fGst64ShadowedBigPdeMask ) | PGM_PDFLAGS_BIG_PAGE)185 # define GST_GET_BIG_PDE_SHW_FLAGS(pVCpu, Pde) ((Pde).u & (pVCpu)->pgm.s.fGst64ShadowedBigPdeMask ) 186 186 # define GST_GET_BIG_PDE_SHW_FLAGS_4_PTE(pVCpu, Pde) ((Pde).u & (pVCpu)->pgm.s.fGst64ShadowedBigPde4PteMask ) 187 187 -
trunk/src/VBox/VMM/include/PGMInternal.h
r65502 r65504 178 178 * the page directory entries. 179 179 * @{ */ 180 /** Indicates the original entry was a big page.181 * @remarks This is currently only used for statistics and can be recycled. */182 #define PGM_PDFLAGS_BIG_PAGE RT_BIT_64(9)183 180 /** Mapping (hypervisor allocated pagetable). */ 184 181 #define PGM_PDFLAGS_MAPPING RT_BIT_64(10) … … 2499 2496 /** The number of failing pgmPoolTrackPhysExtAlloc calls. */ 2500 2497 STAMCOUNTER StamTrackPhysExtAllocFailures; 2501 2502 /** Profiling the RC/R0 \#PF access handler. */ 2503 STAMPROFILE StatMonitorPfRZ; 2498 /** Profiling the RC/R0 access handler. */ 2499 STAMPROFILE StatMonitorRZ; 2500 /** Times we've failed interpreting the instruction. */ 2501 STAMCOUNTER StatMonitorRZEmulateInstr; 2502 /** Profiling the pgmPoolFlushPage calls made from the RC/R0 access handler. */ 2503 STAMPROFILE StatMonitorRZFlushPage; 2504 /* Times we've detected a page table reinit. */ 2505 STAMCOUNTER StatMonitorRZFlushReinit; 2506 /** Counting flushes for pages that are modified too often. */ 2507 STAMCOUNTER StatMonitorRZFlushModOverflow; 2508 /** Times we've detected fork(). */ 2509 STAMCOUNTER StatMonitorRZFork; 2504 2510 /** Profiling the RC/R0 access we've handled (except REP STOSD). */ 2505 STAMPROFILE StatMonitorPfRZHandled; 2506 /** Times we've failed interpreting the instruction. */ 2507 STAMCOUNTER StatMonitorPfRZEmulateInstr; 2508 /** Profiling the pgmPoolFlushPage calls made from the RC/R0 access handler. */ 2509 STAMPROFILE StatMonitorPfRZFlushPage; 2510 /* Times we've detected a page table reinit. */ 2511 STAMCOUNTER StatMonitorPfRZFlushReinit; 2512 /** Counting flushes for pages that are modified too often. */ 2513 STAMCOUNTER StatMonitorPfRZFlushModOverflow; 2514 /** Times we've detected fork(). */ 2515 STAMCOUNTER StatMonitorPfRZFork; 2511 STAMPROFILE StatMonitorRZHandled; 2516 2512 /** Times we've failed interpreting a patch code instruction. */ 2517 STAMCOUNTER StatMonitor PfRZIntrFailPatch1;2513 STAMCOUNTER StatMonitorRZIntrFailPatch1; 2518 2514 /** Times we've failed interpreting a patch code instruction during flushing. */ 2519 STAMCOUNTER StatMonitor PfRZIntrFailPatch2;2515 STAMCOUNTER StatMonitorRZIntrFailPatch2; 2520 2516 /** The number of times we've seen rep prefixes we can't handle. */ 2521 STAMCOUNTER StatMonitor PfRZRepPrefix;2517 STAMCOUNTER StatMonitorRZRepPrefix; 2522 2518 /** Profiling the REP STOSD cases we've handled. */ 2523 STAMPROFILE StatMonitorPfRZRepStosd; 2524 2525 /** Profiling the R0/RC regular access handler. */ 2526 STAMPROFILE StatMonitorRZ; 2527 /** Profiling the pgmPoolFlushPage calls made from the regular access handler in R0/RC. */ 2528 STAMPROFILE StatMonitorRZFlushPage; 2529 /** Per access size counts indexed by size minus 1, last for larger. */ 2530 STAMCOUNTER aStatMonitorRZSizes[16+3]; 2531 /** Missaligned access counts indexed by offset - 1. */ 2532 STAMCOUNTER aStatMonitorRZMisaligned[7]; 2533 2519 STAMPROFILE StatMonitorRZRepStosd; 2534 2520 /** Nr of handled PT faults. */ 2535 2521 STAMCOUNTER StatMonitorRZFaultPT; … … 2543 2529 /** Profiling the R3 access handler. */ 2544 2530 STAMPROFILE StatMonitorR3; 2531 /** Times we've failed interpreting the instruction. */ 2532 STAMCOUNTER StatMonitorR3EmulateInstr; 2545 2533 /** Profiling the pgmPoolFlushPage calls made from the R3 access handler. */ 2546 2534 STAMPROFILE StatMonitorR3FlushPage; 2547 /** Per access size counts indexed by size minus 1, last for larger. */ 2548 STAMCOUNTER aStatMonitorR3Sizes[16+3]; 2549 /** Missaligned access counts indexed by offset - 1. */ 2550 STAMCOUNTER aStatMonitorR3Misaligned[7]; 2535 /* Times we've detected a page table reinit. */ 2536 STAMCOUNTER StatMonitorR3FlushReinit; 2537 /** Counting flushes for pages that are modified too often. */ 2538 STAMCOUNTER StatMonitorR3FlushModOverflow; 2539 /** Times we've detected fork(). */ 2540 STAMCOUNTER StatMonitorR3Fork; 2541 /** Profiling the R3 access we've handled (except REP STOSD). */ 2542 STAMPROFILE StatMonitorR3Handled; 2543 /** The number of times we've seen rep prefixes we can't handle. */ 2544 STAMCOUNTER StatMonitorR3RepPrefix; 2545 /** Profiling the REP STOSD cases we've handled. */ 2546 STAMPROFILE StatMonitorR3RepStosd; 2551 2547 /** Nr of handled PT faults. */ 2552 2548 STAMCOUNTER StatMonitorR3FaultPT; … … 2557 2553 /** Nr of handled PML4 faults. */ 2558 2554 STAMCOUNTER StatMonitorR3FaultPML4; 2559 2555 /** The number of times we're called in an async thread an need to flush. */ 2556 STAMCOUNTER StatMonitorR3Async; 2560 2557 /** Times we've called pgmPoolResetDirtyPages (and there were dirty page). */ 2561 2558 STAMCOUNTER StatResetDirtyPages; … … 2795 2792 /** The effective X86_PTE_NX flag for the address. */ 2796 2793 bool fEffectiveNX; 2797 bool afPadding1[2];2798 /** Effective flags thus far: RW, US, PWT, PCD, A, ~NX >> 63.2799 * The NX bit is inverted and shifted down 63 places to bit 0. */2800 uint32_t fEffective;2801 2794 } PGMPTWALKCORE; 2802 2803 /** @name PGMPTWALKCORE::fEffective bits.2804 * @{ */2805 /** Effective execute bit (!NX). */2806 #define PGMPTWALK_EFF_X UINT32_C(1)2807 /** Effective write access bit. */2808 #define PGMPTWALK_EFF_RW X86_PTE_RW2809 /** Effective user-mode access bit. */2810 #define PGMPTWALK_EFF_US X86_PTE_US2811 /** Effective write through cache bit. */2812 #define PGMPTWALK_EFF_PWT X86_PTE_PWT2813 /** Effective cache disabled bit. */2814 #define PGMPTWALK_EFF_PCD X86_PTE_PCD2815 /** Effective accessed bit. */2816 #define PGMPTWALK_EFF_A X86_PTE_A2817 /** The dirty bit of the final entry. */2818 #define PGMPTWALK_EFF_D X86_PTE_D2819 /** The PAT bit of the final entry. */2820 #define PGMPTWALK_EFF_PAT X86_PTE_PAT2821 /** The global bit of the final entry. */2822 #define PGMPTWALK_EFF_G X86_PTE_G2823 /** @} */2824 2795 2825 2796 … … 3795 3766 STAMCOUNTER StatRZInvalidatePagePDNPs; /**< RC/R0: The number of times PGMInvalidatePage() was called for a not present page directory. */ 3796 3767 STAMCOUNTER StatRZInvalidatePagePDOutOfSync; /**< RC/R0: The number of times PGMInvalidatePage() was called for an out of sync page directory. */ 3797 STAMCOUNTER StatRZInvalidatePageSizeChanges ; /**< RC/R0: The number of times PGMInvalidatePage() was called on a page size change (4KB <-> 2/4MB). */3798 3768 STAMCOUNTER StatRZInvalidatePageSkipped; /**< RC/R0: The number of times PGMInvalidatePage() was skipped due to not present shw or pending pending SyncCR3. */ 3799 3769 STAMCOUNTER StatRZPageOutOfSyncUser; /**< RC/R0: The number of times user page is out of sync was detected in \#PF or VerifyAccessSyncPage. */ … … 3843 3813 STAMCOUNTER StatR3InvalidatePagePDMappings; /**< R3: The number of times PGMInvalidatePage() was called for a page directory containing mappings (no conflict). */ 3844 3814 STAMCOUNTER StatR3InvalidatePagePDOutOfSync; /**< R3: The number of times PGMInvalidatePage() was called for an out of sync page directory. */ 3845 STAMCOUNTER StatR3InvalidatePageSizeChanges ; /**< R3: The number of times PGMInvalidatePage() was called on a page size change (4KB <-> 2/4MB). */3846 3815 STAMCOUNTER StatR3InvalidatePageSkipped; /**< R3: The number of times PGMInvalidatePage() was skipped due to not present shw or pending pending SyncCR3. */ 3847 3816 STAMCOUNTER StatR3PageOutOfSyncUser; /**< R3: The number of times user page is out of sync was detected in \#PF or VerifyAccessSyncPage. */ … … 4292 4261 PGM_ALL_CB2_PROTO(FNPGMPHYSHANDLER) pgmPoolAccessHandler; 4293 4262 #ifndef IN_RING3 4294 DECLEXPORT(FNPGMRZPHYSPFHANDLER) pgm RZPoolAccessPfHandler;4263 DECLEXPORT(FNPGMRZPHYSPFHANDLER) pgmPoolAccessPfHandler; 4295 4264 #endif 4296 4265
Note:
See TracChangeset
for help on using the changeset viewer.