Changeset 22709 in vbox
- Timestamp:
- Sep 2, 2009 11:46:18 AM (15 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
-
PGMInternal.h (modified) (1 diff)
-
PGMPhys.cpp (modified) (2 diffs)
-
VMMAll/PGMAllPool.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMInternal.h
r22695 r22709 3055 3055 PPGMPOOLPAGE pgmPoolGetPage(PPGMPOOL pPool, RTHCPHYS HCPhys); 3056 3056 int pgmPoolSyncCR3(PVMCPU pVCpu); 3057 bool pgmPoolIsDirtyPage(PVM pVM, RTGCPHYS GCPhys); 3057 3058 int pgmPoolTrackFlushGCPhys(PVM pVM, PPGMPAGE pPhysPage, bool *pfFlushTLBs); 3058 3059 uint16_t pgmPoolTrackPhysExtAddref(PVM pVM, uint16_t u16, uint16_t iShwPT); -
trunk/src/VBox/VMM/PGMPhys.cpp
r22698 r22709 375 375 } 376 376 else 377 if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)) 377 if ( PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage) 378 #ifdef PGMPOOL_WITH_OPTIMIZED_DIRTY_PT 379 || pgmPoolIsDirtyPage(pVM, GCPhys) 380 #endif 381 ) 378 382 { 379 383 /* We *must* flush any corresponding pgm pool page here, otherwise we'll … … 445 449 */ 446 450 if ( PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage) 451 #ifdef PGMPOOL_WITH_OPTIMIZED_DIRTY_PT 452 || pgmPoolIsDirtyPage(pVM, GCPhys) 453 #endif 447 454 || RT_UNLIKELY(PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED)) 448 455 { -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r22701 r22709 1609 1609 1610 1610 /** 1611 * Check if the specified page is dirty (not write monitored) 1612 * 1613 * @return dirty or not 1614 * @param pVM VM Handle. 1615 * @param GCPhys Guest physical address 1616 */ 1617 bool pgmPoolIsDirtyPage(PVM pVM, RTGCPHYS GCPhys) 1618 { 1619 if (!pPool->cDirtyPages) 1620 return false; 1621 1622 for (unsigned i = 0; i < RT_ELEMENTS(pPool->aIdxDirtyPages); i++) 1623 { 1624 if (pPool->aIdxDirtyPages[idxSlot] != NIL_PGMPOOL_IDX) 1625 { 1626 PPGMPOOLPAGE pPage; 1627 unsigned idxPage = pPool->aIdxDirtyPages[idxSlot]; 1628 AssertRelease(idxPage != NIL_PGMPOOL_IDX); 1629 1630 pPage = &pPool->aPages[idxPage]; 1631 if (pPage->GCPhys == GCPhys) 1632 return true; 1633 } 1634 } 1635 return false; 1636 } 1637 1638 /** 1611 1639 * Reset all dirty pages by reinstating page monitoring. 1612 1640 *
Note:
See TracChangeset
for help on using the changeset viewer.

