Changeset 27271 in vbox
- Timestamp:
- Mar 11, 2010 11:08:29 AM (15 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMInternal.h
r27184 r27271 3390 3390 bool pgmPoolIsDirtyPage(PVM pVM, RTGCPHYS GCPhys); 3391 3391 int pgmPoolTrackUpdateGCPhys(PVM pVM, RTGCPHYS GCPhysPage, PPGMPAGE pPhysPage, bool fFlushPTEs, bool *pfFlushTLBs); 3392 void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCPhys, RTGCPHYS GCPhysHint); 3392 3393 void pgmPoolInvalidateDirtyPage(PVM pVM, RTGCPHYS GCPhysPT); 3393 3394 DECLINLINE(int) pgmPoolTrackFlushGCPhys(PVM pVM, RTGCPHYS GCPhysPage, PPGMPAGE pPhysPage, bool *pfFlushTLBs) -
trunk/src/VBox/VMM/PGMPool.cpp
r26364 r27271 641 641 void *pvShw = PGMPOOL_PAGE_2_PTR(pPool->CTX_SUFF(pVM), pPage); 642 642 STAM_PROFILE_START(&pPool->StatZeroPage, z); 643 #ifdef DEBUG_sandervl 644 switch (pPage->enmKind) 645 { 646 case PGMPOOLKIND_PAE_PT_FOR_32BIT_PT: 647 case PGMPOOLKIND_PAE_PT_FOR_32BIT_4MB: 648 case PGMPOOLKIND_PAE_PT_FOR_PAE_PT: 649 case PGMPOOLKIND_PAE_PT_FOR_PAE_2MB: 650 case PGMPOOLKIND_PAE_PT_FOR_PHYS: 651 { 652 bool fFoundFirst = false; 653 PX86PT pPT = (PX86PT)pvShw; 654 for (unsigned ptIndex = 0; ptIndex < RT_ELEMENTS(pPT->a); ptIndex++) 655 { 656 if (pPT->a[ptIndex].u) 657 { 658 if (!fFoundFirst) 659 { 660 AssertFatalMsg(pPage->iFirstPresent <= ptIndex, ("ptIndex = %d first present = %d\n", ptIndex, pPage->iFirstPresent)); 661 if (pPage->iFirstPresent != ptIndex) 662 Log(("ptIndex = %d first present = %d\n", ptIndex, pPage->iFirstPresent)); 663 fFoundFirst = true; 664 } 665 if (pPT->a[ptIndex].n.u1Present) 666 { 667 pgmPoolTracDerefGCPhysHint(pPool, pPage, pPT->a[ptIndex].u & X86_PTE_PAE_PG_MASK, NIL_RTGCPHYS); 668 if (pPage->iFirstPresent == ptIndex) 669 pPage->iFirstPresent = NIL_PGMPOOL_PRESENT_INDEX; 670 } 671 } 672 } 673 AssertFatalMsg(pPage->cPresent == 0, ("cPresent = %d pPage = 0x%x\n", pPage->cPresent, (uint32_t) pPage)); 674 break; 675 } 676 default: 677 break; 678 } 679 #endif 643 680 ASMMemZeroPage(pvShw); 644 681 STAM_PROFILE_STOP(&pPool->StatZeroPage, z); -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r27204 r27271 68 68 void pgmPoolTrackPhysExtFree(PVM pVM, uint16_t iPhysExt); 69 69 void pgmPoolTrackPhysExtFreeList(PVM pVM, uint16_t iPhysExt); 70 static void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCPhys, RTGCPHYS GCPhysHint);71 70 72 71 RT_C_DECLS_END … … 3232 3231 PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool); NOREF(pPool); 3233 3232 3234 /* We should only come here with when there's only one reference inthis physical page. */3233 /* We should only come here with when there's only one reference to this physical page. */ 3235 3234 Assert(PGMPOOL_TD_GET_CREFS(PGM_PAGE_GET_TRACKING(pPhysPage)) == 1); 3236 3235 Assert(cRefs == 1); … … 4025 4024 * @param GCPhysHint The guest physical address which may corresponding to HCPhys. 4026 4025 */ 4027 staticvoid pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCPhys, RTGCPHYS GCPhysHint)4026 void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCPhys, RTGCPHYS GCPhysHint) 4028 4027 { 4029 4028 Log4(("pgmPoolTracDerefGCPhysHint %RHp %RGp\n", HCPhys, GCPhysHint));
Note:
See TracChangeset
for help on using the changeset viewer.