VirtualBox

Changeset 22504 in vbox


Ignore:
Timestamp:
Aug 27, 2009 10:17:04 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
51524
Message:

Updates for dirty page management (disabled code)

File:
1 edited

Legend:

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

    r22474 r22504  
    6565static const char *pgmPoolPoolKindToStr(uint8_t enmKind);
    6666#endif
     67static PPGMPOOLPAGE pgmPoolMonitorGetPageByGCPhys(PPGMPOOL pPool, PPGMPOOLPAGE pNewPage);
    6768
    6869void            pgmPoolTrackFlushGCPhysPT(PVM pVM, PPGMPAGE pPhysPage, uint16_t iShw, uint16_t cRefs);
     
    250251    PVM pVM = pPool->CTX_SUFF(pVM);
    251252
    252     LogFlow(("pgmPoolMonitorChainChanging: %RGv phys=%RGp kind=%s cbWrite=%d\n", (RTGCPTR)pvAddress, GCPhysFault, pgmPoolPoolKindToStr(pPage->enmKind), cbWrite));
     253    LogFlow(("pgmPoolMonitorChainChanging: %RGv phys=%RGp cbWrite=%d\n", (RTGCPTR)pvAddress, GCPhysFault, cbWrite));
     254
    253255    for (;;)
    254256    {
     
    263265            PX86PML4    pPML4;
    264266        } uShw;
     267
     268        LogFlow(("pgmPoolMonitorChainChanging: page idx=%d phys=%RGp (next=%d) kind=%s\n", pPage->idx, pPage->GCPhys, pPage->iMonitoredNext, pgmPoolPoolKindToStr(pPage->enmKind), cbWrite));
    265269
    266270        uShw.pv = NULL;
     
    12831287        &&  pPage->enmKind == PGMPOOLKIND_PAE_PT_FOR_PAE_PT
    12841288        &&  pPage->cModifications >= cMaxModifications
    1285         &&  pPage->iModifiedNext == NIL_PGMPOOL_IDX
    1286         &&  pPage->iModifiedPrev == NIL_PGMPOOL_IDX)
     1289        &&  pPage->iMonitoredNext != NIL_PGMPOOL_IDX
     1290        &&  pPage->iMonitoredPrev != NIL_PGMPOOL_IDX)
    12871291    {
    12881292        Assert(!pgmPoolIsPageLocked(&pVM->pgm.s, pPage));
     
    13951399    pPage = &pPool->aPages[idxPage];
    13961400    Assert(pPage->idx == idxPage);
    1397     Assert(pPage->iModifiedNext == NIL_PGMPOOL_IDX && pPage->iModifiedPrev == NIL_PGMPOOL_IDX);
     1401    Assert(pPage->iMonitoredNext == NIL_PGMPOOL_IDX && pPage->iMonitoredPrev == NIL_PGMPOOL_IDX);
    13981402
    13991403    AssertMsg(pPage->fDirty, ("Page %RGp (slot=%d) not marked dirty!", pPage->GCPhys, idxSlot));
     
    14521456    idxFree = pPool->idxFreeDirtyPage;
    14531457    Assert(idxFree < RT_ELEMENTS(pPool->aIdxDirtyPages));
    1454     Assert(pPage->iModifiedNext == NIL_PGMPOOL_IDX && pPage->iModifiedPrev == NIL_PGMPOOL_IDX);
     1458    Assert(pPage->iMonitoredNext == NIL_PGMPOOL_IDX && pPage->iMonitoredPrev == NIL_PGMPOOL_IDX);
    14551459
    14561460    if (pPool->cDirtyPages >= RT_ELEMENTS(pPool->aIdxDirtyPages))
     
    20692073        Assert(pPageHead != pPage); Assert(pPageHead->iMonitoredNext != pPage->idx);
    20702074        Assert(pPageHead->iMonitoredPrev != pPage->idx);
     2075        Assert(pPageHead->iMonitoredPrev == NIL_PGMPOOL_IDX || pPool->aPages[pPageHead->iMonitoredPrev].GCPhys == pPage->GCPhys);
     2076        Assert(pPageHead->iMonitoredNext == NIL_PGMPOOL_IDX || pPool->aPages[pPageHead->iMonitoredNext].GCPhys == pPage->GCPhys);
    20712077
    20722078#ifdef PGMPOOL_WITH_OPTIMIZED_DIRTY_PT
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