return 0;
}
-/* Convert the IOCTL parameter from "old" to "new" format. */
-static int kick_compat_conv(struct PVRSRV_BRIDGE_IN_DOKICK *kick,
- size_t in_size)
-{
- struct SGX_CCB_KICK *ccb;
- size_t diff;
-
- ccb = &kick->sCCBKick;
-
- diff = sizeof(ccb->ah3DStatusSyncInfo[0]) *
- (SGX_MAX_3D_STATUS_VALS - SGX_MAX_3D_STATUS_VALS_OLD);
- if (sizeof(*kick) - in_size != diff)
- return -EINVAL;
-
- /* Trailing size at the end of struct to move. */
- diff = sizeof(*kick) - offsetof(typeof(*kick),
- sCCBKick.ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS]);
- memmove(&kick->sCCBKick.ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS],
- &kick->sCCBKick.ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS_OLD],
- diff);
-
- return 0;
-}
-
int SGXDoKickBW(u32 ui32BridgeID,
struct PVRSRV_BRIDGE_IN_DOKICK *psDoKickIN,
struct PVRSRV_BRIDGE_RETURN *psRetOUT,
struct PVRSRV_PER_PROCESS_DATA *psPerProc)
{
void *hDevCookieInt;
- int max_3dstat_vals;
u32 i;
PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_DOKICK);
- max_3dstat_vals = SGX_MAX_3D_STATUS_VALS;
- if (unlikely(in_size) != sizeof(*psDoKickIN)) {
- max_3dstat_vals = SGX_MAX_3D_STATUS_VALS_OLD;
- if (kick_compat_conv(psDoKickIN, in_size) != 0) {
- psRetOUT->eError = PVRSRV_ERROR_INVALID_PARAMS;
- return -EINVAL;
- }
-
- }
psRetOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase,
&hDevCookieInt,
psDoKickIN->hDevCookie,
return 0;
}
- psRetOUT->eError = SGXDoKickKM(hDevCookieInt, &psDoKickIN->sCCBKick,
- max_3dstat_vals);
+ psRetOUT->eError = SGXDoKickKM(hDevCookieInt, &psDoKickIN->sCCBKick);
return 0;
}
IMG_BOOL bLookupFailed = IMG_FALSE;
IMG_BOOL bReleaseFailed = IMG_FALSE;
void *hDummy;
+ void **edm_mi;
u32 i;
PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_DEVINITPART2);
PVRSRV_HANDLE_TYPE_MEM_INFO);
bLookupFailed |= (IMG_BOOL) (eError != PVRSRV_OK);
-#if defined(PVRSRV_USSE_EDM_STATUS_DEBUG)
- eError = PVRSRVLookupHandle(psPerProc->psHandleBase, &hDummy,
- psSGXDevInitPart2IN->sInitInfo.
- hKernelEDMStatusBufferMemInfo,
- PVRSRV_HANDLE_TYPE_MEM_INFO);
- bLookupFailed |= (IMG_BOOL) (eError != PVRSRV_OK);
-#endif
+ edm_mi = &psSGXDevInitPart2IN->sInitInfo.hKernelEDMStatusBufferMemInfo;
+ if (*edm_mi) {
+ eError = PVRSRVLookupHandle(psPerProc->psHandleBase, &hDummy,
+ *edm_mi, PVRSRV_HANDLE_TYPE_MEM_INFO);
+ bLookupFailed |= eError != PVRSRV_OK;
+ }
for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) {
void *hHandle =
PVRSRV_HANDLE_TYPE_MEM_INFO);
bReleaseFailed |= (IMG_BOOL)(eError != PVRSRV_OK);
-#if defined(PVRSRV_USSE_EDM_STATUS_DEBUG)
- eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase,
- &psSGXDevInitPart2IN->sInitInfo.
- hKernelEDMStatusBufferMemInfo,
- psSGXDevInitPart2IN->sInitInfo.
- hKernelEDMStatusBufferMemInfo,
+ if (*edm_mi) {
+ eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase,
+ edm_mi, *edm_mi,
PVRSRV_HANDLE_TYPE_MEM_INFO);
- bReleaseFailed |= (IMG_BOOL)(eError != PVRSRV_OK);
-#endif
+ bReleaseFailed |= eError != PVRSRV_OK;
+ }
for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) {
void **phHandle =
hKernelHWPerfCBMemInfo);
bDissociateFailed |= (IMG_BOOL) (eError != PVRSRV_OK);
-#if defined(PVRSRV_USSE_EDM_STATUS_DEBUG)
- eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt,
- psSGXDevInitPart2IN->sInitInfo.
- hKernelEDMStatusBufferMemInfo);
- bDissociateFailed |= (IMG_BOOL) (eError != PVRSRV_OK);
-#endif
+ if (*edm_mi) {
+ eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, *edm_mi);
+ bDissociateFailed |= eError != PVRSRV_OK;
+ }
for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) {
void *hHandle =
if (psRetOUT->eError != PVRSRV_OK)
return 0;
- if (ps2DQueryBltsCompleteIN->type == _PVR_SYNC_WAIT_FLIP) {
+ if (ps2DQueryBltsCompleteIN->type == _PVR_SYNC_WAIT_FLIP ||
+ ps2DQueryBltsCompleteIN->type == _PVR_SYNC_WAIT_UPDATE) {
if (pvr_flip_event_req(priv,
(long)ps2DQueryBltsCompleteIN->
hKernSyncInfo,
+ ps2DQueryBltsCompleteIN->type,
ps2DQueryBltsCompleteIN->user_data))
psRetOUT->eError = PVRSRV_ERROR_OUT_OF_MEMORY;
}
PDUMPCOMMENTWITHFLAGS(0, "%s\r\n", pszName);
- PDUMPMEMUM(psPerProc,
- NULL, psBuffer->pvLinAddr,
+ PDUMPMEMUM(NULL, psBuffer->pvLinAddr,
(struct PVRSRV_KERNEL_MEM_INFO *)psBuffer->
hKernelMemInfo,
psBuffer->ui32Start,
MAKEUNIQUETAG(psCtrlMemInfoKM));
}
PDUMPCOMMENTWITHFLAGS(0, "%s (part 1)\r\n", pszName);
- PDUMPMEMUM(psPerProc,
- NULL, psBuffer->pvLinAddr,
+ PDUMPMEMUM(NULL, psBuffer->pvLinAddr,
(struct PVRSRV_KERNEL_MEM_INFO *)psBuffer->
hKernelMemInfo,
psBuffer->ui32Start,
PDUMPMEMPOL(psCtrlMemInfoKM, ui32Offset,
0, 0xFFFFFFFF,
PDUMP_POLL_OPERATOR_NOTEQUAL,
- IMG_FALSE, IMG_FALSE,
MAKEUNIQUETAG(psCtrlMemInfoKM));
PDUMPCOMMENTWITHFLAGS(0,
MAKEUNIQUETAG(psCtrlMemInfoKM));
}
PDUMPCOMMENTWITHFLAGS(0, "%s (part 2)\r\n", pszName);
- PDUMPMEMUM(psPerProc, NULL, psBuffer->pvLinAddr,
+ PDUMPMEMUM(NULL, psBuffer->pvLinAddr,
(struct PVRSRV_KERNEL_MEM_INFO *)psBuffer->
hKernelMemInfo,
0, psBuffer->ui32End, 0, hUniqueTag);
PDump3DSignatureRegisters(psPDump3DSignatureRegistersIN->
ui32DumpFrameNum,
- psPDump3DSignatureRegistersIN->bLastFrame,
pui32Registers,
psPDump3DSignatureRegistersIN->
ui32NumRegisters);
}
PDumpCounterRegisters(psPDumpCounterRegistersIN->ui32DumpFrameNum,
- psPDumpCounterRegistersIN->bLastFrame,
pui32Registers,
psPDumpCounterRegistersIN->ui32NumRegisters);
ui32DumpFrameNum,
psPDumpTASignatureRegistersIN->
ui32TAKickCount,
- psPDumpTASignatureRegistersIN->bLastFrame,
pui32Registers,
psPDumpTASignatureRegistersIN->
ui32NumRegisters);