Lines Matching refs:pPage

326  * @param   pPage       The GMM page.
329 # define GMM_PAGE_IS_PRIVATE(pPage) ( (pPage)->Common.u2State == GMM_PAGE_STATE_PRIVATE )
331 # define GMM_PAGE_IS_PRIVATE(pPage) ( (pPage)->Private.fZero == 0 )
337 * @param pPage The GMM page.
339 #define GMM_PAGE_IS_SHARED(pPage) ( (pPage)->Common.u2State == GMM_PAGE_STATE_SHARED )
344 * @param pPage The GMM page.
346 #define GMM_PAGE_IS_FREE(pPage) ( (pPage)->Common.u2State == GMM_PAGE_STATE_FREE )
743 DECLINLINE(void) gmmR0FreePrivatePage(PGMM pGMM, PGVM pGVM, uint32_t idPage, PGMMPAGE pPage);
744 DECLINLINE(void) gmmR0FreeSharedPage(PGMM pGMM, PGVM pGVM, uint32_t idPage, PGMMPAGE pPage);
2051 PGMMPAGE pPage = &pChunk->aPages[iPage];
2052 Assert(GMM_PAGE_IS_FREE(pPage));
2053 pChunk->iFreeHead = pPage->Free.iNext;
2054 Log3(("A pPage=%p iPage=%#x/%#x u2State=%d iFreeHead=%#x iNext=%#x\n",
2055 pPage, iPage, (pChunk->Core.Key << GMM_CHUNKID_SHIFT) | iPage,
2056 pPage->Common.u2State, pChunk->iFreeHead, pPage->Free.iNext));
2059 pPage->u = 0;
2061 pPage->Private.hGVM = hGVM;
2065 pPage->Private.pfn = pPageDesc->HCPhysGCPhys >> PAGE_SHIFT;
2067 pPage->Private.pfn = GMM_PAGE_PFN_UNSHAREABLE; /* unshareable / unassigned - same thing. */
2675 PGMMPAGE pPage = gmmR0GetPage(pGMM, idPage);
2676 if (RT_LIKELY(pPage))
2678 Assert(GMM_PAGE_IS_PRIVATE(pPage));
2679 Assert(pPage->Private.hGVM == pGVM->hSelf);
2680 gmmR0FreePrivatePage(pGMM, pGVM, idPage, pPage);
2791 PGMMPAGE pPage = gmmR0GetPage(pGMM, paPages[iPage].idPage);
2792 if (RT_LIKELY(pPage))
2794 if (RT_LIKELY(GMM_PAGE_IS_PRIVATE(pPage)))
2796 if (RT_LIKELY(pPage->Private.hGVM == pGVM->hSelf))
2800 pPage->Private.pfn = paPages[iPage].HCPhysGCPhys >> PAGE_SHIFT;
2802 pPage->Private.pfn = GMM_PAGE_PFN_UNSHAREABLE;
2811 iPage, paPages[iPage].idPage, pPage->Private.hGVM, pGVM->hSelf));
2818 Log(("GMMR0AllocateHandyPages: #%#x/%#x: Not private! %.*Rhxs (type %d)\n", iPage, paPages[iPage].idPage, sizeof(*pPage), pPage, pPage->Common.u2State));
2833 PGMMPAGE pPage = gmmR0GetPage(pGMM, paPages[iPage].idSharedPage);
2834 if (RT_LIKELY(pPage))
2836 if (RT_LIKELY(GMM_PAGE_IS_SHARED(pPage)))
2839 Assert(pPage->Shared.cRefs);
2843 Log(("GMMR0AllocateHandyPages: free shared page %x cRefs=%d\n", paPages[iPage].idSharedPage, pPage->Shared.cRefs));
2846 if (!--pPage->Shared.cRefs)
2847 gmmR0FreeSharedPage(pGMM, pGVM, paPages[iPage].idSharedPage, pPage);
3155 PGMMPAGE pPage = gmmR0GetPage(pGMM, idPage);
3156 if (RT_LIKELY( pPage
3157 && GMM_PAGE_IS_PRIVATE(pPage)))
3309 * @param pPage Pointer to the page.
3311 static void gmmR0FreePageWorker(PGMM pGMM, PGVM pGVM, PGMMCHUNK pChunk, uint32_t idPage, PGMMPAGE pPage)
3313 Log3(("F pPage=%p iPage=%#x/%#x u2State=%d iFreeHead=%#x\n",
3314 pPage, pPage - &pChunk->aPages[0], idPage, pPage->Common.u2State, pChunk->iFreeHead)); NOREF(idPage);
3319 pPage->u = 0;
3320 pPage->Free.u2State = GMM_PAGE_STATE_FREE;
3322 pPage->Free.iNext = pChunk->iFreeHead;
3323 pChunk->iFreeHead = pPage - &pChunk->aPages[0];
3368 * @param pPage The page structure.
3370 DECLINLINE(void) gmmR0FreeSharedPage(PGMM pGMM, PGVM pGVM, uint32_t idPage, PGMMPAGE pPage)
3378 Assert(!pPage->Shared.cRefs);
3383 gmmR0FreePageWorker(pGMM, pGVM, pChunk, idPage, pPage);
3393 * @param pPage The page structure.
3395 DECLINLINE(void) gmmR0FreePrivatePage(PGMM pGMM, PGVM pGVM, uint32_t idPage, PGMMPAGE pPage)
3405 gmmR0FreePageWorker(pGMM, pGVM, pChunk, idPage, pPage);
3464 PGMMPAGE pPage = gmmR0GetPage(pGMM, idPage);
3465 if (RT_LIKELY(pPage))
3467 if (RT_LIKELY(GMM_PAGE_IS_PRIVATE(pPage)))
3469 if (RT_LIKELY(pPage->Private.hGVM == pGVM->hSelf))
3473 gmmR0FreePrivatePage(pGMM, pGVM, idPage, pPage);
3478 pPage->Private.hGVM, pGVM->hSelf));
3483 else if (RT_LIKELY(GMM_PAGE_IS_SHARED(pPage)))
3486 Assert(pPage->Shared.cRefs);
3488 if (pPage->Shared.u14Checksum)
3492 AssertMsg(!uChecksum || uChecksum == pPage->Shared.u14Checksum,
3493 ("%#x vs %#x - idPage=%#x\n", uChecksum, pPage->Shared.u14Checksum, idPage));
3497 if (!--pPage->Shared.cRefs)
3498 gmmR0FreeSharedPage(pGMM, pGVM, idPage, pPage);
4773 * @param pPage The page structure.
4775 DECLINLINE(void) gmmR0UseSharedPage(PGMM pGMM, PGVM pGVM, PGMMPAGE pPage)
4782 pPage->Shared.cRefs++;
4795 * @param pPage The page structure.
4797 DECLINLINE(void) gmmR0ConvertToSharedPage(PGMM pGMM, PGVM pGVM, RTHCPHYS HCPhys, uint32_t idPage, PGMMPAGE pPage,
4803 Assert(GMM_PAGE_IS_PRIVATE(pPage));
4814 pPage->Shared.pfn = (uint32_t)(uint64_t)(HCPhys >> PAGE_SHIFT);
4815 pPage->Shared.cRefs = 1;
4818 pPage->Shared.u14Checksum = pPageDesc->u32StrictChecksum;
4820 pPage->Shared.u14Checksum = 0;
4822 pPage->Shared.u2State = GMM_PAGE_STATE_SHARED;
4833 PGMMPAGE pPage = gmmR0GetPage(pGMM, pPageDesc->idPage);
4834 AssertMsgReturn(pPage, ("idPage=%#x (GCPhys=%RGp HCPhys=%RHp idxRegion=%#x idxPage=%#x) #1\n",
4838 AssertMsg(pPageDesc->GCPhys == (pPage->Private.pfn << 12), ("desc %RGp gmm %RGp\n", pPageDesc->HCPhys, (pPage->Private.pfn << 12)));
4840 gmmR0ConvertToSharedPage(pGMM, pGVM, pPageDesc->HCPhys, pPageDesc->idPage, pPage, pPageDesc);
4922 PGMMPAGE pPage = gmmR0GetPage(pGMM, pGlobalRegion->paidPages[idxPage]);
4923 AssertMsgReturn(pPage, ("idPage=%#x (idxRegion=%#x idxPage=%#x) #2\n", pPageDesc->idPage, idxRegion, idxPage),
4926 if (pPage->Common.u2State != GMM_PAGE_STATE_SHARED)
4937 Log(("Replace existing page guest host %RHp -> %RHp\n", pPageDesc->HCPhys, ((uint64_t)pPage->Shared.pfn) << PAGE_SHIFT));
4973 AssertMsg(!uChecksum || uChecksum == pPage->Shared.u14Checksum || !pPage->Shared.u14Checksum,
4974 ("%#x vs %#x - idPage=%# - %s %s\n", uChecksum, pPage->Shared.u14Checksum,
4995 gmmR0UseSharedPage(pGMM, pGVM, pPage);
5000 pPageDesc->HCPhys = ((uint64_t)pPage->Shared.pfn) << PAGE_SHIFT;
5305 PGMMPAGE pPage = gmmR0GetPage(pGMM, pReq->idPage);
5306 if (pPage)