VirtualBox

Changeset 20709 in vbox


Ignore:
Timestamp:
Jun 19, 2009 10:13:17 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
48815
Message:

More locking

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

Legend:

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

    r20687 r20709  
    16081608                 * Since there is no particular order, just push it.
    16091609                 */
     1610                pgmLock(pVM);
    16101611                pNew->pNextR3 = pVM->pgm.s.pMmio2RangesR3;
    16111612                pVM->pgm.s.pMmio2RangesR3 = pNew;
     1613                pgmUnlock(pVM);
    16121614
    16131615                *ppv = pvPages;
     
    16471649    AssertReturn(iRegion <= UINT8_MAX || iRegion == UINT32_MAX, VERR_INVALID_PARAMETER);
    16481650
     1651    pgmLock(pVM);
    16491652    int rc = VINF_SUCCESS;
    16501653    unsigned cFound = 0;
     
    17161719        }
    17171720    }
    1718 
     1721    pgmUnlock(pVM);
    17191722    return !cFound && iRegion != UINT32_MAX ? VERR_NOT_FOUND : rc;
    17201723}
     
    19621965     * Search the list.
    19631966     */
     1967    pgmLock(pVM);
    19641968    for (PPGMMMIO2RANGE pCur = pVM->pgm.s.pMmio2RangesR3; pCur; pCur = pCur->pNextR3)
    19651969        if (pCur->RamRange.GCPhys == GCPhys)
    19661970        {
    19671971            Assert(pCur->fMapped);
     1972            pgmUnlock(pVM);
    19681973            return true;
    19691974        }
     1975    pgmUnlock(pVM);
    19701976    return false;
    19711977}
     
    19942000    AssertReturn(iRegion <= UINT8_MAX, VERR_INVALID_PARAMETER);
    19952001
     2002    pgmLock(pVM);
    19962003    PPGMMMIO2RANGE pCur = pgmR3PhysMMIO2Find(pVM, pDevIns, iRegion);
    19972004    AssertReturn(pCur, VERR_NOT_FOUND);
     
    20002007    PCPGMPAGE pPage = &pCur->RamRange.aPages[off >> PAGE_SHIFT];
    20012008    *pHCPhys = PGM_PAGE_GET_HCPHYS(pPage);
     2009    pgmUnlock(pVM);
    20022010    return VINF_SUCCESS;
    20032011}
     
    25122520int pgmR3PhysRomReset(PVM pVM)
    25132521{
     2522    Assert(PGMIsLockOwner(pVM));
    25142523    for (PPGMROMRANGE pRom = pVM->pgm.s.pRomRangesR3; pRom; pRom = pRom->pNextR3)
    25152524    {
     
    27272736static DECLCALLBACK(int) pgmR3PhysChunkAgeingRolloverCallback(PAVLU32NODECORE pNode, void *pvUser)
    27282737{
     2738    Assert(PGMIsLockOwner((PVM)pvUser));
    27292739    /* Age compression - ASSUMES iNow == 4. */
    27302740    PPGMCHUNKR3MAP pChunk = (PPGMCHUNKR3MAP)pNode;
     
    27732783VMMR3DECL(void) PGMR3PhysChunkAgeing(PVM pVM)
    27742784{
     2785    pgmLock(pVM);
    27752786    pVM->pgm.s.ChunkR3Map.AgeingCountdown = RT_MIN(pVM->pgm.s.ChunkR3Map.cMax / 4, 1024);
    27762787    pVM->pgm.s.ChunkR3Map.iNow++;
     
    27822793    else
    27832794        RTAvlU32DoWithAll(&pVM->pgm.s.ChunkR3Map.pTree, true /*fFromLeft*/, pgmR3PhysChunkAgeingCallback, pVM);
     2795    pgmUnlock(pVM);
    27842796}
    27852797
     
    28492861static int32_t pgmR3PhysChunkFindUnmapCandidate(PVM pVM)
    28502862{
     2863    Assert(PGMIsLockOwner(pVM));
     2864
    28512865    /*
    28522866     * Do tree ageing first?
     
    28832897    int rc;
    28842898
     2899    Assert(PGMIsLockOwner(pVM));
    28852900    /*
    28862901     * Allocate a new tracking structure first.
     
    29682983{
    29692984    PPGMCHUNKR3MAP pChunk;
    2970     return pgmR3PhysChunkMap(pVM, idChunk, &pChunk);
     2985    int rc;
     2986
     2987    pgmLock(pVM);
     2988    rc = pgmR3PhysChunkMap(pVM, idChunk, &pChunk);
     2989    pgmUnlock(pVM);
     2990    return rc;
    29712991}
    29722992
     
    31283148     * Assert sanity.
    31293149     */
    3130     Assert(PDMCritSectIsOwner(&pVM->pgm.s.CritSect));
     3150    Assert(PGMIsLockOwner(pVM));
    31313151    if (RT_UNLIKELY(    PGM_PAGE_GET_TYPE(pPage) != PGMPAGETYPE_RAM
    31323152                    &&  PGM_PAGE_GET_TYPE(pPage) != PGMPAGETYPE_ROM_SHADOW))
  • trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp

    r20577 r20709  
    272272        pgmHandlerPhysicalResetRamFlags(pVM, pCur);
    273273        pgmHandlerPhysicalDeregisterNotifyREM(pVM, pCur);
     274        MMHyperFree(pVM, pCur);
    274275        pgmUnlock(pVM);
    275276        HWACCMFlushTLBOnAllVCpus(pVM);
    276         MMHyperFree(pVM, pCur);
    277277        return VINF_SUCCESS;
    278278    }
     
    748748                        LogFlow(("PGMHandlerPhysicalJoin: %RGp-%RGp %RGp-%RGp\n",
    749749                                 pCur1->Core.Key, pCur1->Core.KeyLast, pCur2->Core.Key, pCur2->Core.KeyLast));
     750                        MMHyperFree(pVM, pCur2);
    750751                        pgmUnlock(pVM);
    751                         MMHyperFree(pVM, pCur2);
    752752                        return VINF_SUCCESS;
    753753                    }
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