Changeset 4714 in vbox
- Timestamp:
- Sep 11, 2007 4:30:42 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 24386
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGM.cpp
r4713 r4714 925 925 return rc; 926 926 927 /* Initialise PGM critical section. */ 927 /* 928 * Initialize the PGM critical section and flush the phys TLBs 929 */ 928 930 rc = PDMR3CritSectInit(pVM, &pVM->pgm.s.CritSect, "PGM"); 929 931 AssertRCReturn(rc, rc); 930 932 931 /*932 * Invalidate the TLBs.933 */934 933 PGMR3PhysChunkInvalidateTLB(pVM); 935 934 PGMPhysInvalidatePageR3MapTLB(pVM); … … 944 943 { 945 944 pVM->pgm.s.pTreesGC = MMHyperHC2GC(pVM, pVM->pgm.s.pTreesHC); 945 946 /* 947 * Alocate the zero page. 948 */ 949 rc = MMHyperAlloc(pVM, PAGE_SIZE, PAGE_SIZE, MM_TAG_PGM, &pVM->pgm.s.pvZeroPgR3); 950 } 951 if (VBOX_SUCCESS(rc)) 952 { 953 pVM->pgm.s.pvZeroPgGC = MMHyperR3ToGC(pVM, pVM->pgm.s.pvZeroPgR3); 954 pVM->pgm.s.pvZeroPgR0 = MMHyperR3ToR0(pVM, pVM->pgm.s.pvZeroPgR3); 955 AssertRelease(pVM->pgm.s.pvZeroPgR0 != NIL_RTHCPHYS); 956 pVM->pgm.s.HCPhysZeroPg = MMR3HyperHCVirt2HCPhys(pVM, pVM->pgm.s.pvZeroPgR3); 957 AssertRelease(pVM->pgm.s.HCPhysZeroPg != NIL_RTHCPHYS); 946 958 947 959 /* … … 995 1007 return VINF_SUCCESS; 996 1008 } 997 /* No cleanup necessary, MM frees all memory. */ 1009 1010 /* Almost no cleanup necessary, MM frees all memory. */ 1011 PDMR3CritSectDelete(&pVM->pgm.s.CritSect); 998 1012 999 1013 return rc; … … 1608 1622 pVM->pgm.s.paDynPageMapPaePTEsGC += offDelta; 1609 1623 pVM->pgm.s.pbDynPageMapBaseGC += offDelta; 1624 1625 /* 1626 * The Zero page. 1627 */ 1628 pVM->pgm.s.pvZeroPgR0 = MMHyperR3ToR0(pVM, pVM->pgm.s.pvZeroPgR3); 1629 AssertRelease(pVM->pgm.s.pvZeroPgR0); 1610 1630 1611 1631 /* -
trunk/src/VBox/VMM/PGMInternal.h
r4713 r4714 1835 1835 PGMPAGER3MAPTLB PhysTlbHC; 1836 1836 1837 /** @name The zero page. 1838 * @{ */ 1839 /** The host physical address of the zero page. */ 1840 RTHCPHYS HCPhysZeroPg; 1841 /** The ring-3 mapping of the zero page. */ 1842 RTR3PTR pvZeroPgR3; 1843 /** The ring-0 mapping of the zero page. */ 1844 RTR0PTR pvZeroPgR0; 1845 /** The GC mapping of the zero page. */ 1846 RTGCPTR pvZeroPgGC; 1847 #if GC_ARCH_BITS == 32 1848 uint32_t u32ZeroAlignment; /**< Alignment padding. */ 1849 #endif 1850 /** @}*/ 1851 1837 1852 /** @name Release Statistics 1838 1853 * @{ */ -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r4713 r4714 250 250 *ppMap = NULL; 251 251 RTHCPHYS HCPhys = PGM_PAGE_GET_HCPHYS(pPage); 252 /** @todo Assert(HCPhys != pVM->pgm.s.HCPhysZeroPg); */252 Assert(HCPhys != pVM->pgm.s.HCPhysZeroPg); 253 253 return PGMGCDynMapHCPage(pVM, HCPhys, ppv); 254 254 … … 298 298 { 299 299 Assert(PGM_PAGE_IS_ZERO(pPage)); 300 ///@todo *ppv = pVM->pgm.s.pvZeroPgR3;300 *ppv = pVM->pgm.s.CTXALLSUFF(pvZeroPg); 301 301 *ppMap = NULL; 302 302 return VINF_SUCCESS; … … 359 359 else 360 360 { 361 /** @todo Assert(PGM_PAGE_GET_HCPHYS(pPage) == pPGM->HCPhysZeroPg); */361 Assert(PGM_PAGE_GET_HCPHYS(pPage) == pPGM->HCPhysZeroPg); 362 362 pTlbe->pMap = NULL; 363 /** @todo pTlbe->pv = pPGM->pvZeroPgR3; */363 pTlbe->pv = pPGM->CTXALLSUFF(pvZeroPg); 364 364 } 365 365 pTlbe->pPage = pPage; -
trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp
r4620 r4714 407 407 GEN_CHECK_OFF(PGM, pgmphysreadcache); 408 408 GEN_CHECK_OFF(PGM, pgmphyswritecache); 409 GEN_CHECK_OFF(PGM, ChunkR3Map); 410 GEN_CHECK_OFF(PGM, ChunkR3Map.pTree); 411 GEN_CHECK_OFF(PGM, ChunkR3Map.Tlb); 412 GEN_CHECK_OFF(PGM, ChunkR3Map.c); 413 GEN_CHECK_OFF(PGM, ChunkR3Map.cMax); 414 GEN_CHECK_OFF(PGM, ChunkR3Map.iNow); 415 GEN_CHECK_OFF(PGM, ChunkR3Map.AgeingCountdown); 416 GEN_CHECK_OFF(PGM, PhysTlbHC); 417 GEN_CHECK_OFF(PGM, PhysTlbHC.aEntries[0]); 418 GEN_CHECK_OFF(PGM, PhysTlbHC.aEntries[1]); 419 GEN_CHECK_OFF(PGM, PhysTlbHC.aEntries[1].GCPhys); 420 GEN_CHECK_OFF(PGM, PhysTlbHC.aEntries[1].pMap); 421 GEN_CHECK_OFF(PGM, PhysTlbHC.aEntries[1].pPage); 422 GEN_CHECK_OFF(PGM, PhysTlbHC.aEntries[1].pv); 423 GEN_CHECK_OFF(PGM, HCPhysZeroPg); 424 GEN_CHECK_OFF(PGM, pvZeroPgR3); 425 GEN_CHECK_OFF(PGM, pvZeroPgR0); 426 GEN_CHECK_OFF(PGM, pvZeroPgGC); 427 409 428 GEN_CHECK_SIZE(PGMMAPPING); 410 429 GEN_CHECK_OFF(PGMMAPPING, pNextR3);
Note:
See TracChangeset
for help on using the changeset viewer.