Lines Matching refs:iPage

37  *  idPage = (idChunk << GMM_CHUNK_SHIFT) | iPage;
39 * Where iPage is the index of the page within the chunk. This ID scheme
1422 unsigned iPage = (GMM_CHUNK_SIZE >> PAGE_SHIFT);
1423 while (iPage-- > 0)
1424 if (GMM_PAGE_IS_PRIVATE(&pChunk->aPages[iPage]))
1426 if (pChunk->aPages[iPage].Private.hGVM == hGVM)
1435 pChunk->aPages[iPage].u = 0;
1436 pChunk->aPages[iPage].Free.iNext = pChunk->iFreeHead;
1437 pChunk->aPages[iPage].Free.u2State = GMM_PAGE_STATE_FREE;
1438 pChunk->iFreeHead = iPage;
1447 else if (GMM_PAGE_IS_FREE(&pChunk->aPages[iPage]))
2049 const uint32_t iPage = pChunk->iFreeHead;
2050 AssertReleaseMsg(iPage < RT_ELEMENTS(pChunk->aPages), ("%d\n", iPage));
2051 PGMMPAGE pPage = &pChunk->aPages[iPage];
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,
2070 pPageDesc->HCPhysGCPhys = RTR0MemObjGetPagePhysAddr(pChunk->hMemObj, iPage);
2072 pPageDesc->idPage = (pChunk->Core.Key << GMM_CHUNKID_SHIFT) | iPage;
2084 * @param iPage The current page descriptor table index.
2088 static uint32_t gmmR0AllocatePagesFromChunk(PGMMCHUNK pChunk, uint16_t const hGVM, uint32_t iPage, uint32_t cPages,
2094 for (; pChunk->cFree && iPage < cPages; iPage++)
2095 gmmR0AllocatePage(pChunk, hGVM, &paPages[iPage]);
2098 return iPage;
2142 for (unsigned iPage = 0; iPage < RT_ELEMENTS(pChunk->aPages) - 1; iPage++)
2144 pChunk->aPages[iPage].Free.u2State = GMM_PAGE_STATE_FREE;
2145 pChunk->aPages[iPage].Free.iNext = iPage + 1;
2243 * @param iPage The current page descriptor table index.
2248 uint32_t iPage, uint32_t cPages, PGMMPAGEDESC paPages)
2258 iPage = gmmR0AllocatePagesFromChunk(pChunk, pGVM->hSelf, iPage, cPages, paPages);
2259 if (iPage >= cPages)
2260 return iPage;
2265 return iPage;
2275 * @param iPage The current page descriptor table index.
2280 uint32_t iPage, uint32_t cPages, PGMMPAGEDESC paPages)
2293 iPage = gmmR0AllocatePagesFromChunk(pChunk, pGVM->hSelf, iPage, cPages, paPages);
2294 if (iPage >= cPages)
2297 return iPage;
2304 return iPage;
2314 * @param iPage The current page descriptor table index.
2319 uint32_t iPage, uint32_t cPages, PGMMPAGEDESC paPages)
2333 iPage = gmmR0AllocatePagesFromChunk(pChunk, pGVM->hSelf, iPage, cPages, paPages);
2334 if (iPage >= cPages)
2337 return iPage;
2344 return iPage;
2355 * @param iPage The current page descriptor table index.
2360 uint32_t iPage, uint32_t cPages, PGMMPAGEDESC paPages)
2370 iPage = gmmR0AllocatePagesFromChunk(pChunk, hGVM, iPage, cPages, paPages);
2371 if (iPage >= cPages)
2372 return iPage;
2386 iPage = gmmR0AllocatePagesFromChunk(pChunk, hGVM, iPage, cPages, paPages);
2387 if (iPage >= cPages)
2390 return iPage;
2397 return iPage;
2407 * @param iPage The current page descriptor table index.
2411 static uint32_t gmmR0AllocatePagesInBoundMode(PGVM pGVM, uint32_t iPage, uint32_t cPages, PGMMPAGEDESC paPages)
2420 iPage = gmmR0AllocatePagesFromChunk(pChunk, pGVM->hSelf, iPage, cPages, paPages);
2421 if (iPage >= cPages)
2422 return iPage;
2426 return iPage;
2573 uint32_t iPage = 0;
2576 iPage = gmmR0AllocatePagesInBoundMode(pGVM, iPage, cPages, paPages);
2577 AssertReleaseReturn(iPage == cPages, VERR_GMM_ALLOC_PAGES_IPE);
2587 iPage = gmmR0AllocatePagesInBoundMode(pGVM, iPage, cPages, paPages);
2588 if (iPage < cPages)
2590 rc = gmmR0AllocateChunkNew(pGMM, pGVM, &pGVM->gmm.s.Private, cPages, paPages, &iPage);
2591 while (iPage < cPages && RT_SUCCESS(rc));
2601 iPage = gmmR0AllocatePagesAssociatedWithVM(pGMM, pGVM, &pGMM->PrivateX, iPage, cPages, paPages);
2602 if (iPage < cPages)
2609 iPage = gmmR0AllocatePagesFromSameNode(&pGMM->PrivateX, pGVM, iPage, cPages, paPages);
2614 if (iPage < cPages)
2615 iPage = gmmR0AllocatePagesFromEmptyChunksOnSameNode(&pGMM->PrivateX, pGVM, iPage, cPages, paPages);
2618 if (iPage < cPages)
2619 iPage = gmmR0AllocatePagesFromEmptyChunksOnSameNode(&pGMM->Shared, pGVM, iPage, cPages, paPages);
2626 iPage = gmmR0AllocatePagesFromSameNode(&pGMM->PrivateX, pGVM, iPage, cPages, paPages);
2627 if (iPage < cPages)
2628 iPage = gmmR0AllocatePagesIndiscriminately(&pGMM->PrivateX, pGVM, iPage, cPages, paPages);
2634 if (iPage < cPages)
2637 rc = gmmR0AllocateChunkNew(pGMM, pGVM, &pGMM->PrivateX, cPages, paPages, &iPage);
2638 while (iPage < cPages && RT_SUCCESS(rc));
2642 && pGMM->PrivateX.cFreePages + pGMM->Shared.cFreePages >= cPages - iPage)
2644 iPage = gmmR0AllocatePagesIndiscriminately(&pGMM->PrivateX, pGVM, iPage, cPages, paPages);
2645 if (iPage < cPages)
2646 iPage = gmmR0AllocatePagesIndiscriminately(&pGMM->Shared, pGVM, iPage, cPages, paPages);
2647 AssertRelease(iPage == cPages);
2662 pGMM->cAllocatedPages -= cPages - iPage;
2672 while (iPage-- > 0)
2674 uint32_t idPage = paPages[iPage].idPage;
2685 paPages[iPage].idPage = NIL_GMM_PAGEID;
2686 paPages[iPage].idSharedPage = NIL_GMM_PAGEID;
2687 paPages[iPage].HCPhysGCPhys = NIL_RTHCPHYS;
2751 unsigned iPage = 0;
2752 for (; iPage < cPagesToUpdate; iPage++)
2754 AssertMsgReturn( ( paPages[iPage].HCPhysGCPhys <= GMM_GCPHYS_LAST
2755 && !(paPages[iPage].HCPhysGCPhys & PAGE_OFFSET_MASK))
2756 || paPages[iPage].HCPhysGCPhys == NIL_RTHCPHYS
2757 || paPages[iPage].HCPhysGCPhys == GMM_GCPHYS_UNSHAREABLE,
2758 ("#%#x: %RHp\n", iPage, paPages[iPage].HCPhysGCPhys),
2760 AssertMsgReturn( paPages[iPage].idPage <= GMM_PAGEID_LAST
2761 /*|| paPages[iPage].idPage == NIL_GMM_PAGEID*/,
2762 ("#%#x: %#x\n", iPage, paPages[iPage].idPage), VERR_INVALID_PARAMETER);
2763 AssertMsgReturn( paPages[iPage].idPage <= GMM_PAGEID_LAST
2764 /*|| paPages[iPage].idSharedPage == NIL_GMM_PAGEID*/,
2765 ("#%#x: %#x\n", iPage, paPages[iPage].idSharedPage), VERR_INVALID_PARAMETER);
2768 for (; iPage < cPagesToAlloc; iPage++)
2770 AssertMsgReturn(paPages[iPage].HCPhysGCPhys == NIL_RTHCPHYS, ("#%#x: %RHp\n", iPage, paPages[iPage].HCPhysGCPhys), VERR_INVALID_PARAMETER);
2771 AssertMsgReturn(paPages[iPage].idPage == NIL_GMM_PAGEID, ("#%#x: %#x\n", iPage, paPages[iPage].idPage), VERR_INVALID_PARAMETER);
2772 AssertMsgReturn(paPages[iPage].idSharedPage == NIL_GMM_PAGEID, ("#%#x: %#x\n", iPage, paPages[iPage].idSharedPage), VERR_INVALID_PARAMETER);
2787 for (iPage = 0; iPage < cPagesToUpdate; iPage++)
2789 if (paPages[iPage].idPage != NIL_GMM_PAGEID)
2791 PGMMPAGE pPage = gmmR0GetPage(pGMM, paPages[iPage].idPage);
2799 if (RT_LIKELY(paPages[iPage].HCPhysGCPhys <= GMM_GCPHYS_LAST))
2800 pPage->Private.pfn = paPages[iPage].HCPhysGCPhys >> PAGE_SHIFT;
2801 else if (paPages[iPage].HCPhysGCPhys == GMM_GCPHYS_UNSHAREABLE)
2805 paPages[iPage].idPage = NIL_GMM_PAGEID;
2806 paPages[iPage].HCPhysGCPhys = NIL_RTHCPHYS;
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));
2825 Log(("GMMR0AllocateHandyPages: #%#x/%#x: Not found! (private)\n", iPage, paPages[iPage].idPage));
2831 if (paPages[iPage].idSharedPage != NIL_GMM_PAGEID)
2833 PGMMPAGE pPage = gmmR0GetPage(pGMM, paPages[iPage].idSharedPage);
2843 Log(("GMMR0AllocateHandyPages: free shared page %x cRefs=%d\n", paPages[iPage].idSharedPage, pPage->Shared.cRefs));
2847 gmmR0FreeSharedPage(pGMM, pGVM, paPages[iPage].idSharedPage, pPage);
2854 paPages[iPage].idSharedPage = NIL_GMM_PAGEID;
2858 Log(("GMMR0AllocateHandyPages: #%#x/%#x: Not shared!\n", iPage, paPages[iPage].idSharedPage));
2865 Log(("GMMR0AllocateHandyPages: #%#x/%#x: Not found! (shared)\n", iPage, paPages[iPage].idSharedPage));
2875 for (iPage = 0; iPage < cPagesToAlloc; iPage++)
2877 Assert(paPages[iPage].HCPhysGCPhys == NIL_RTHCPHYS);
2878 Assert(paPages[iPage].idPage == NIL_GMM_PAGEID);
2879 Assert(paPages[iPage].idSharedPage == NIL_GMM_PAGEID);
2943 for (unsigned iPage = 0; iPage < cPages; iPage++)
2945 AssertMsgReturn( paPages[iPage].HCPhysGCPhys == NIL_RTHCPHYS
2946 || paPages[iPage].HCPhysGCPhys == GMM_GCPHYS_UNSHAREABLE
2948 && paPages[iPage].HCPhysGCPhys <= GMM_GCPHYS_LAST
2949 && !(paPages[iPage].HCPhysGCPhys & PAGE_OFFSET_MASK)),
2950 ("#%#x: %RHp enmAccount=%d\n", iPage, paPages[iPage].HCPhysGCPhys, enmAccount),
2952 AssertMsgReturn(paPages[iPage].idPage == NIL_GMM_PAGEID, ("#%#x: %#x\n", iPage, paPages[iPage].idPage), VERR_INVALID_PARAMETER);
2953 AssertMsgReturn(paPages[iPage].idSharedPage == NIL_GMM_PAGEID, ("#%#x: %#x\n", iPage, paPages[iPage].idSharedPage), VERR_INVALID_PARAMETER);
3313 Log3(("F pPage=%p iPage=%#x/%#x u2State=%d iFreeHead=%#x\n",
3460 uint32_t iPage;
3461 for (iPage = 0; iPage < cPages; iPage++)
3463 uint32_t idPage = paPages[iPage].idPage;
3477 Log(("gmmR0AllocatePages: #%#x/%#x: not owner! hGVM=%#x hSelf=%#x\n", iPage, idPage,
3507 Log(("gmmR0AllocatePages: #%#x/%#x: already free!\n", iPage, idPage));
3514 Log(("gmmR0AllocatePages: #%#x/%#x: not found!\n", iPage, idPage));
3518 paPages[iPage].idPage = NIL_GMM_PAGEID;
3526 case GMMACCOUNT_BASE: pGVM->gmm.s.Stats.Allocated.cBasePages -= iPage; break;
3527 case GMMACCOUNT_SHADOW: pGVM->gmm.s.Stats.Allocated.cShadowPages -= iPage; break;
3528 case GMMACCOUNT_FIXED: pGVM->gmm.s.Stats.Allocated.cFixedPages -= iPage; break;
3574 for (unsigned iPage = 0; iPage < cPages; iPage++)
3575 AssertMsgReturn( paPages[iPage].idPage <= GMM_PAGEID_LAST
3576 /*|| paPages[iPage].idPage == NIL_GMM_PAGEID*/,
3577 ("#%#x: %#x\n", iPage, paPages[iPage].idPage), VERR_INVALID_PARAMETER);
5247 unsigned iPage = (GMM_CHUNK_SIZE >> PAGE_SHIFT);
5248 while (iPage-- > 0)
5250 if (GMM_PAGE_IS_PRIVATE(&pChunk->aPages[iPage]))
5252 uint8_t *pbDestPage = pbChunk + (iPage << PAGE_SHIFT);