VirtualBox

Changeset 20788 in vbox


Ignore:
Timestamp:
Jun 22, 2009 3:26:40 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
48908
Message:

Do not call REMNotifyHandlerPhysicalModify under the PGM lock

File:
1 edited

Legend:

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

    r20767 r20788  
    541541                if (RTAvlroGCPhysInsert(&pVM->pgm.s.CTX_SUFF(pTrees)->PhysHandlers, &pCur->Core))
    542542                {
     543                    PGMPHYSHANDLERTYPE  enmType = pCur->enmType;
     544                    RTGCPHYS            GCPhysLast = pCur->Core.KeyLast - GCPhys + 1;
     545                    bool                fHasHCHandler = !!pCur->pfnHandlerR3;
     546
    543547                    /*
    544548                     * Set ram flags, flush shadow PT entries and finally tell REM about this.
     
    546550                    rc = pgmHandlerPhysicalSetRamFlagsAndFlushShadowPTs(pVM, pCur, pRam);
    547551                    pVM->pgm.s.fPhysCacheFlushPending = true;
     552                    pgmUnlock(pVM);
    548553
    549554#ifndef IN_RING3
    550                     REMNotifyHandlerPhysicalModify(pVM, pCur->enmType, GCPhysCurrent, GCPhys,
    551                                                    pCur->Core.KeyLast - GCPhys + 1, !!pCur->pfnHandlerR3, fRestoreAsRAM);
     555                    REMNotifyHandlerPhysicalModify(pVM, enmType, GCPhysCurrent, GCPhys,
     556                                                   GCPhysLast - GCPhys + 1, fHasHCHandler, fRestoreAsRAM);
    552557#else
    553                     REMR3NotifyHandlerPhysicalModify(pVM, pCur->enmType, GCPhysCurrent, GCPhys,
    554                                                      pCur->Core.KeyLast - GCPhys + 1, !!pCur->pfnHandlerR3, fRestoreAsRAM);
     558                    REMR3NotifyHandlerPhysicalModify(pVM, enmType, GCPhysCurrent, GCPhys,
     559                                                     GCPhysLast, fHasHCHandler, fRestoreAsRAM);
    555560#endif
    556                     pgmUnlock(pVM);
    557561                    HWACCMFlushTLBOnAllVCpus(pVM);
    558562                    Log(("PGMHandlerPhysicalModify: GCPhysCurrent=%RGp -> GCPhys=%RGp GCPhysLast=%RGp\n",
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