static IMG_BOOL CheckForStalledComputeCtxtCommand(PDLLIST_NODE psNode, IMG_PVOID pvCallbackData) { RGX_SERVER_COMPUTE_CONTEXT *psCurrentServerComputeCtx = IMG_CONTAINER_OF(psNode, RGX_SERVER_COMPUTE_CONTEXT, sListNode); RGX_SERVER_COMMON_CONTEXT *psCurrentServerComputeCommonCtx = psCurrentServerComputeCtx->psServerCommonContext; DUMPDEBUG_PRINTF_FUNC *pfnDumpDebugPrintf = pvCallbackData; DumpStalledFWCommonContext(psCurrentServerComputeCommonCtx, pfnDumpDebugPrintf); return IMG_TRUE; }
static IMG_BOOL CheckForStalledComputeCtxtCommand(PDLLIST_NODE psNode, IMG_PVOID pvCallbackData) { RGX_SERVER_COMPUTE_CONTEXT *psCurrentServerComputeCtx = IMG_CONTAINER_OF(psNode, RGX_SERVER_COMPUTE_CONTEXT, sListNode); RGX_SERVER_COMMON_CONTEXT *psCurrentServerComputeCommonCtx = psCurrentServerComputeCtx->psServerCommonContext; #if 1 PVR_DPF((PVR_DBG_ERROR, "psCurrentServerComputeCommonCtx=%p", psCurrentServerComputeCommonCtx)); #else DumpStalledFWCommonContext(psCurrentServerComputeCommonCtx); #endif return IMG_TRUE; }
static IMG_BOOL _PDumpSyncBlock(PDLLIST_NODE psNode, IMG_PVOID pvCallbackData) { SYNC_PRIMITIVE_BLOCK *psSyncBlock = IMG_CONTAINER_OF(psNode, SYNC_PRIMITIVE_BLOCK, sConnectionNode); PVR_UNREFERENCED_PARAMETER(pvCallbackData); DevmemPDumpLoadMem(psSyncBlock->psMemDesc, 0, psSyncBlock->ui32BlockSize, PDUMP_FLAGS_CONTINUOUS); return IMG_TRUE; }
static IMG_BOOL CheckForStalledClientComputeCtxtCommand(PDLLIST_NODE psNode, IMG_PVOID pvCallbackData) { PVRSRV_ERROR *peError = (PVRSRV_ERROR*)pvCallbackData; RGX_SERVER_COMPUTE_CONTEXT *psCurrentServerComputeCtx = IMG_CONTAINER_OF(psNode, RGX_SERVER_COMPUTE_CONTEXT, sListNode); RGX_SERVER_COMMON_CONTEXT *psCurrentServerComputeCommonCtx = psCurrentServerComputeCtx->psServerCommonContext; if (PVRSRV_ERROR_CCCB_STALLED == CheckStalledClientCommonContext(psCurrentServerComputeCommonCtx)) { *peError = PVRSRV_ERROR_CCCB_STALLED; } return IMG_TRUE; }
static IMG_BOOL CheckForStalledTransferCtxtCommand(PDLLIST_NODE psNode, IMG_PVOID pvCallbackData) { RGX_SERVER_TQ_CONTEXT *psCurrentServerTransferCtx = IMG_CONTAINER_OF(psNode, RGX_SERVER_TQ_CONTEXT, sListNode); RGX_SERVER_TQ_2D_DATA *psTransferCtx2DData = &(psCurrentServerTransferCtx->s2DData); RGX_SERVER_COMMON_CONTEXT *psCurrentServerTQ2DCommonCtx = psTransferCtx2DData->psServerCommonContext; RGX_SERVER_TQ_3D_DATA *psTransferCtx3DData = &(psCurrentServerTransferCtx->s3DData); RGX_SERVER_COMMON_CONTEXT *psCurrentServerTQ3DCommonCtx = psTransferCtx3DData->psServerCommonContext; DumpStalledFWCommonContext(psCurrentServerTQ2DCommonCtx); DumpStalledFWCommonContext(psCurrentServerTQ3DCommonCtx); return IMG_TRUE; }
static IMG_BOOL _ServerSyncState(PDLLIST_NODE psNode, IMG_PVOID pvCallbackData) { SERVER_SYNC_PRIMITIVE *psSync = IMG_CONTAINER_OF(psNode, SERVER_SYNC_PRIMITIVE, sNode); DUMPDEBUG_PRINTF_FUNC *pfnDumpDebugPrintf = IMG_NULL; pfnDumpDebugPrintf = g_pfnDumpDebugPrintf; if (*psSync->psSync->pui32LinAddr != psSync->ui32NextOp) { PVR_DUMPDEBUG_LOG(("\tPending server sync (ID = %d, FWAddr = 0x%08x): Current = 0x%08x, NextOp = 0x%08x (%s)", psSync->ui32UID, ServerSyncGetFWAddr(psSync), ServerSyncGetValue(psSync), psSync->ui32NextOp, psSync->szClassName)); } return IMG_TRUE; }
static IMG_BOOL _RGXFindMMUContext(PDLLIST_NODE psNode, IMG_PVOID pvCallbackData) { SERVER_MMU_CONTEXT *psServerMMUContext = IMG_CONTAINER_OF(psNode, SERVER_MMU_CONTEXT, sNode); RGX_FIND_MMU_CONTEXT *psData = pvCallbackData; IMG_DEV_PHYADDR sPCDevPAddr; if (MMU_AcquireBaseAddr(psServerMMUContext->psMMUContext, &sPCDevPAddr) != PVRSRV_OK) { PVR_LOG(("Failed to get PC address for memory context")); return IMG_TRUE; } if (psData->sPCAddress.uiAddr == sPCDevPAddr.uiAddr) { psData->psServerMMUContext = psServerMMUContext; return IMG_FALSE; } return IMG_TRUE; }
static IMG_BOOL _RGXCheckFaultAddress(PDLLIST_NODE psNode, IMG_PVOID pvCallbackData) { SERVER_MMU_CONTEXT *psServerMMUContext = IMG_CONTAINER_OF(psNode, SERVER_MMU_CONTEXT, sNode); RGX_FAULT_DATA *psFaultData = (RGX_FAULT_DATA *) pvCallbackData; IMG_DEV_PHYADDR sPCDevPAddr; if (MMU_AcquireBaseAddr(psServerMMUContext->psMMUContext, &sPCDevPAddr) != PVRSRV_OK) { PVR_LOG(("Failed to get PC address for memory context")); return IMG_TRUE; } if (psFaultData->psDevPAddr->uiAddr == sPCDevPAddr.uiAddr) { PVR_LOG(("Found memory context (PID = %d, %s)", psServerMMUContext->uiPID, psServerMMUContext->szProcessName)); MMU_CheckFaultAddress(psServerMMUContext->psMMUContext, psFaultData->psDevVAddr); return IMG_FALSE; } return IMG_TRUE; }