Lines Matching refs:pPage

140                 PPGMPAGE pPage = &pRam->aPages[iPage];
146 if ( PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage)
147 || PGM_PAGE_IS_SPECIAL_ALIAS_MMIO(pPage))
154 Assert(!PGM_PAGE_IS_MMIO_OR_SPECIAL_ALIAS(pPage));
164 int rc = pgmPhysGCPhys2CCPtrInternalReadOnly(pVM, pPage, pRam->GCPhys + off, &pvSrc, &PgMpLck);
173 pRam->GCPhys + off, pPage, rc));
275 PPGMPAGE pPage = &pRam->aPages[iPage];
284 if ( PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)
285 || PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED
286 || PGM_PAGE_IS_SPECIAL_ALIAS_MMIO(pPage))
288 if ( PGM_PAGE_GET_STATE(pPage) == PGM_PAGE_STATE_WRITE_MONITORED
289 && !PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
290 pgmPhysPageMakeWriteMonitoredWritable(pVM, pPage);
299 Assert(!PGM_PAGE_IS_MMIO_OR_SPECIAL_ALIAS(pPage));
309 int rc = pgmPhysGCPhys2CCPtrInternal(pVM, pPage, pRam->GCPhys + off, &pvDst, &PgMpLck);
317 pRam->GCPhys + off, pPage, rc));
381 PPGMPAGE pPage = pTlbe->pPage;
382 if (PGM_PAGE_IS_MMIO_OR_SPECIAL_ALIAS(pPage))
387 else if ( PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)
397 Assert(!PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage));
452 PPGMPAGE pPage = pTlbe->pPage;
453 if (PGM_PAGE_IS_MMIO_OR_SPECIAL_ALIAS(pPage))
463 if ( PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)
464 || PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED
470 if ( PGM_PAGE_GET_STATE(pPage) == PGM_PAGE_STATE_WRITE_MONITORED
471 && !PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)
476 pgmPhysPageMakeWriteMonitoredWritable(pVM, pPage);
493 unsigned cLocks = PGM_PAGE_GET_WRITE_LOCKS(pPage);
498 PGM_PAGE_INC_WRITE_LOCKS(pPage);
500 else if (cLocks != PGM_PAGE_GET_WRITE_LOCKS(pPage))
502 PGM_PAGE_INC_WRITE_LOCKS(pPage);
503 AssertMsgFailed(("%RGp / %R[pgmpage] is entering permanent write locked state!\n", GCPhys, pPage));
509 pLock->uPageAndType = (uintptr_t)pPage | PGMPAGEMAPLOCK_TYPE_WRITE;
553 PPGMPAGE pPage = pTlbe->pPage;
556 if (PGM_PAGE_IS_MMIO_OR_SPECIAL_ALIAS(pPage))
559 if (PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage))
571 unsigned cLocks = PGM_PAGE_GET_READ_LOCKS(pPage);
576 PGM_PAGE_INC_READ_LOCKS(pPage);
578 else if (cLocks != PGM_PAGE_GET_READ_LOCKS(pPage))
580 PGM_PAGE_INC_READ_LOCKS(pPage);
581 AssertMsgFailed(("%RGp / %R[pgmpage] is entering permanent readonly locked state!\n", GCPhys, pPage));
587 pLock->uPageAndType = (uintptr_t)pPage | PGMPAGEMAPLOCK_TYPE_READ;
975 PPGMPAGE pPage = pgmPhysGetPage(pVM, paPhysPage[i]);
976 if ( pPage == NULL
977 || PGM_PAGE_GET_TYPE(pPage) != PGMPAGETYPE_RAM)
979 Log(("pgmR3PhysChangeMemBalloonRendezvous: invalid physical page %RGp pPage->u3Type=%d\n", paPhysPage[i], pPage ? PGM_PAGE_GET_TYPE(pPage) : 0));
988 rc = pgmPhysFreePage(pVM, pReq, &cPendingPages, pPage, paPhysPage[i]);
995 Assert(PGM_PAGE_IS_ZERO(pPage));
996 PGM_PAGE_SET_STATE(pVM, pPage, PGM_PAGE_STATE_BALLOONED);
1016 PPGMPAGE pPage = pgmPhysGetPage(pVM, paPhysPage[i]);
1017 AssertBreak(pPage && PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM);
1021 Assert(PGM_PAGE_IS_BALLOONED(pPage));
1024 PGM_PAGE_SET_STATE(pVM, pPage, PGM_PAGE_STATE_ZERO);
1161 PPGMPAGE pPage = &pRam->aPages[iPage];
1162 PGMPAGETYPE enmPageType = (PGMPAGETYPE)PGM_PAGE_GET_TYPE(pPage);
1170 switch (PGM_PAGE_GET_STATE(pPage))
1175 if (PGM_PAGE_IS_WRITTEN_TO(pPage))
1177 PGM_PAGE_CLEAR_WRITTEN_TO(pVM, pPage);
1179 PGM_PAGE_SET_FT_DIRTY(pPage);
1182 pgmPhysPageWriteMonitor(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT));
1240 PPGMPAGE pPage = &pRam->aPages[iPage];
1241 PGMPAGETYPE enmPageType = (PGMPAGETYPE)PGM_PAGE_GET_TYPE(pPage);
1249 switch (PGM_PAGE_GET_STATE(pPage))
1253 if ( !PGM_PAGE_IS_WRITTEN_TO(pPage) /* not very recently updated? */
1254 && PGM_PAGE_IS_FT_DIRTY(pPage))
1788 PPGMPAGE pPage = &pRam->aPages[0];
1793 if (PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM)
1795 switch (PGM_PAGE_GET_STATE(pPage))
1799 int rc = pgmPhysAllocPage(pVM, pPage, GCPhys);
1820 pPage++;
1855 PPGMPAGE pPage = &pRam->aPages[iPage];
1856 if (PGM_PAGE_IS_SHARED(pPage))
1858 uint32_t u32Checksum = pPage->s.u2Unused0 | ((uint32_t)pPage->s.u2Unused1 << 8);
1863 int rc = pgmPhysPageMapReadOnly(pVM, pPage, GCPhysPage, &pvPage);
1871 LogFlow(("shpg %#x @ %RGp %#x [OK]\n", PGM_PAGE_GET_PAGEID(pPage), GCPhysPage, u32Checksum2));
1873 AssertMsgFailed(("shpg %#x @ %RGp %#x\n", PGM_PAGE_GET_PAGEID(pPage), GCPhysPage, u32Checksum2));
1960 PPGMPAGE pPage = &pRam->aPages[iPage];
1961 switch (PGM_PAGE_GET_TYPE(pPage))
1966 if ( PGM_PAGE_GET_PDE_TYPE(pPage) == PGM_PAGE_PDE_TYPE_PDE
1967 || PGM_PAGE_GET_PDE_TYPE(pPage) == PGM_PAGE_PDE_TYPE_PDE_DISABLED)
1970 rc = pgmPhysPageMap(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pvPage);
1974 else if (PGM_PAGE_IS_BALLOONED(pPage))
1977 PGM_PAGE_SET_STATE(pVM, pPage, PGM_PAGE_STATE_ZERO);
1979 else if (!PGM_PAGE_IS_ZERO(pPage))
1981 rc = pgmPhysFreePage(pVM, pReq, &cPendingPages, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT));
1988 pgmHandlerPhysicalResetAliasedPage(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT),
2007 PPGMPAGE pPage = &pRam->aPages[iPage];
2008 switch (PGM_PAGE_GET_TYPE(pPage))
2011 switch (PGM_PAGE_GET_STATE(pPage))
2018 PGM_PAGE_SET_STATE(pVM, pPage, PGM_PAGE_STATE_ZERO);
2023 rc = pgmPhysPageMakeWritable(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT));
2030 rc = pgmPhysPageMap(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pvPage);
2042 pgmHandlerPhysicalResetAliasedPage(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT),
2123 PPGMPAGE pPage = &pRam->aPages[iPage];
2124 switch (PGM_PAGE_GET_TYPE(pPage))
2129 if (PGM_PAGE_IS_SHARED(pPage))
2131 rc = pgmPhysFreePage(pVM, pReq, &cPendingPages, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT));
2222 PCPGMPAGE pPage = &pRam->aPages[(GCPhys - pRam->GCPhys) >> PAGE_SHIFT];
2226 AssertLogRelMsgReturnStmt( PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM
2227 || PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_MMIO,
2229 GCPhys, GCPhysLast, pszDesc, pRam->GCPhys, PGM_PAGE_GET_TYPE(pPage), pRam->pszDesc),
2232 pPage++;
2374 PPGMPAGE pPage = &pRam->aPages[iPage];
2375 if ( !PGM_PAGE_IS_MMIO_OR_ALIAS(pPage)
2379 AssertMsgFailed(("%RGp %R[pgmpage]\n", pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), pPage));
2382 Assert( PGM_PAGE_IS_ZERO(pPage)
2383 || PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_MMIO2_ALIAS_MMIO
2384 || PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_SPECIAL_ALIAS_MMIO);
2385 pPage++;
2421 PPGMPAGE pPage = &pRam->aPages[iPage];
2422 AssertMsg( (PGM_PAGE_IS_MMIO(pPage) && PGM_PAGE_IS_ZERO(pPage))
2423 || PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_MMIO2_ALIAS_MMIO
2424 || PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_SPECIAL_ALIAS_MMIO,
2425 ("%RGp %R[pgmpage]\n", pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), pPage));
2426 if (PGM_PAGE_IS_MMIO_OR_ALIAS(pPage))
2427 PGM_PAGE_SET_TYPE(pVM, pPage, PGMPAGETYPE_RAM);
2806 PPGMPAGE pPage = &pRam->aPages[(GCPhys - pRam->GCPhys) >> PAGE_SHIFT];
2810 AssertLogRelMsgReturn(PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM,
2812 GCPhys, PGM_PAGE_GET_TYPE(pPage), GCPhys, GCPhysLast, pCur->RamRange.pszDesc),
2814 pPage++;
3070 PCPGMPAGE pPage = &pCur->RamRange.aPages[off >> PAGE_SHIFT];
3071 *pHCPhys = PGM_PAGE_GET_HCPHYS(pPage);
3210 PPGMPAGE pPage = &pRam->aPages[(GCPhys - pRam->GCPhys) >> PAGE_SHIFT];
3214 AssertLogRelMsgReturn(PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM,
3216 pRam->GCPhys + ((RTGCPHYS)(uintptr_t)(pPage - &pRam->aPages[0]) << PAGE_SHIFT),
3217 pPage, GCPhys, GCPhysLast, pszDesc), VERR_PGM_RAM_CONFLICT);
3218 Assert(PGM_PAGE_IS_ZERO(pPage));
3219 pPage++;
3285 PPGMPAGE pPage = &pRamNew->aPages[0];
3286 for (uint32_t iPage = 0; iPage < cPages; iPage++, pPage++, pRomPage++)
3288 PGM_PAGE_INIT(pPage,
3294 pRomPage->Virgin = *pPage;
3302 PPGMPAGE pPage = &pRam->aPages[(GCPhys - pRam->GCPhys) >> PAGE_SHIFT];
3303 for (uint32_t iPage = 0; iPage < cPages; iPage++, pPage++, pRomPage++)
3305 PGM_PAGE_SET_TYPE(pVM, pPage, PGMPAGETYPE_ROM);
3306 PGM_PAGE_SET_HCPHYS(pVM, pPage, pReq->aPages[iPage].HCPhysGCPhys);
3307 PGM_PAGE_SET_STATE(pVM, pPage, PGM_PAGE_STATE_ALLOCATED);
3308 PGM_PAGE_SET_PAGEID(pVM, pPage, pReq->aPages[iPage].idPage);
3309 PGM_PAGE_SET_PDE_TYPE(pVM, pPage, PGM_PAGE_PDE_TYPE_DONTCARE);
3310 PGM_PAGE_SET_PTE_INDEX(pVM, pPage, 0);
3311 PGM_PAGE_SET_TRACKING(pVM, pPage, 0);
3313 pRomPage->Virgin = *pPage;
3409 PPGMROMPAGE pPage = &pRomNew->aPages[iPage];
3410 pPage->enmProt = PGMROMPROT_READ_ROM_WRITE_IGNORE;
3411 PGM_PAGE_INIT_ZERO(&pPage->Shadow, pVM, PGMPAGETYPE_ROM_SHADOW);
4318 PPGMPAGE pPage;
4319 rc = pgmPhysGetPageEx(pVM, GCPhys, &pPage);
4322 Assert(PGM_PAGE_IS_ZERO(pPage));
4330 PGM_PAGE_SET_HCPHYS(pVM, pPage, HCPhys);
4331 PGM_PAGE_SET_PAGEID(pVM, pPage, idPage);
4332 PGM_PAGE_SET_STATE(pVM, pPage, PGM_PAGE_STATE_ALLOCATED);
4333 PGM_PAGE_SET_PDE_TYPE(pVM, pPage, PGM_PAGE_PDE_TYPE_PDE);
4334 PGM_PAGE_SET_PTE_INDEX(pVM, pPage, 0);
4335 PGM_PAGE_SET_TRACKING(pVM, pPage, 0);
4473 PGMMPAGEDESC pPage = &pVM->pgm.s.aHandyPages[iClear];
4475 rc = pgmPhysPageMapByPageID(pVM, pPage->idPage, pPage->HCPhysGCPhys, &pv);
4478 iClear, pVM->pgm.s.cHandyPages, pPage->idPage, pPage->HCPhysGCPhys, rc));
4481 Log3(("PGMR3PhysAllocateHandyPages: idPage=%#x HCPhys=%RGp\n", pPage->idPage, pPage->HCPhysGCPhys));
4561 * @param pPage Pointer to the page structure.
4566 int pgmPhysFreePage(PVM pVM, PGMMFREEPAGESREQ pReq, uint32_t *pcPendingPages, PPGMPAGE pPage, RTGCPHYS GCPhys)
4572 if (RT_UNLIKELY( PGM_PAGE_GET_TYPE(pPage) != PGMPAGETYPE_RAM
4573 && PGM_PAGE_GET_TYPE(pPage) != PGMPAGETYPE_ROM_SHADOW))
4575 AssertMsgFailed(("GCPhys=%RGp pPage=%R[pgmpage]\n", GCPhys, pPage));
4576 return VMSetError(pVM, VERR_PGM_PHYS_NOT_RAM, RT_SRC_POS, "GCPhys=%RGp type=%d", GCPhys, PGM_PAGE_GET_TYPE(pPage));
4580 Assert( PGM_PAGE_GET_PDE_TYPE(pPage) != PGM_PAGE_PDE_TYPE_PDE
4581 && PGM_PAGE_GET_PDE_TYPE(pPage) != PGM_PAGE_PDE_TYPE_PDE_DISABLED);
4583 if ( PGM_PAGE_IS_ZERO(pPage)
4584 || PGM_PAGE_IS_BALLOONED(pPage))
4587 const uint32_t idPage = PGM_PAGE_GET_PAGEID(pPage);
4588 Log3(("pgmPhysFreePage: idPage=%#x GCPhys=%RGp pPage=%R[pgmpage]\n", idPage, GCPhys, pPage));
4591 || PGM_PAGE_GET_CHUNKID(pPage) == NIL_GMM_CHUNKID))
4593 AssertMsgFailed(("GCPhys=%RGp pPage=%R[pgmpage]\n", GCPhys, pPage));
4594 return VMSetError(pVM, VERR_PGM_PHYS_INVALID_PAGE_ID, RT_SRC_POS, "GCPhys=%RGp idPage=%#x", GCPhys, pPage);
4598 if (PGM_PAGE_IS_SHARED(pPage))
4605 if (PGM_PAGE_GET_STATE(pPage) == PGM_PAGE_STATE_WRITE_MONITORED)
4607 PGM_PAGE_SET_WRITTEN_TO(pVM, pPage);
4612 * pPage = ZERO page.
4614 PGM_PAGE_SET_HCPHYS(pVM, pPage, pVM->pgm.s.HCPhysZeroPg);
4615 PGM_PAGE_SET_STATE(pVM, pPage, PGM_PAGE_STATE_ZERO);
4616 PGM_PAGE_SET_PAGEID(pVM, pPage, NIL_GMM_PAGEID);
4617 PGM_PAGE_SET_PDE_TYPE(pVM, pPage, PGM_PAGE_PDE_TYPE_DONTCARE);
4618 PGM_PAGE_SET_PTE_INDEX(pVM, pPage, 0);
4619 PGM_PAGE_SET_TRACKING(pVM, pPage, 0);
4692 PPGMPAGE pPage;
4693 int rc = pgmPhysGetPageAndRangeEx(pVM, GCPhys, &pPage, &pRam);
4696 if (PGM_PAGE_IS_BALLOONED(pPage))
4698 else if (!PGM_PAGE_HAS_ANY_HANDLERS(pPage))
4702 if (PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage)) /* catches MMIO */
4704 else if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
4728 switch (PGM_PAGE_GET_STATE(pPage))
4740 rc2 = pgmPhysPageMakeWritable(pVM, pPage, GCPhys & ~(RTGCPHYS)PAGE_OFFSET_MASK);
4753 Log6(("PGMR3PhysTlbGCPhys2Ptr: GCPhys=%RGp rc=%Rrc pPage=%R[pgmpage] *ppv=%p\n", GCPhys, rc, pPage, *ppv));
4756 Log6(("PGMR3PhysTlbGCPhys2Ptr: GCPhys=%RGp rc=%Rrc pPage=%R[pgmpage]\n", GCPhys, rc, pPage));