Exemple #1
0
PVRSRV_ERROR PDumpFreePages(BM_HEAP * psBMHeap,
			    IMG_DEV_VIRTADDR sDevVAddr,
			    u32 ui32NumBytes,
			    u32 ui32PageSize,
			    void *hUniqueTag, int bInterleaved)
{
	PVRSRV_ERROR eErr;
	u32 ui32NumPages, ui32PageCounter;
	IMG_DEV_PHYADDR sDevPAddr;
	PVRSRV_DEVICE_NODE *psDeviceNode;

	PDUMP_GET_SCRIPT_STRING();

	PVR_ASSERT(((u32) sDevVAddr.uiAddr & (ui32PageSize - 1)) == 0);
	PVR_ASSERT(((u32) ui32NumBytes & (ui32PageSize - 1)) == 0);

	eErr =
	    PDumpOSBufprintf(hScript, ui32MaxLen,
			     "-- FREE :SGXMEM:VA_%8.8lX\r\n", sDevVAddr.uiAddr);
	if (eErr != PVRSRV_OK) {
		return eErr;
	}
	PDumpOSWriteString2(hScript, PDUMP_FLAGS_CONTINUOUS);

	ui32NumPages = ui32NumBytes / ui32PageSize;
	psDeviceNode = psBMHeap->pBMContext->psDeviceNode;
	for (ui32PageCounter = 0; ui32PageCounter < ui32NumPages;
	     ui32PageCounter++) {
		if (!bInterleaved || (ui32PageCounter % 2) == 0) {
			sDevPAddr =
			    psDeviceNode->pfnMMUGetPhysPageAddr(psBMHeap->
								pMMUHeap,
								sDevVAddr);
			{
				eErr =
				    PDumpOSBufprintf(hScript, ui32MaxLen,
						     "FREE :SGXMEM:PA_%8.8lX%8.8lX\r\n",
						     (u32) hUniqueTag,
						     sDevPAddr.uiAddr);
				if (eErr != PVRSRV_OK) {
					return eErr;
				}
				PDumpOSWriteString2(hScript,
						    PDUMP_FLAGS_CONTINUOUS);
			}
		} else {

		}

		sDevVAddr.uiAddr += ui32PageSize;
	}
	return PVRSRV_OK;
}
Exemple #2
0
IMG_VOID BM_GetPhysPageAddr(PVRSRV_KERNEL_MEM_INFO *psMemInfo,
								IMG_DEV_VIRTADDR sDevVPageAddr,
								IMG_DEV_PHYADDR *psDevPAddr)
{
	PVRSRV_DEVICE_NODE *psDeviceNode;

	PVR_DPF((PVR_DBG_MESSAGE, "BM_GetPhysPageAddr"));

	PVR_ASSERT (psMemInfo && psDevPAddr)

	
	PVR_ASSERT((sDevVPageAddr.uiAddr & 0xFFF) == 0);

	psDeviceNode = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->pBMContext->psDeviceNode;

	*psDevPAddr = psDeviceNode->pfnMMUGetPhysPageAddr(((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->pMMUHeap,
												sDevVPageAddr);
}