VirtualBox

Changeset 22698 in vbox


Ignore:
Timestamp:
Sep 2, 2009 9:17:59 AM (15 years ago)
Author:
vboxsync
Message:

PGMPoolFlushPage must be called in an EMT.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PGMPhys.cpp

    r22697 r22698  
    422422    AssertPtr(pLock);
    423423
     424    Assert(VM_IS_EMT(pVM) || !PGMIsLockOwner(pVM));
     425
    424426    int rc = pgmLock(pVM);
    425427    AssertRCReturn(rc, rc);
     
    436438            rc = VERR_PGM_PHYS_PAGE_RESERVED;
    437439        else
    438 #if 0
    439         if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
    440         {
    441             /* We *must* flush any corresponding pgm pool page here, otherwise we'll
    442              * not be informed about writes and keep bogus gst->shw mappings around.
    443              */
    444             PGMPoolFlushPage(pVM, GCPhys);
    445             Assert(!PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage));
    446         }
    447         else
    448 #endif
    449440        {
    450441            /*
     
    453444             * This has to be done on an EMT.
    454445             */
    455             if (RT_UNLIKELY(PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED))
     446            if (    PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)
     447                ||  RT_UNLIKELY(PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED))
    456448            {
    457449                pgmUnlock(pVM);
  • trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp

    r22696 r22698  
    47114711    PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool);
    47124712
     4713    VM_ASSERT_EMT(pVM);
     4714
    47134715    /*
    47144716     * Look up the GCPhys in the hash.
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