Lines Matching refs:pPhysPage
63 int pgmPoolTrackFlushGCPhysPTsSlow(PVM pVM, PPGMPAGE pPhysPage);
3137 * @param pPhysPage The guest page in question.
3142 static bool pgmPoolTrackFlushGCPhysPTInt(PVM pVM, PCPGMPAGE pPhysPage, bool fFlushPTEs, uint16_t iShw, uint16_t iPte)
3144 LogFlow(("pgmPoolTrackFlushGCPhysPTInt: pPhysPage=%RHp iShw=%d iPte=%d\n", PGM_PAGE_GET_HCPHYS(pPhysPage), iShw, iPte));
3164 const uint32_t u32 = PGM_PAGE_GET_HCPHYS(pPhysPage) | X86_PTE_P;
3171 switch (PGM_PAGE_GET_HNDL_PHYS_STATE(pPhysPage))
3238 const uint64_t u64 = PGM_PAGE_GET_HCPHYS(pPhysPage) | X86_PTE_P;
3245 switch (PGM_PAGE_GET_HNDL_PHYS_STATE(pPhysPage))
3311 const uint64_t u64 = PGM_PAGE_GET_HCPHYS(pPhysPage) | X86_PDE4M_P | X86_PDE4M_PS;
3345 const uint64_t u64 = PGM_PAGE_GET_HCPHYS(pPhysPage) | X86_PDE4M_P | X86_PDE4M_PS;
3389 * @param pPhysPage The guest page in question.
3393 static void pgmPoolTrackFlushGCPhysPT(PVM pVM, PPGMPAGE pPhysPage, bool fFlushPTEs, uint16_t iShw)
3398 Assert(PGMPOOL_TD_GET_CREFS(PGM_PAGE_GET_TRACKING(pPhysPage)) == 1);
3400 Log2(("pgmPoolTrackFlushGCPhysPT: pPhysPage=%RHp iShw=%d\n", PGM_PAGE_GET_HCPHYS(pPhysPage), iShw));
3402 bool fKeptPTEs = pgmPoolTrackFlushGCPhysPTInt(pVM, pPhysPage, fFlushPTEs, iShw, PGM_PAGE_GET_PTE_INDEX(pPhysPage));
3404 PGM_PAGE_SET_TRACKING(pVM, pPhysPage, 0);
3413 * @param pPhysPage The guest page in question.
3417 static void pgmPoolTrackFlushGCPhysPTs(PVM pVM, PPGMPAGE pPhysPage, bool fFlushPTEs, uint16_t iPhysExt)
3424 Log2(("pgmPoolTrackFlushGCPhysPTs: pPhysPage=%RHp iPhysExt\n", PGM_PAGE_GET_HCPHYS(pPhysPage), iPhysExt));
3436 bool fKeptPTEs = pgmPoolTrackFlushGCPhysPTInt(pVM, pPhysPage, fFlushPTEs, pPhysExt->aidx[i], pPhysExt->apte[i]);
3456 PGM_PAGE_SET_TRACKING(pVM, pPhysPage, 0);
3477 * @param pPhysPage The guest page in question.
3483 int pgmPoolTrackUpdateGCPhys(PVM pVM, RTGCPHYS GCPhysPage, PPGMPAGE pPhysPage, bool fFlushPTEs, bool *pfFlushTLBs)
3491 if (PGM_PAGE_GET_PDE_TYPE(pPhysPage) == PGM_PAGE_PDE_TYPE_PDE)
3504 pLargePage = pPhysPage;
3526 const uint16_t u16 = PGM_PAGE_GET_TRACKING(pPhysPage);
3535 if ( PGM_PAGE_IS_ZERO(pPhysPage)
3536 || PGM_PAGE_IS_BALLOONED(pPhysPage))
3550 pPhysPage,
3555 pgmPoolTrackFlushGCPhysPTs(pVM, pPhysPage, fFlushPTEs, PGMPOOL_TD_GET_IDX(u16));
3557 rc = pgmPoolTrackFlushGCPhysPTsSlow(pVM, pPhysPage);
3589 * @param pPhysPage The guest page in question.
3591 int pgmPoolTrackFlushGCPhysPTsSlow(PVM pVM, PPGMPAGE pPhysPage)
3595 LogFlow(("pgmPoolTrackFlushGCPhysPTsSlow: cUsedPages=%d cPresent=%d pPhysPage=%R[pgmpage]\n",
3596 pPool->cUsedPages, pPool->cPresent, pPhysPage));
3613 const uint64_t u64 = PGM_PAGE_GET_HCPHYS(pPhysPage) | X86_PTE_P; /** @todo drop X86_PTE_P here as we always test if present separately, anyway. */
3715 PGM_PAGE_SET_TRACKING(pVM, pPhysPage, 0);
4070 * @param pPhysPage Pointer to the aPages entry in the ram range.
4075 uint16_t pgmPoolTrackPhysExtAddref(PVM pVM, PPGMPAGE pPhysPage, uint16_t u16, uint16_t iShwPT, uint16_t iPte)
4091 pPhysExt->apte[0] = PGM_PAGE_GET_PTE_INDEX(pPhysPage);
4118 * @param pPhysPage Pointer to the aPages entry in the ram range.
4121 void pgmPoolTrackPhysExtDerefGCPhys(PPGMPOOL pPool, PPGMPOOLPAGE pPage, PPGMPAGE pPhysPage, uint16_t iPte)
4124 const unsigned cRefs = PGM_PAGE_GET_TD_CREFS(pPhysPage);
4125 AssertFatalMsg(cRefs == PGMPOOL_TD_CREFS_PHYSEXT, ("cRefs=%d pPhysPage=%R[pgmpage] pPage=%p:{.idx=%d}\n", cRefs, pPhysPage, pPage, pPage->idx));
4127 uint16_t iPhysExt = PGM_PAGE_GET_TD_IDX(pPhysPage);
4152 Log2(("pgmPoolTrackPhysExtDerefGCPhys: pPhysPage=%R[pgmpage] idx=%d\n", pPhysPage, pPage->idx));
4164 Log2(("pgmPoolTrackPhysExtDerefGCPhys: pPhysPage=%R[pgmpage] idx=%d lonely\n", pPhysPage, pPage->idx));
4165 PGM_PAGE_SET_TRACKING(pVM, pPhysPage, 0);
4170 Log2(("pgmPoolTrackPhysExtDerefGCPhys: pPhysPage=%R[pgmpage] idx=%d head\n", pPhysPage, pPage->idx));
4171 PGM_PAGE_SET_TRACKING(pVM, pPhysPage, PGMPOOL_TD_MAKE(PGMPOOL_TD_CREFS_PHYSEXT, iPhysExtNext));
4177 Log2(("pgmPoolTrackPhysExtDerefGCPhys: pPhysPage=%R[pgmpage] idx=%d in list\n", pPhysPage, pPage->idx));
4193 AssertFatalMsgFailed(("not-found! cRefs=%d pPhysPage=%R[pgmpage] pPage=%p:{.idx=%d}\n", cRefs, pPhysPage, pPage, pPage->idx));
4196 Log2(("pgmPoolTrackPhysExtDerefGCPhys: pPhysPage=%R[pgmpage]\n", pPhysPage));
4218 PPGMPAGE pPhysPage = pgmPhysGetPage(pVM, GCPhys);
4219 if (pPhysPage)
4221 Assert(PGM_PAGE_GET_HCPHYS(pPhysPage));
4223 RTHCPHYS HCPhysPage = PGM_PAGE_GET_HCPHYS(pPhysPage);
4226 if (PGM_PAGE_GET_HCPHYS(pPhysPage) == HCPhys)
4232 pgmTrackDerefGCPhys(pPool, pPage, pPhysPage, iPte);
4237 HCPhys, GCPhys, PGM_PAGE_GET_HCPHYS(pPhysPage)));
4261 PPGMPAGE pPhysPage = pgmPhysGetPage(pVM, GCPhysHint);
4262 if (pPhysPage)
4264 HCPhysHinted = PGM_PAGE_GET_HCPHYS(pPhysPage);
4272 pgmTrackDerefGCPhys(pPool, pPage, pPhysPage, iPte);