gpu: pvr: pdump: rewrite PDumpMemUM()
[sgx.git] / pvr / bridged_sgx_bridge.c
index ff80932..7f61b30 100644 (file)
@@ -129,30 +129,6 @@ int SGXGetInternalDevInfoBW(u32 ui32BridgeID,
        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,
@@ -160,20 +136,10 @@ int SGXDoKickBW(u32 ui32BridgeID,
                       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,
@@ -289,8 +255,7 @@ int SGXDoKickBW(u32 ui32BridgeID,
                        return 0;
        }
 
-       psRetOUT->eError = SGXDoKickKM(hDevCookieInt, &psDoKickIN->sCCBKick,
-                                       max_3dstat_vals);
+       psRetOUT->eError = SGXDoKickKM(hDevCookieInt, &psDoKickIN->sCCBKick);
 
        return 0;
 }
@@ -582,6 +547,7 @@ int SGXDevInitPart2BW(u32 ui32BridgeID,
        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);
@@ -640,13 +606,12 @@ int SGXDevInitPart2BW(u32 ui32BridgeID,
                                    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 =
@@ -724,15 +689,12 @@ int SGXDevInitPart2BW(u32 ui32BridgeID,
                                              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 =
@@ -791,12 +753,10 @@ int SGXDevInitPart2BW(u32 ui32BridgeID,
                                                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 =
@@ -1053,10 +1013,12 @@ int SGX2DQueryBlitsCompleteBW(struct file *filp, u32 ui32BridgeID,
        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;
 
@@ -1508,8 +1470,7 @@ static void DumpBufferArray(struct PVRSRV_PER_PROCESS_DATA *psPerProc,
                        }
 
                        PDUMPCOMMENTWITHFLAGS(0, "%s\r\n", pszName);
-                       PDUMPMEMUM(psPerProc,
-                                  NULL, psBuffer->pvLinAddr,
+                       PDUMPMEMUM(NULL, psBuffer->pvLinAddr,
                                   (struct PVRSRV_KERNEL_MEM_INFO *)psBuffer->
                                                           hKernelMemInfo,
                                   psBuffer->ui32Start,
@@ -1528,8 +1489,7 @@ static void DumpBufferArray(struct PVRSRV_PER_PROCESS_DATA *psPerProc,
                                         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,
@@ -1539,7 +1499,6 @@ static void DumpBufferArray(struct PVRSRV_PER_PROCESS_DATA *psPerProc,
                                PDUMPMEMPOL(psCtrlMemInfoKM, ui32Offset,
                                            0, 0xFFFFFFFF,
                                            PDUMP_POLL_OPERATOR_NOTEQUAL,
-                                           IMG_FALSE, IMG_FALSE,
                                            MAKEUNIQUETAG(psCtrlMemInfoKM));
 
                                PDUMPCOMMENTWITHFLAGS(0,
@@ -1551,7 +1510,7 @@ static void DumpBufferArray(struct PVRSRV_PER_PROCESS_DATA *psPerProc,
                                         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);
@@ -1653,7 +1612,6 @@ int SGXPDump3DSignatureRegistersBW(u32 ui32BridgeID,
 
        PDump3DSignatureRegisters(psPDump3DSignatureRegistersIN->
                                                          ui32DumpFrameNum,
-                                 psPDump3DSignatureRegistersIN->bLastFrame,
                                  pui32Registers,
                                  psPDump3DSignatureRegistersIN->
                                                          ui32NumRegisters);
@@ -1703,7 +1661,6 @@ int SGXPDumpCounterRegistersBW(u32 ui32BridgeID,
        }
 
        PDumpCounterRegisters(psPDumpCounterRegistersIN->ui32DumpFrameNum,
-                             psPDumpCounterRegistersIN->bLastFrame,
                              pui32Registers,
                              psPDumpCounterRegistersIN->ui32NumRegisters);
 
@@ -1756,7 +1713,6 @@ int SGXPDumpTASignatureRegistersBW(u32 ui32BridgeID,
                                                          ui32DumpFrameNum,
                                  psPDumpTASignatureRegistersIN->
                                                          ui32TAKickCount,
-                                 psPDumpTASignatureRegistersIN->bLastFrame,
                                  pui32Registers,
                                  psPDumpTASignatureRegistersIN->
                                                          ui32NumRegisters);