feat: update gpu to Linux_SDK_V1.2.1

This version update involves a lot of content, so the previous version
has been deleted and the new version has been re-merged into the kernel.

The configuration file for the GPU driver originates from a previous
version.

Signed-off-by: Mingzheng Xing <xingmingzheng@iscas.ac.cn>
This commit is contained in:
Mingzheng Xing
2023-08-30 21:19:50 +08:00
committed by Han Gao
parent 807db9d981
commit f72e7cd077
250 changed files with 10635 additions and 7697 deletions

View File

@@ -65,7 +65,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "rgxhwperf.h"
#if defined(SUPPORT_VALIDATION) && defined(SUPPORT_SOC_TIMER)
#include "validation_soc.h"
#include "rgxsoctimer.h"
#endif
#if defined(PVRSRV_NEED_PVR_DPF)
@@ -173,7 +173,7 @@ struct _SYNC_CHECKPOINT_CONTEXT_CTL_
POS_SPINLOCK hDeferredCleanupListLock;
#if (SYNC_CHECKPOINT_POOL_SIZE > 0)
_SYNC_CHECKPOINT *psSyncCheckpointPool[SYNC_CHECKPOINT_POOL_SIZE];
SYNC_CHECKPOINT *psSyncCheckpointPool[SYNC_CHECKPOINT_POOL_SIZE];
IMG_BOOL bSyncCheckpointPoolFull;
IMG_BOOL bSyncCheckpointPoolValid;
IMG_UINT32 ui32SyncCheckpointPoolCount;
@@ -207,8 +207,8 @@ struct SYNC_CHECKPOINT_RECORD
static PFN_SYNC_CHECKPOINT_STRUCT *g_psSyncCheckpointPfnStruct = NULL;
#if (SYNC_CHECKPOINT_POOL_SIZE > 0)
static _SYNC_CHECKPOINT *_GetCheckpointFromPool(_SYNC_CHECKPOINT_CONTEXT *psContext);
static IMG_BOOL _PutCheckpointInPool(_SYNC_CHECKPOINT *psSyncCheckpoint);
static SYNC_CHECKPOINT *_GetCheckpointFromPool(_SYNC_CHECKPOINT_CONTEXT *psContext);
static IMG_BOOL _PutCheckpointInPool(SYNC_CHECKPOINT *psSyncCheckpoint);
static IMG_UINT32 _CleanCheckpointPool(_SYNC_CHECKPOINT_CONTEXT *psContext);
#endif
@@ -224,7 +224,7 @@ static IMG_UINT32 gui32NumSyncCheckpointContexts = 0;
#if defined(SUPPORT_RGX)
static inline void RGXSRVHWPerfSyncCheckpointUFOIsSignalled(PVRSRV_RGXDEV_INFO *psDevInfo,
_SYNC_CHECKPOINT *psSyncCheckpointInt, IMG_UINT32 ui32FenceSyncFlags)
SYNC_CHECKPOINT *psSyncCheckpointInt, IMG_UINT32 ui32FenceSyncFlags)
{
if (RGXHWPerfHostIsEventEnabled(psDevInfo, RGX_HWPERF_HOST_UFO)
&& !(ui32FenceSyncFlags & PVRSRV_FENCE_FLAG_SUPPRESS_HWP_PKT))
@@ -255,7 +255,7 @@ static inline void RGXSRVHWPerfSyncCheckpointUFOIsSignalled(PVRSRV_RGXDEV_INFO *
}
static inline void RGXSRVHWPerfSyncCheckpointUFOUpdate(PVRSRV_RGXDEV_INFO *psDevInfo,
_SYNC_CHECKPOINT *psSyncCheckpointInt, IMG_UINT32 ui32FenceSyncFlags)
SYNC_CHECKPOINT *psSyncCheckpointInt, IMG_UINT32 ui32FenceSyncFlags)
{
if (RGXHWPerfHostIsEventEnabled(psDevInfo, RGX_HWPERF_HOST_UFO)
&& !(ui32FenceSyncFlags & PVRSRV_FENCE_FLAG_SUPPRESS_HWP_PKT))
@@ -297,8 +297,8 @@ static void _SyncCheckpointRecordListDeinit(PVRSRV_DEVICE_NODE *psDevNode);
#if defined(PDUMP)
static void
MISRHandler_PdumpDeferredSyncSignalPoster(void *pvData);
static PVRSRV_ERROR _SyncCheckpointAllocPDump(PVRSRV_DEVICE_NODE *psDevNode, _SYNC_CHECKPOINT *psSyncCheckpoint);
static PVRSRV_ERROR _SyncCheckpointUpdatePDump(PPVRSRV_DEVICE_NODE psDevNode, _SYNC_CHECKPOINT *psSyncCheckpoint, IMG_UINT32 ui32Status, IMG_UINT32 ui32FenceSyncFlags);
static PVRSRV_ERROR _SyncCheckpointAllocPDump(PVRSRV_DEVICE_NODE *psDevNode, SYNC_CHECKPOINT *psSyncCheckpoint);
static PVRSRV_ERROR _SyncCheckpointUpdatePDump(PPVRSRV_DEVICE_NODE psDevNode, SYNC_CHECKPOINT *psSyncCheckpoint, IMG_UINT32 ui32Status, IMG_UINT32 ui32FenceSyncFlags);
static PVRSRV_ERROR _SyncCheckpointPDumpTransition(void *pvData, PDUMP_TRANSITION_EVENT eEvent);
#endif
@@ -528,7 +528,7 @@ _SyncCheckpointBlockUnimport(RA_PERARENA_HANDLE hArena,
SyncCheckpointContextUnref((PSYNC_CHECKPOINT_CONTEXT)psContext);
}
static INLINE IMG_UINT32 _SyncCheckpointGetOffset(_SYNC_CHECKPOINT *psSyncInt)
static INLINE IMG_UINT32 _SyncCheckpointGetOffset(SYNC_CHECKPOINT *psSyncInt)
{
IMG_UINT64 ui64Temp;
@@ -564,18 +564,6 @@ SyncCheckpointRegisterFunctions(PFN_SYNC_CHECKPOINT_STRUCT *psSyncCheckpointPfns
return PVRSRV_OK;
}
#if defined(SUPPORT_NATIVE_FENCE_SYNC)
struct _PVRSRV_DEVICE_NODE_ *SyncCheckpointGetAssociatedDevice(PSYNC_CHECKPOINT_CONTEXT psSyncCheckpointContext)
{
return ((_SYNC_CHECKPOINT_CONTEXT*)psSyncCheckpointContext)->psDevNode;
}
#else
PPVRSRV_DEVICE_NODE SyncCheckpointGetAssociatedDevice(PSYNC_CHECKPOINT_CONTEXT psSyncCheckpointContext)
{
return ((_SYNC_CHECKPOINT_CONTEXT*)psSyncCheckpointContext)->psDevNode;
}
#endif
PVRSRV_ERROR
SyncCheckpointResolveFence(PSYNC_CHECKPOINT_CONTEXT psSyncCheckpointContext,
PVRSRV_FENCE hFence, IMG_UINT32 *pui32NumSyncCheckpoints,
@@ -586,7 +574,7 @@ SyncCheckpointResolveFence(PSYNC_CHECKPOINT_CONTEXT psSyncCheckpointContext,
PVRSRV_ERROR eError = PVRSRV_OK;
IMG_UINT32 i;
#if defined(PDUMP)
_SYNC_CHECKPOINT *psSyncCheckpoint = NULL;
SYNC_CHECKPOINT *psSyncCheckpoint = NULL;
#endif
if (unlikely(!g_psSyncCheckpointPfnStruct || !g_psSyncCheckpointPfnStruct->pfnFenceResolve))
@@ -620,7 +608,7 @@ SyncCheckpointResolveFence(PSYNC_CHECKPOINT_CONTEXT psSyncCheckpointContext,
{
for (i = 0; i < *pui32NumSyncCheckpoints; i++)
{
psSyncCheckpoint = (_SYNC_CHECKPOINT *)(*papsSyncCheckpoints)[i];
psSyncCheckpoint = (SYNC_CHECKPOINT *)(*papsSyncCheckpoints)[i];
psSyncCheckpoint->ui32PDumpFlags = ui32PDumpFlags;
}
}
@@ -698,6 +686,7 @@ SyncCheckpointCreateFence(PVRSRV_DEVICE_NODE *psDevNode,
else
{
eError = g_psSyncCheckpointPfnStruct->pfnFenceCreate(
psDevNode,
pszFenceName,
hTimeline,
psSyncCheckpointContext,
@@ -736,7 +725,7 @@ SyncCheckpointCreateFence(PVRSRV_DEVICE_NODE *psDevNode,
#if defined(PDUMP)
if (eError == PVRSRV_OK)
{
_SYNC_CHECKPOINT *psSyncCheckpoint = (_SYNC_CHECKPOINT*)(*psNewSyncCheckpoint);
SYNC_CHECKPOINT *psSyncCheckpoint = (SYNC_CHECKPOINT*)(*psNewSyncCheckpoint);
if (psSyncCheckpoint)
{
psSyncCheckpoint->ui32PDumpFlags = ui32PDumpFlags;
@@ -1006,7 +995,7 @@ fail_alloc:
/* Poisons and frees the checkpoint
* Decrements context refcount. */
static void _FreeSyncCheckpoint(_SYNC_CHECKPOINT *psSyncCheckpoint)
static void _FreeSyncCheckpoint(SYNC_CHECKPOINT *psSyncCheckpoint)
{
_SYNC_CHECKPOINT_CONTEXT *psContext = psSyncCheckpoint->psSyncCheckpointBlock->psContext;
@@ -1085,7 +1074,7 @@ PVRSRV_ERROR SyncCheckpointContextDestroy(PSYNC_CHECKPOINT_CONTEXT psSyncCheckpo
dllist_foreach_node(&psDevNode->sSyncCheckpointSyncsList, psNode, psNext)
{
_SYNC_CHECKPOINT *psSyncCheckpoint = IMG_CONTAINER_OF(psNode, _SYNC_CHECKPOINT, sListNode);
SYNC_CHECKPOINT *psSyncCheckpoint = IMG_CONTAINER_OF(psNode, SYNC_CHECKPOINT, sListNode);
bool bDeferredFree = dllist_node_is_in_list(&psSyncCheckpoint->sDeferredFreeListNode);
/* Line below avoids build error in release builds (where PVR_DPF is not defined) */
@@ -1143,7 +1132,7 @@ SyncCheckpointAlloc(PSYNC_CHECKPOINT_CONTEXT psSyncContext,
const IMG_CHAR *pszCheckpointName,
PSYNC_CHECKPOINT *ppsSyncCheckpoint)
{
_SYNC_CHECKPOINT *psNewSyncCheckpoint = NULL;
SYNC_CHECKPOINT *psNewSyncCheckpoint = NULL;
_SYNC_CHECKPOINT_CONTEXT *psSyncContextInt = (_SYNC_CHECKPOINT_CONTEXT*)psSyncContext;
PVRSRV_DEVICE_NODE *psDevNode;
PVRSRV_ERROR eError;
@@ -1316,7 +1305,7 @@ fail_alloc:
return eError;
}
static void SyncCheckpointUnref(_SYNC_CHECKPOINT *psSyncCheckpointInt)
static void SyncCheckpointUnref(SYNC_CHECKPOINT *psSyncCheckpointInt)
{
_SYNC_CHECKPOINT_CONTEXT *psContext;
PVRSRV_DEVICE_NODE *psDevNode;
@@ -1435,7 +1424,7 @@ static void SyncCheckpointUnref(_SYNC_CHECKPOINT *psSyncCheckpointInt)
void SyncCheckpointFree(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_RETURN_VOID_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid");
@@ -1454,7 +1443,7 @@ void SyncCheckpointFree(PSYNC_CHECKPOINT psSyncCheckpoint)
void
SyncCheckpointSignal(PSYNC_CHECKPOINT psSyncCheckpoint, IMG_UINT32 ui32FenceSyncFlags)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid");
@@ -1492,7 +1481,7 @@ SyncCheckpointSignal(PSYNC_CHECKPOINT psSyncCheckpoint, IMG_UINT32 ui32FenceSync
void
SyncCheckpointSignalNoHW(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid");
@@ -1528,7 +1517,7 @@ SyncCheckpointSignalNoHW(PSYNC_CHECKPOINT psSyncCheckpoint)
void
SyncCheckpointError(PSYNC_CHECKPOINT psSyncCheckpoint, IMG_UINT32 ui32FenceSyncFlags)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid");
@@ -1566,7 +1555,7 @@ SyncCheckpointError(PSYNC_CHECKPOINT psSyncCheckpoint, IMG_UINT32 ui32FenceSyncF
IMG_BOOL SyncCheckpointIsSignalled(PSYNC_CHECKPOINT psSyncCheckpoint, IMG_UINT32 ui32FenceSyncFlags)
{
IMG_BOOL bRet = IMG_FALSE;
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid");
@@ -1595,7 +1584,7 @@ IMG_BOOL
SyncCheckpointIsErrored(PSYNC_CHECKPOINT psSyncCheckpoint, IMG_UINT32 ui32FenceSyncFlags)
{
IMG_BOOL bRet = IMG_FALSE;
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid");
@@ -1622,7 +1611,7 @@ SyncCheckpointIsErrored(PSYNC_CHECKPOINT psSyncCheckpoint, IMG_UINT32 ui32FenceS
const IMG_CHAR *
SyncCheckpointGetStateString(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_RETURN_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid", "Null");
@@ -1645,7 +1634,7 @@ PVRSRV_ERROR
SyncCheckpointTakeRef(PSYNC_CHECKPOINT psSyncCheckpoint)
{
PVRSRV_ERROR eRet = PVRSRV_OK;
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_RETURN_IF_INVALID_PARAM(psSyncCheckpoint, "psSyncCheckpoint");
@@ -1666,7 +1655,7 @@ PVRSRV_ERROR
SyncCheckpointDropRef(PSYNC_CHECKPOINT psSyncCheckpoint)
{
PVRSRV_ERROR eRet = PVRSRV_OK;
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_RETURN_IF_INVALID_PARAM(psSyncCheckpoint, "psSyncCheckpoint");
@@ -1686,7 +1675,7 @@ SyncCheckpointDropRef(PSYNC_CHECKPOINT psSyncCheckpoint)
void
SyncCheckpointCCBEnqueued(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_RETURN_VOID_IF_FALSE(psSyncCheckpoint != NULL, "psSyncCheckpoint");
@@ -1709,7 +1698,7 @@ SyncCheckpointCCBEnqueued(PSYNC_CHECKPOINT psSyncCheckpoint)
PRGXFWIF_UFO_ADDR*
SyncCheckpointGetRGXFWIFUFOAddr(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_GOTO_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid", invalid_chkpt);
@@ -1736,7 +1725,7 @@ invalid_chkpt:
IMG_UINT32
SyncCheckpointGetFirmwareAddr(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
IMG_UINT32 ui32Ret = 0;
PVR_LOG_GOTO_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid", invalid_chkpt);
@@ -1764,7 +1753,7 @@ invalid_chkpt:
IMG_UINT32
SyncCheckpointGetId(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
IMG_UINT32 ui32Ret = 0;
PVR_LOG_GOTO_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid", invalid_chkpt);
@@ -1798,7 +1787,7 @@ invalid_chkpt:
PVRSRV_TIMELINE
SyncCheckpointGetTimeline(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVRSRV_TIMELINE i32Ret = PVRSRV_NO_TIMELINE;
PVR_LOG_GOTO_IF_FALSE((psSyncCheckpoint != NULL), "psSyncCheckpoint invalid", invalid_chkpt);
@@ -1817,7 +1806,7 @@ invalid_chkpt:
IMG_UINT32
SyncCheckpointGetEnqueuedCount(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_RETURN_IF_FALSE(psSyncCheckpoint != NULL, "psSyncCheckpoint invalid", 0);
return OSAtomicRead(&psSyncCheckpointInt->hEnqueuedCCBCount);
@@ -1826,7 +1815,7 @@ SyncCheckpointGetEnqueuedCount(PSYNC_CHECKPOINT psSyncCheckpoint)
IMG_UINT32
SyncCheckpointGetReferenceCount(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_RETURN_IF_FALSE(psSyncCheckpoint != NULL, "psSyncCheckpoint invalid", 0);
return OSAtomicRead(&psSyncCheckpointInt->hRefCount);
@@ -1835,7 +1824,7 @@ SyncCheckpointGetReferenceCount(PSYNC_CHECKPOINT psSyncCheckpoint)
IMG_PID
SyncCheckpointGetCreator(PSYNC_CHECKPOINT psSyncCheckpoint)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = (_SYNC_CHECKPOINT*)psSyncCheckpoint;
SYNC_CHECKPOINT *psSyncCheckpointInt = (SYNC_CHECKPOINT*)psSyncCheckpoint;
PVR_LOG_RETURN_IF_FALSE(psSyncCheckpoint != NULL, "psSyncCheckpoint invalid", 0);
return psSyncCheckpointInt->uiProcess;
@@ -1844,7 +1833,7 @@ SyncCheckpointGetCreator(PSYNC_CHECKPOINT psSyncCheckpoint)
IMG_UINT32 SyncCheckpointStateFromUFO(PPVRSRV_DEVICE_NODE psDevNode,
IMG_UINT32 ui32FwAddr)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt;
SYNC_CHECKPOINT *psSyncCheckpointInt;
PDLLIST_NODE psNode, psNext;
IMG_UINT32 ui32State = 0;
OS_SPINLOCK_FLAGS uiFlags;
@@ -1852,7 +1841,7 @@ IMG_UINT32 SyncCheckpointStateFromUFO(PPVRSRV_DEVICE_NODE psDevNode,
OSSpinLockAcquire(psDevNode->hSyncCheckpointListLock, uiFlags);
dllist_foreach_node(&psDevNode->sSyncCheckpointSyncsList, psNode, psNext)
{
psSyncCheckpointInt = IMG_CONTAINER_OF(psNode, _SYNC_CHECKPOINT, sListNode);
psSyncCheckpointInt = IMG_CONTAINER_OF(psNode, SYNC_CHECKPOINT, sListNode);
if (ui32FwAddr == SyncCheckpointGetFirmwareAddr((PSYNC_CHECKPOINT)psSyncCheckpointInt))
{
ui32State = psSyncCheckpointInt->psSyncCheckpointFwObj->ui32State;
@@ -1866,7 +1855,7 @@ IMG_UINT32 SyncCheckpointStateFromUFO(PPVRSRV_DEVICE_NODE psDevNode,
void SyncCheckpointErrorFromUFO(PPVRSRV_DEVICE_NODE psDevNode,
IMG_UINT32 ui32FwAddr)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt;
SYNC_CHECKPOINT *psSyncCheckpointInt;
PDLLIST_NODE psNode, psNext;
OS_SPINLOCK_FLAGS uiFlags;
@@ -1880,7 +1869,7 @@ void SyncCheckpointErrorFromUFO(PPVRSRV_DEVICE_NODE psDevNode,
OSSpinLockAcquire(psDevNode->hSyncCheckpointListLock, uiFlags);
dllist_foreach_node(&psDevNode->sSyncCheckpointSyncsList, psNode, psNext)
{
psSyncCheckpointInt = IMG_CONTAINER_OF(psNode, _SYNC_CHECKPOINT, sListNode);
psSyncCheckpointInt = IMG_CONTAINER_OF(psNode, SYNC_CHECKPOINT, sListNode);
if (ui32FwAddr == SyncCheckpointGetFirmwareAddr((PSYNC_CHECKPOINT)psSyncCheckpointInt))
{
#if (ENABLE_SYNC_CHECKPOINT_UFO_DEBUG == 1)
@@ -1907,14 +1896,14 @@ void SyncCheckpointRollbackFromUFO(PPVRSRV_DEVICE_NODE psDevNode, IMG_UINT32 ui3
#endif
#if !defined(NO_HARDWARE)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt = NULL;
SYNC_CHECKPOINT *psSyncCheckpointInt = NULL;
PDLLIST_NODE psNode = NULL, psNext = NULL;
OS_SPINLOCK_FLAGS uiFlags;
OSSpinLockAcquire(psDevNode->hSyncCheckpointListLock, uiFlags);
dllist_foreach_node(&psDevNode->sSyncCheckpointSyncsList, psNode, psNext)
{
psSyncCheckpointInt = IMG_CONTAINER_OF(psNode, _SYNC_CHECKPOINT, sListNode);
psSyncCheckpointInt = IMG_CONTAINER_OF(psNode, SYNC_CHECKPOINT, sListNode);
if (ui32FwAddr == SyncCheckpointGetFirmwareAddr((PSYNC_CHECKPOINT)psSyncCheckpointInt))
{
#if ((ENABLE_SYNC_CHECKPOINT_UFO_DEBUG == 1)) || (ENABLE_SYNC_CHECKPOINT_ENQ_AND_SIGNAL_DEBUG == 1)
@@ -1938,7 +1927,7 @@ static void _SyncCheckpointState(PDLLIST_NODE psNode,
DUMPDEBUG_PRINTF_FUNC *pfnDumpDebugPrintf,
void *pvDumpDebugFile)
{
_SYNC_CHECKPOINT *psSyncCheckpoint = IMG_CONTAINER_OF(psNode, _SYNC_CHECKPOINT, sListNode);
SYNC_CHECKPOINT *psSyncCheckpoint = IMG_CONTAINER_OF(psNode, SYNC_CHECKPOINT, sListNode);
if (psSyncCheckpoint->psSyncCheckpointFwObj->ui32State == PVRSRV_SYNC_CHECKPOINT_ACTIVE)
{
@@ -2299,7 +2288,7 @@ static void _SyncCheckpointRecordPrint(struct SYNC_CHECKPOINT_RECORD *psSyncChec
DUMPDEBUG_PRINTF_FUNC *pfnDumpDebugPrintf,
void *pvDumpDebugFile)
{
_SYNC_CHECKPOINT *psSyncCheckpoint = (_SYNC_CHECKPOINT *)psSyncCheckpointRec->pSyncCheckpt;
SYNC_CHECKPOINT *psSyncCheckpoint = (SYNC_CHECKPOINT *)psSyncCheckpointRec->pSyncCheckpt;
SYNC_CHECKPOINT_BLOCK *psSyncCheckpointBlock = psSyncCheckpointRec->psSyncCheckpointBlock;
IMG_UINT64 ui64DeltaS;
IMG_UINT32 ui32DeltaF;
@@ -2460,7 +2449,7 @@ static void _SyncCheckpointRecordListDeinit(PVRSRV_DEVICE_NODE *psDevNode)
#if defined(PDUMP)
static PVRSRV_ERROR
_SyncCheckpointAllocPDump(PVRSRV_DEVICE_NODE *psDevNode, _SYNC_CHECKPOINT *psSyncCheckpoint)
_SyncCheckpointAllocPDump(PVRSRV_DEVICE_NODE *psDevNode, SYNC_CHECKPOINT *psSyncCheckpoint)
{
PDUMPCOMMENTWITHFLAGS(psDevNode, PDUMP_FLAGS_CONTINUOUS,
"Allocated Sync Checkpoint %s (ID:%d, TL:%d, FirmwareVAddr = 0x%08x)",
@@ -2477,7 +2466,7 @@ _SyncCheckpointAllocPDump(PVRSRV_DEVICE_NODE *psDevNode, _SYNC_CHECKPOINT *psSyn
}
static PVRSRV_ERROR
_SyncCheckpointUpdatePDump(PPVRSRV_DEVICE_NODE psDevNode, _SYNC_CHECKPOINT *psSyncCheckpoint, IMG_UINT32 ui32Status, IMG_UINT32 ui32FenceSyncFlags)
_SyncCheckpointUpdatePDump(PPVRSRV_DEVICE_NODE psDevNode, SYNC_CHECKPOINT *psSyncCheckpoint, IMG_UINT32 ui32Status, IMG_UINT32 ui32FenceSyncFlags)
{
IMG_BOOL bSleepAllowed = (ui32FenceSyncFlags & PVRSRV_FENCE_FLAG_CTX_ATOMIC) ? IMG_FALSE : IMG_TRUE;
PVRSRV_RGXDEV_INFO *psDevInfo;
@@ -2591,7 +2580,7 @@ PVRSRV_ERROR PVRSRVSyncCheckpointSignalledPDumpPolKM(PVRSRV_FENCE hFence)
{
PVRSRV_ERROR eError;
PSYNC_CHECKPOINT *apsCheckpoints = NULL;
_SYNC_CHECKPOINT *psSyncCheckpoint = NULL;
SYNC_CHECKPOINT *psSyncCheckpoint = NULL;
IMG_UINT32 i, uiNumCheckpoints = 0;
#if defined(SUPPORT_VALIDATION) && defined(SUPPORT_SOC_TIMER) && defined(NO_HARDWARE) && defined(PDUMP)
PVRSRV_RGXDEV_INFO *psDevInfo;
@@ -2611,13 +2600,13 @@ PVRSRV_ERROR PVRSRVSyncCheckpointSignalledPDumpPolKM(PVRSRV_FENCE hFence)
if (uiNumCheckpoints)
{
/* Flushing deferred fence signals to pdump */
psSyncCheckpoint = (_SYNC_CHECKPOINT *)apsCheckpoints[0];
psSyncCheckpoint = (SYNC_CHECKPOINT *)apsCheckpoints[0];
MISRHandler_PdumpDeferredSyncSignalPoster(psSyncCheckpoint->psSyncCheckpointBlock->psDevNode);
}
for (i=0; i < uiNumCheckpoints; i++)
{
psSyncCheckpoint = (_SYNC_CHECKPOINT *)apsCheckpoints[i];
psSyncCheckpoint = (SYNC_CHECKPOINT *)apsCheckpoints[i];
if (psSyncCheckpoint->psSyncCheckpointFwObj->ui32State == PVRSRV_SYNC_CHECKPOINT_SIGNALLED)
{
PDUMPCOMMENTWITHFLAGS(psSyncCheckpoint->psSyncCheckpointBlock->psDevNode,
@@ -2640,11 +2629,11 @@ PVRSRV_ERROR PVRSRVSyncCheckpointSignalledPDumpPolKM(PVRSRV_FENCE hFence)
/* Sampling of USC timers can only be done after synchronisation for a 3D kick is over */
if (uiNumCheckpoints)
{
psSyncCheckpoint = (_SYNC_CHECKPOINT *)apsCheckpoints[0];
psSyncCheckpoint = (SYNC_CHECKPOINT *)apsCheckpoints[0];
psDevInfo = psSyncCheckpoint->psSyncCheckpointBlock->psDevNode->pvDevice;
if (psDevInfo->psRGXFWIfFwSysData->ui32ConfigFlags & RGXFWIF_INICFG_VALIDATE_SOCUSC_TIMER)
{
PVRSRVValidateSOCUSCTimer(psDevInfo, PDUMP_CONT, 0, 0, NULL);
RGXValidateSOCUSCTimer(psDevInfo, PDUMP_CONT, 0, 0, NULL);
}
}
#endif
@@ -2719,8 +2708,8 @@ static void _CheckDeferredCleanupList(_SYNC_CHECKPOINT_CONTEXT *psContext)
dllist_foreach_node(&psCtxCtl->sDeferredCleanupListHead, psNode, psNext)
{
_SYNC_CHECKPOINT *psSyncCheckpointInt =
IMG_CONTAINER_OF(psNode, _SYNC_CHECKPOINT, sDeferredFreeListNode);
SYNC_CHECKPOINT *psSyncCheckpointInt =
IMG_CONTAINER_OF(psNode, SYNC_CHECKPOINT, sDeferredFreeListNode);
if (psSyncCheckpointInt->psSyncCheckpointFwObj->ui32FwRefCount ==
(IMG_UINT32)(OSAtomicRead(&psSyncCheckpointInt->hEnqueuedCCBCount)))
@@ -2756,8 +2745,8 @@ static void _CheckDeferredCleanupList(_SYNC_CHECKPOINT_CONTEXT *psContext)
OSSpinLockRelease(psCtxCtl->hDeferredCleanupListLock, uiFlags);
dllist_foreach_node(&sCleanupList, psNode, psNext) {
_SYNC_CHECKPOINT *psSyncCheckpointInt =
IMG_CONTAINER_OF(psNode, _SYNC_CHECKPOINT, sDeferredFreeListNode);
SYNC_CHECKPOINT *psSyncCheckpointInt =
IMG_CONTAINER_OF(psNode, SYNC_CHECKPOINT, sDeferredFreeListNode);
/* Remove the sync checkpoint from the global list */
OSSpinLockAcquire(psDevNode->hSyncCheckpointListLock, uiFlags);
@@ -2801,10 +2790,10 @@ static void _CheckDeferredCleanupList(_SYNC_CHECKPOINT_CONTEXT *psContext)
}
#if (SYNC_CHECKPOINT_POOL_SIZE > 0)
static _SYNC_CHECKPOINT *_GetCheckpointFromPool(_SYNC_CHECKPOINT_CONTEXT *psContext)
static SYNC_CHECKPOINT *_GetCheckpointFromPool(_SYNC_CHECKPOINT_CONTEXT *psContext)
{
_SYNC_CHECKPOINT_CONTEXT_CTL *const psCtxCtl = psContext->psContextCtl;
_SYNC_CHECKPOINT *psSyncCheckpoint = NULL;
SYNC_CHECKPOINT *psSyncCheckpoint = NULL;
OS_SPINLOCK_FLAGS uiFlags;
/* Acquire sync checkpoint pool lock */
@@ -2841,7 +2830,7 @@ static _SYNC_CHECKPOINT *_GetCheckpointFromPool(_SYNC_CHECKPOINT_CONTEXT *psCont
return psSyncCheckpoint;
}
static IMG_BOOL _PutCheckpointInPool(_SYNC_CHECKPOINT *psSyncCheckpoint)
static IMG_BOOL _PutCheckpointInPool(SYNC_CHECKPOINT *psSyncCheckpoint)
{
_SYNC_CHECKPOINT_CONTEXT *psContext = psSyncCheckpoint->psSyncCheckpointBlock->psContext;
_SYNC_CHECKPOINT_CONTEXT_CTL *const psCtxCtl = psContext->psContextCtl;
@@ -2885,7 +2874,7 @@ static IMG_BOOL _PutCheckpointInPool(_SYNC_CHECKPOINT *psSyncCheckpoint)
static IMG_UINT32 _CleanCheckpointPool(_SYNC_CHECKPOINT_CONTEXT *psContext)
{
_SYNC_CHECKPOINT_CONTEXT_CTL *const psCtxCtl = psContext->psContextCtl;
_SYNC_CHECKPOINT *psCheckpoint = NULL;
SYNC_CHECKPOINT *psCheckpoint = NULL;
DECLARE_DLLIST(sCleanupList);
DLLIST_NODE *psThis, *psNext;
OS_SPINLOCK_FLAGS uiFlags;
@@ -2942,7 +2931,7 @@ static IMG_UINT32 _CleanCheckpointPool(_SYNC_CHECKPOINT_CONTEXT *psContext)
dllist_foreach_node(&sCleanupList, psThis, psNext)
{
psCheckpoint = IMG_CONTAINER_OF(psThis, _SYNC_CHECKPOINT, sListNode);
psCheckpoint = IMG_CONTAINER_OF(psThis, SYNC_CHECKPOINT, sListNode);
#if (ENABLE_SYNC_CHECKPOINT_POOL_DEBUG == 1)
if (psCheckpoint->ui32ValidationCheck != SYNC_CHECKPOINT_PATTERN_IN_POOL)