VirtualBox

Changeset 82989 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Feb 5, 2020 11:16:44 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
136000
Message:

VMM/GMMR0: Added a per-VM chunk TLB to avoid having everyone hammer the global spinlock. bugref:9627

Location:
trunk/include/VBox/vmm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/gmm.h

    r82968 r82989  
    386386    /** The number of shareable modules (GMM:cShareableModules). */
    387387    uint64_t            cShareableModules;
     388    /** The current chunk freeing generation use by the per-VM TLB validation (GMM::idFreeGeneration). */
     389    uint64_t            idFreeGeneration;
    388390    /** Space reserved for later. */
    389     uint64_t            au64Reserved[2];
     391    uint64_t            au64Reserved[1];
    390392
    391393    /** Statistics for the specified VM. (Zero filled if not requested.) */
     
    400402GMMR0DECL(int)  GMMR0Init(void);
    401403GMMR0DECL(void) GMMR0Term(void);
    402 GMMR0DECL(void) GMMR0InitPerVMData(PGVM pGVM);
     404GMMR0DECL(int) GMMR0InitPerVMData(PGVM pGVM);
    403405GMMR0DECL(void) GMMR0CleanupVM(PGVM pGVM);
    404406GMMR0DECL(int)  GMMR0InitialReservation(PGVM pGVM, VMCPUID idCpu, uint64_t cBasePages, uint32_t cShadowPages, uint32_t cFixedPages,
  • trunk/include/VBox/vmm/gvm.h

    r82968 r82989  
    174174        struct GMMPERVM     s;
    175175#endif
    176         uint8_t             padding[512];
     176        uint8_t             padding[1024];
    177177    } gmm;
    178178
     
    231231    /** Padding so aCpus starts on a page boundrary.  */
    232232#ifdef VBOX_WITH_NEM_R0
    233     uint8_t         abPadding2[4096*2 - 64 - 256 - 512 - 256 - 64 - 1792 - 640 - 512 - 64 - sizeof(PGVMCPU) * VMM_MAX_CPU_COUNT];
    234 #else
    235     uint8_t         abPadding2[4096*2 - 64 - 256 - 512       - 64 - 1792 - 640 - 512 - 64 - sizeof(PGVMCPU) * VMM_MAX_CPU_COUNT];
     233    uint8_t         abPadding2[4096*2 - 64 - 256 - 1024 - 256 - 64 - 1792 - 640 - 512 - 64 - sizeof(PGVMCPU) * VMM_MAX_CPU_COUNT];
     234#else
     235    uint8_t         abPadding2[4096*2 - 64 - 256 - 1024       - 64 - 1792 - 640 - 512 - 64 - sizeof(PGVMCPU) * VMM_MAX_CPU_COUNT];
    236236#endif
    237237
  • trunk/include/VBox/vmm/gvmm.h

    r82968 r82989  
    155155typedef const GVMMSTATS *PCGVMMSTATS;
    156156
     157/**
     158 * Per-VM callback for GVMMR0EnumVMs.
     159 *
     160 * @note This is called while holding the VM used list lock, so only suitable
     161 *       for quick and simple jobs!
     162 *
     163 * @returns VINF_SUCCESS to continue the enumeration, anything stops it and
     164 *          returns the status code.
     165 * @param   pGVM        The VM
     166 * @param   pvUser      The user parameter.
     167 *  */
     168typedef DECLCALLBACK(int) FNGVMMR0ENUMCALLBACK(PGVM pGVM, void *pvUser);
     169/** Pointer to an VM enumeration callback function. */
     170typedef FNGVMMR0ENUMCALLBACK *PFNGVMMR0ENUMCALLBACK;
    157171
    158172
     
    185199GVMMR0DECL(int)     GVMMR0SchedPoll(PGVM pGVM, VMCPUID idCpu, bool fYield);
    186200GVMMR0DECL(void)    GVMMR0SchedUpdatePeriodicPreemptionTimer(PGVM pGVM, RTCPUID idHostCpu, uint32_t uHz);
     201GVMMR0DECL(int)     GVMMR0EnumVMs(PFNGVMMR0ENUMCALLBACK pfnCallback, void *pvUser);
    187202GVMMR0DECL(int)     GVMMR0QueryStatistics(PGVMMSTATS pStats, PSUPDRVSESSION pSession, PGVM pGVM);
    188203GVMMR0DECL(int)     GVMMR0ResetStatistics(PCGVMMSTATS pStats, PSUPDRVSESSION pSession, PGVM pGVM);
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