summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/img/img-rogue/generated/rogue/rgxkicksync_bridge/server_rgxkicksync_bridge.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/img/img-rogue/generated/rogue/rgxkicksync_bridge/server_rgxkicksync_bridge.c')
-rw-r--r--drivers/gpu/drm/img/img-rogue/generated/rogue/rgxkicksync_bridge/server_rgxkicksync_bridge.c54
1 files changed, 37 insertions, 17 deletions
diff --git a/drivers/gpu/drm/img/img-rogue/generated/rogue/rgxkicksync_bridge/server_rgxkicksync_bridge.c b/drivers/gpu/drm/img/img-rogue/generated/rogue/rgxkicksync_bridge/server_rgxkicksync_bridge.c
index f9041f6a6044..25f68f302280 100644
--- a/drivers/gpu/drm/img/img-rogue/generated/rogue/rgxkicksync_bridge/server_rgxkicksync_bridge.c
+++ b/drivers/gpu/drm/img/img-rogue/generated/rogue/rgxkicksync_bridge/server_rgxkicksync_bridge.c
@@ -179,12 +179,13 @@ PVRSRVBridgeRGXDestroyKickSyncContext(IMG_UINT32 ui32DispatchTableEntry,
LockHandle(psConnection->psHandleBase);
psRGXDestroyKickSyncContextOUT->eError =
- PVRSRVReleaseHandleStagedUnlock(psConnection->psHandleBase,
- (IMG_HANDLE) psRGXDestroyKickSyncContextIN->
- hKickSyncContext,
- PVRSRV_HANDLE_TYPE_RGX_SERVER_KICKSYNC_CONTEXT);
+ PVRSRVDestroyHandleStagedUnlocked(psConnection->psHandleBase,
+ (IMG_HANDLE) psRGXDestroyKickSyncContextIN->
+ hKickSyncContext,
+ PVRSRV_HANDLE_TYPE_RGX_SERVER_KICKSYNC_CONTEXT);
if (unlikely
((psRGXDestroyKickSyncContextOUT->eError != PVRSRV_OK)
+ && (psRGXDestroyKickSyncContextOUT->eError != PVRSRV_ERROR_KERNEL_CCB_FULL)
&& (psRGXDestroyKickSyncContextOUT->eError != PVRSRV_ERROR_RETRY)))
{
PVR_DPF((PVR_DBG_ERROR,
@@ -202,6 +203,11 @@ RGXDestroyKickSyncContext_exit:
return 0;
}
+static_assert(PVRSRV_MAX_DEV_VARS <= IMG_UINT32_MAX,
+ "PVRSRV_MAX_DEV_VARS must not be larger than IMG_UINT32_MAX");
+static_assert(PVRSRV_SYNC_NAME_LENGTH <= IMG_UINT32_MAX,
+ "PVRSRV_SYNC_NAME_LENGTH must not be larger than IMG_UINT32_MAX");
+
static IMG_INT
PVRSRVBridgeRGXKickSync2(IMG_UINT32 ui32DispatchTableEntry,
IMG_UINT8 * psRGXKickSync2IN_UI8,
@@ -226,12 +232,14 @@ PVRSRVBridgeRGXKickSync2(IMG_UINT32 ui32DispatchTableEntry,
IMG_BOOL bHaveEnoughSpace = IMG_FALSE;
#endif
- IMG_UINT32 ui32BufferSize =
- (psRGXKickSync2IN->ui32ClientUpdateCount * sizeof(SYNC_PRIMITIVE_BLOCK *)) +
- (psRGXKickSync2IN->ui32ClientUpdateCount * sizeof(IMG_HANDLE)) +
- (psRGXKickSync2IN->ui32ClientUpdateCount * sizeof(IMG_UINT32)) +
- (psRGXKickSync2IN->ui32ClientUpdateCount * sizeof(IMG_UINT32)) +
- (PVRSRV_SYNC_NAME_LENGTH * sizeof(IMG_CHAR)) + 0;
+ IMG_UINT32 ui32BufferSize = 0;
+ IMG_UINT64 ui64BufferSize =
+ ((IMG_UINT64) psRGXKickSync2IN->ui32ClientUpdateCount *
+ sizeof(SYNC_PRIMITIVE_BLOCK *)) +
+ ((IMG_UINT64) psRGXKickSync2IN->ui32ClientUpdateCount * sizeof(IMG_HANDLE)) +
+ ((IMG_UINT64) psRGXKickSync2IN->ui32ClientUpdateCount * sizeof(IMG_UINT32)) +
+ ((IMG_UINT64) psRGXKickSync2IN->ui32ClientUpdateCount * sizeof(IMG_UINT32)) +
+ ((IMG_UINT64) PVRSRV_SYNC_NAME_LENGTH * sizeof(IMG_CHAR)) + 0;
if (unlikely(psRGXKickSync2IN->ui32ClientUpdateCount > PVRSRV_MAX_DEV_VARS))
{
@@ -239,6 +247,14 @@ PVRSRVBridgeRGXKickSync2(IMG_UINT32 ui32DispatchTableEntry,
goto RGXKickSync2_exit;
}
+ if (ui64BufferSize > IMG_UINT32_MAX)
+ {
+ psRGXKickSync2OUT->eError = PVRSRV_ERROR_BRIDGE_BUFFER_TOO_SMALL;
+ goto RGXKickSync2_exit;
+ }
+
+ ui32BufferSize = (IMG_UINT32) ui64BufferSize;
+
if (ui32BufferSize != 0)
{
#if !defined(INTEGRITY_OS)
@@ -259,7 +275,7 @@ PVRSRVBridgeRGXKickSync2(IMG_UINT32 ui32DispatchTableEntry,
else
#endif
{
- pArrayArgsBuffer = OSAllocZMemNoStats(ui32BufferSize);
+ pArrayArgsBuffer = OSAllocMemNoStats(ui32BufferSize);
if (!pArrayArgsBuffer)
{
@@ -273,6 +289,9 @@ PVRSRVBridgeRGXKickSync2(IMG_UINT32 ui32DispatchTableEntry,
{
psUpdateUFODevVarBlockInt =
(SYNC_PRIMITIVE_BLOCK **) IMG_OFFSET_ADDR(pArrayArgsBuffer, ui32NextOffset);
+ OSCachedMemSet(psUpdateUFODevVarBlockInt, 0,
+ psRGXKickSync2IN->ui32ClientUpdateCount *
+ sizeof(SYNC_PRIMITIVE_BLOCK *));
ui32NextOffset +=
psRGXKickSync2IN->ui32ClientUpdateCount * sizeof(SYNC_PRIMITIVE_BLOCK *);
hUpdateUFODevVarBlockInt2 =
@@ -395,7 +414,6 @@ PVRSRVBridgeRGXKickSync2(IMG_UINT32 ui32DispatchTableEntry,
psRGXKickSync2OUT->eError =
PVRSRVRGXKickSyncKM(psKickSyncContextInt,
- psRGXKickSync2IN->ui32ClientCacheOpSeqNum,
psRGXKickSync2IN->ui32ClientUpdateCount,
psUpdateUFODevVarBlockInt,
ui32UpdateDevVarOffsetInt,
@@ -426,7 +444,7 @@ RGXKickSync2_exit:
{
/* Unreference the previously looked up handle */
- if (hUpdateUFODevVarBlockInt2[i])
+ if (psUpdateUFODevVarBlockInt[i])
{
PVRSRVReleaseHandleUnlocked(psConnection->psHandleBase,
hUpdateUFODevVarBlockInt2[i],
@@ -438,7 +456,10 @@ RGXKickSync2_exit:
UnlockHandle(psConnection->psHandleBase);
/* Allocated space should be equal to the last updated offset */
- PVR_ASSERT(ui32BufferSize == ui32NextOffset);
+#ifdef PVRSRV_NEED_PVR_ASSERT
+ if (psRGXKickSync2OUT->eError == PVRSRV_OK)
+ PVR_ASSERT(ui32BufferSize == ui32NextOffset);
+#endif /* PVRSRV_NEED_PVR_ASSERT */
#if defined(INTEGRITY_OS)
if (pArrayArgsBuffer)
@@ -512,7 +533,7 @@ RGXSetKickSyncContextProperty_exit:
*/
PVRSRV_ERROR InitRGXKICKSYNCBridge(void);
-PVRSRV_ERROR DeinitRGXKICKSYNCBridge(void);
+void DeinitRGXKICKSYNCBridge(void);
/*
* Register all RGXKICKSYNC functions with services
@@ -541,7 +562,7 @@ PVRSRV_ERROR InitRGXKICKSYNCBridge(void)
/*
* Unregister all rgxkicksync functions with services
*/
-PVRSRV_ERROR DeinitRGXKICKSYNCBridge(void)
+void DeinitRGXKICKSYNCBridge(void)
{
UnsetDispatchTableEntry(PVRSRV_BRIDGE_RGXKICKSYNC,
@@ -555,5 +576,4 @@ PVRSRV_ERROR DeinitRGXKICKSYNCBridge(void)
UnsetDispatchTableEntry(PVRSRV_BRIDGE_RGXKICKSYNC,
PVRSRV_BRIDGE_RGXKICKSYNC_RGXSETKICKSYNCCONTEXTPROPERTY);
- return PVRSRV_OK;
}