Lines Matching refs:pPage

141     /* pPage->cLocked is an unsigned byte. */
460 PPGMPOOLPAGE pPage = &pPool->aPages[i];
463 pPage->pvPageR3 = MMR3PageAlloc(pVM);
465 pPage->pvPageR3 = MMR3PageAllocLow(pVM);
466 if (!pPage->pvPageR3)
472 pPage->Core.Key = MMPage2Phys(pVM, pPage->pvPageR3);
473 AssertFatal(pPage->Core.Key < _4G || fCanUseHighMemory);
474 pPage->GCPhys = NIL_RTGCPHYS;
475 pPage->enmKind = PGMPOOLKIND_FREE;
476 pPage->idx = pPage - &pPool->aPages[0];
477 LogFlow(("PGMR3PoolGrow: insert page #%#x - %RHp\n", pPage->idx, pPage->Core.Key));
478 pPage->iNext = pPool->iFreeHead;
479 pPage->iUserHead = NIL_PGMPOOL_USER_INDEX;
480 pPage->iModifiedNext = NIL_PGMPOOL_IDX;
481 pPage->iModifiedPrev = NIL_PGMPOOL_IDX;
482 pPage->iMonitoredNext = NIL_PGMPOOL_IDX;
483 pPage->iMonitoredPrev = NIL_PGMPOOL_IDX;
484 pPage->iAgeNext = NIL_PGMPOOL_IDX;
485 pPage->iAgePrev = NIL_PGMPOOL_IDX;
487 bool fRc = RTAvloHCPhysInsert(&pPool->HCPhysTree, &pPage->Core); Assert(fRc); NOREF(fRc);
503 * @param pPage The page.
505 static DECLCALLBACK(void) pgmR3PoolFlushReusedPage(PPGMPOOL pPool, PPGMPOOLPAGE pPage)
509 if ( pPage->fReusedFlushPending
510 && pPage->enmKind != PGMPOOLKIND_FREE)
511 pgmPoolFlushPage(pPool, pPage);
537 PPGMPOOLPAGE pPage = (PPGMPOOLPAGE)pvUser;
540 GCPhys, pPage, pPage->Core.Key, pPage->idx, pPage->GCPhys, pPage->enmKind));
552 if (PHYS_PAGE_ADDRESS(GCPhys) != PHYS_PAGE_ADDRESS(pPage->GCPhys))
555 Log(("CPU%d: pgmR3PoolAccessHandler pgm pool page for %RGp changed (to %RGp) while waiting!\n", pVCpu->idCpu, PHYS_PAGE_ADDRESS(GCPhys), PHYS_PAGE_ADDRESS(pPage->GCPhys)));
560 Assert(pPage->enmKind != PGMPOOLKIND_FREE);
566 pPage, pPage->Core.Key, pPage->idx, pPage->GCPhys, pPage->enmKind));
568 if (!pPage->fReusedFlushPending)
571 int rc = VMR3ReqCallVoidNoWait(pPool->pVMR3, VMCPUID_ANY, (PFNRT)pgmR3PoolFlushReusedPage, 2, pPool, pPage);
574 pPage->fReusedFlushPending = true;
575 pPage->cModifications += 0x1000;
578 pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhys, pvPhys, 0 /* unknown write size */);
585 pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhys, pvPhys, 0 /* unknown write size */);
589 else if ( ( pPage->cModifications < 96 /* it's cheaper here. */
590 || pgmPoolIsPageLocked(pPage)
595 if (!pPage->cModifications++)
596 pgmPoolMonitorModifiedInsert(pPool, pPage);
598 pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhys, pvPhys, 0 /* unknown write size */);
603 pgmPoolMonitorChainFlush(pPool, pPage); /* ASSUME that VERR_PGM_POOL_CLEARED can be ignored here and that FFs will deal with it in due time. */
643 PPGMPOOLPAGE pPage = &pPool->aPages[iPage];
644 if (pPage->GCPhys != NIL_RTGCPHYS)
646 switch (pPage->enmKind)
653 if (pPage->cPresent)
655 PX86PDPAE pShwPD = (PX86PDPAE)PGMPOOL_PAGE_2_PTR_V2(pPool->CTX_SUFF(pVM), pVCpu, pPage);
663 Assert(pPage->cPresent);
664 pPage->cPresent--;
667 if (pPage->cPresent == 0)
668 pPage->iFirstPresent = NIL_PGMPOOL_PRESENT_INDEX;
673 if (pPage->cPresent)
675 PEPTPD pShwPD = (PEPTPD)PGMPOOL_PAGE_2_PTR_V2(pPool->CTX_SUFF(pVM), pVCpu, pPage);
684 Assert(pPage->cPresent);
685 pPage->cPresent--;
688 if (pPage->cPresent == 0)
689 pPage->iFirstPresent = NIL_PGMPOOL_PRESENT_INDEX;
704 if (pPage->cPresent)
706 void *pvShw = PGMPOOL_PAGE_2_PTR_V2(pPool->CTX_SUFF(pVM), pVCpu, pPage);
710 switch (pPage->enmKind)
726 AssertFatalMsg(pPage->iFirstPresent <= ptIndex, ("ptIndex = %d first present = %d\n", ptIndex, pPage->iFirstPresent));
727 if (pPage->iFirstPresent != ptIndex)
728 Log(("ptIndex = %d first present = %d\n", ptIndex, pPage->iFirstPresent));
733 pgmPoolTracDerefGCPhysHint(pPool, pPage, PGMSHWPTEPAE_GET_HCPHYS(pPT->a[ptIndex]), NIL_RTGCPHYS);
734 if (pPage->iFirstPresent == ptIndex)
735 pPage->iFirstPresent = NIL_PGMPOOL_PRESENT_INDEX;
739 AssertFatalMsg(pPage->cPresent == 0, ("cPresent = %d pPage = %RGv\n", pPage->cPresent, pPage->GCPhys));
748 pPage->cPresent = 0;
749 pPage->iFirstPresent = NIL_PGMPOOL_PRESENT_INDEX;
758 Assert(!pPage->cModifications || ++cModifiedPages);
759 Assert(pPage->iModifiedNext == NIL_PGMPOOL_IDX || pPage->cModifications);
760 Assert(pPage->iModifiedPrev == NIL_PGMPOOL_IDX || pPage->cModifications);
761 pPage->iModifiedNext = NIL_PGMPOOL_IDX;
762 pPage->iModifiedPrev = NIL_PGMPOOL_IDX;
763 pPage->cModifications = 0;
813 PPGMPOOLPAGE pPage;
821 pPage = &pPool->aPages[idxPage];
822 Assert(pPage->idx == idxPage);
823 Assert(pPage->iMonitoredNext == NIL_PGMPOOL_IDX && pPage->iMonitoredPrev == NIL_PGMPOOL_IDX);
825 AssertMsg(pPage->fDirty, ("Page %RGp (slot=%d) not marked dirty!", pPage->GCPhys, i));
827 Log(("Reactivate dirty page %RGp\n", pPage->GCPhys));
830 int rc = PGMHandlerPhysicalReset(pVM, pPage->GCPhys & PAGE_BASE_GC_MASK);
832 pPage->fDirty = false;
891 PPGMPOOLPAGE pPage = &pPool->aPages[iPage];
892 if ( pPage->GCPhys != NIL_RTGCPHYS
893 && pPage->cPresent)
902 uShw.pv = PGMPOOL_PAGE_2_PTR(pVM, pPage);
904 switch (pPage->enmKind)
964 PPGMPOOLPAGE pPage = &pPool->aPages[i];
968 if (pPage->enmKind == PGMPOOLKIND_PAE_PT_FOR_PAE_PT)
970 PPGMSHWPTPAE pShwPT = (PPGMSHWPTPAE)PGMPOOL_PAGE_2_PTR(pPool->CTX_SUFF(pVM), pPage);
974 int rc = PGMPhysGCPhys2CCPtrReadOnly(pVM, pPage->GCPhys, (const void **)&pGstPT, &LockPage); AssertReleaseRC(rc);
988 DBGCCmdHlpPrintf(pCmdHlp, "Check pool page %RGp\n", pPage->GCPhys);
999 DBGCCmdHlpPrintf(pCmdHlp, "Check pool page %RGp\n", pPage->GCPhys);
1012 int rc = PGMPhysGCPhys2HCPhys(pPool->CTX_SUFF(pVM), pPage->GCPhys, &HCPhysPT);
1013 AssertMsgRC(rc, ("PGMPhysGCPhys2HCPhys failed with rc=%d for %RGp\n", rc, pPage->GCPhys));
1028 && !pPage->fDirty
1034 DBGCCmdHlpPrintf(pCmdHlp, "Check pool page %RGp\n", pPage->GCPhys);