VirtualBox

Changeset 20665 in vbox


Ignore:
Timestamp:
Jun 17, 2009 12:59:58 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
48760
Message:

PGMAllPool.cpp: Use VMMR3EmtRendezvous to avoid whatever issue there is with VMMR3AtomicExecuteHandler that caused me to be stuck in it without the other EMT noticing.

File:
1 edited

Legend:

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

    r20530 r20665  
    19611961 * @returns VBox status code.
    19621962 * @param   pVM     The VM handle.
    1963  * @param   pvUser  Unused parameter
     1963 * @param   pVCpu   The VMCPU for the EMT we're being called on. Unused.
     1964 * @param   pvUser  Unused parameter.
     1965 *
    19641966 * @remark  Should only be used when monitoring is available, thus placed in
    1965  *          the PGMPOOL_WITH_MONITORING #ifdef.
    1966  */
    1967 DECLCALLBACK(int) pgmPoolClearAll(PVM pVM, void *pvUser)
    1968 {
    1969     NOREF(pvUser);
     1967 *          the PGMPOOL_WITH_MONITORING \#ifdef.
     1968 */
     1969DECLCALLBACK(int) pgmPoolClearAll(PVM pVM, PVMCPU pVCpu, void *pvUser)
     1970{
    19701971    PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool);
    19711972    STAM_PROFILE_START(&pPool->StatClearAll, c);
    19721973    LogFlow(("pgmPoolClearAll: cUsedPages=%d\n", pPool->cUsedPages));
     1974    NOREF(pvUser); NOREF(pVCpu);
    19731975
    19741976    pgmLock(pVM);
     
    21092111    PVM pVM = pVCpu->CTX_SUFF(pVM);
    21102112    LogFlow(("pgmPoolSyncCR3\n"));
     2113
    21112114    /*
    21122115     * When monitoring shadowed pages, we reset the modification counters on CR3 sync.
     
    21182121    if (ASMBitTestAndClear(&pVCpu->pgm.s.fSyncFlags, PGM_SYNC_CLEAR_PGM_POOL_BIT))
    21192122    {
    2120         VMMR3AtomicExecuteHandler(pVM, pgmPoolClearAll, NULL);
     2123        int rc = VMMR3EmtRendezvous(pVM, VMMEMTRENDEZVOUS_FLAGS_TYPE_ONCE, pgmPoolClearAll, NULL);
     2124        AssertRC(rc);
     2125    }
    21212126# else  /* !IN_RING3 */
    21222127    if (pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL)
     
    21252130        VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3); /** @todo no need to do global sync, right? */
    21262131        return VINF_PGM_SYNC_CR3;
     2132    }
    21272133# endif /* !IN_RING3 */
    2128     }
    21292134    else
    21302135        pgmPoolMonitorModifiedClearAll(pVM);
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