diff options
| author | Wengang Wu <wgw@motorola.com> | 2014-05-21 09:29:41 -0500 |
|---|---|---|
| committer | Wengang Wu <wgw@motorola.com> | 2014-05-21 09:29:41 -0500 |
| commit | 53a835f5057367679eb3db728bbdd427aab8aa8a (patch) | |
| tree | 03e5bbde7d371e885d1c67210b2b0c9bb0130d40 /drivers/gpu/pvr/services4/srvkm/include | |
| parent | 7489b569ffb64cdb998544405b6774bd43aab70b (diff) | |
| download | olio-linux-3.10-53a835f5057367679eb3db728bbdd427aab8aa8a.tar.xz olio-linux-3.10-53a835f5057367679eb3db728bbdd427aab8aa8a.zip | |
IKXCLOCK-1501 Upgrade to TI SGX Android OpenGL 1.12@2701748
Initial codes of TI SGX DDK 1.12@2701748
Change-Id: I75a8f6521968346ea1b2ea9fa54817ba186442ce
Diffstat (limited to 'drivers/gpu/pvr/services4/srvkm/include')
25 files changed, 503 insertions, 197 deletions
diff --git a/drivers/gpu/pvr/services4/srvkm/include/buffer_manager.h b/drivers/gpu/pvr/services4/srvkm/include/buffer_manager.h index c16efaac005..49d023e4854 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/buffer_manager.h +++ b/drivers/gpu/pvr/services4/srvkm/include/buffer_manager.h @@ -91,17 +91,6 @@ struct _BM_MAPPING_ IMG_UINT32 ui32NumVirtChunks; IMG_UINT32 ui32NumPhysChunks; IMG_BOOL *pabMapChunk; - - /* GPU mapping reference count - * When goes down to 0 GPU mapping - * gets removed */ - IMG_UINT32 ui32MappingCount; - - /* need to track the original required alignment to make sure - * that an unmapped buffer which is later remapped to device - * is remapped with the original alignment restrictions. - */ - IMG_UINT32 ui32DevVAddrAlignment; }; /* @@ -346,8 +335,8 @@ BM_Alloc (IMG_HANDLE hDevMemHeap, */ IMG_BOOL BM_Wrap ( IMG_HANDLE hDevMemHeap, - IMG_SIZE_T ui32Size, - IMG_SIZE_T ui32Offset, + IMG_SIZE_T uSize, + IMG_SIZE_T uOffset, IMG_BOOL bPhysContig, IMG_SYS_PHYADDR *psSysAddr, IMG_VOID *pvCPUVAddr, @@ -423,32 +412,6 @@ IMG_HANDLE BM_HandleToOSMemHandle (BM_HANDLE hBuf); /** - * @Function BM_RemapToDev - * - * @Description - * - * Remaps the device Virtual Mapping. - * - * @Input hBuf - buffer handle. - * @Return ref count on success - */ -IMG_INT32 -BM_RemapToDev(BM_HANDLE hBuf); - -/** - * @Function BM_UnmapFromDev - * - * @Description - * - * Removes the device Virtual Mapping. - * - * @Input hBuf - buffer handle. - * @Return Ref count on success - */ -IMG_INT32 -BM_UnmapFromDev(BM_HANDLE hBuf); - -/** * @Function BM_GetPhysPageAddr * * @Description @@ -631,7 +594,6 @@ IMG_BOOL BM_VirtOffsetToPhysical(IMG_HANDLE hBMHandle, PVRSRV_ERROR BM_XProcWorkaroundSetShareIndex(IMG_UINT32 ui32Index); PVRSRV_ERROR BM_XProcWorkaroundUnsetShareIndex(IMG_UINT32 ui32Index); PVRSRV_ERROR BM_XProcWorkaroundFindNewBufferAndSetShareIndex(IMG_UINT32 *pui32Index); -IMG_INT32 BM_XProcGetShareDataRefCount(IMG_UINT32 ui32Index); #if defined(PVRSRV_REFCOUNT_DEBUG) IMG_VOID _BM_XProcIndexAcquireDebug(const IMG_CHAR *pszFile, IMG_INT iLine, IMG_UINT32 ui32Index); @@ -646,26 +608,13 @@ IMG_VOID _BM_XProcIndexReleaseDebug(const IMG_CHAR *pszFile, IMG_INT iLine, IMG_ IMG_VOID _BM_XProcIndexAcquire(IMG_UINT32 ui32Index); IMG_VOID _BM_XProcIndexRelease(IMG_UINT32 ui32Index); + #define BM_XProcIndexAcquire(x) \ _BM_XProcIndexAcquire( x) #define BM_XProcIndexRelease(x) \ _BM_XProcIndexRelease( x) #endif -static INLINE IMG_CHAR * -_BMMappingType (IMG_INT eCpuMemoryOrigin) -{ - switch (eCpuMemoryOrigin) - { - case hm_wrapped: return "hm_wrapped"; - case hm_wrapped_scatter: return "hm_wrapped_scatter"; - case hm_wrapped_virtaddr: return "hm_wrapped_virtaddr"; - case hm_wrapped_scatter_virtaddr: return "hm_wrapped_scatter_virtaddr"; - case hm_env: return "hm_env"; - case hm_contiguous: return "hm_contiguous"; - } - return "junk"; -} #if defined(__cplusplus) } diff --git a/drivers/gpu/pvr/services4/srvkm/include/device.h b/drivers/gpu/pvr/services4/srvkm/include/device.h index 6ddee5da177..6ddee5da177 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/device.h +++ b/drivers/gpu/pvr/services4/srvkm/include/device.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/devicemem.h b/drivers/gpu/pvr/services4/srvkm/include/devicemem.h new file mode 100755 index 00000000000..00f8fe154a0 --- /dev/null +++ b/drivers/gpu/pvr/services4/srvkm/include/devicemem.h @@ -0,0 +1,52 @@ +/*************************************************************************/ /*! +@Title KM internal device memory functions +@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved +@License Dual MIT/GPLv2 + +The contents of this file are subject to the MIT license as set out below. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +Alternatively, the contents of this file may be used under the terms of +the GNU General Public License Version 2 ("GPL") in which case the provisions +of GPL are applicable instead of those above. + +If you wish to allow use of your version of this file only under the terms of +GPL, and not to allow others to use your version of this file under the terms +of the MIT license, indicate your decision by deleting the provisions above +and replace them with the notice and other provisions required by GPL as set +out in the file called "GPL-COPYING" included in this distribution. If you do +not delete the provisions above, a recipient may use your version of this file +under the terms of either the MIT license or GPL. + +This License is also included in this distribution in the file called +"MIT-COPYING". + +EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS +PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ /**************************************************************************/ + +#include "img_defs.h" +#include "img_types.h" +#include "servicesext.h" + +#ifndef __DEVICEMEM_H__ +#define __DEVICEMEM_H__ + +PVRSRV_ERROR IMG_CALLCONV PVRSRVInitDeviceMem(IMG_VOID); +IMG_VOID IMG_CALLCONV PVRSRVDeInitDeviceMem(IMG_VOID); + +#endif /* __DEVICEMEM_H__ */ diff --git a/drivers/gpu/pvr/services4/srvkm/include/handle.h b/drivers/gpu/pvr/services4/srvkm/include/handle.h index 157d2097884..f636073db2b 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/handle.h +++ b/drivers/gpu/pvr/services4/srvkm/include/handle.h @@ -230,30 +230,11 @@ typedef enum struct _PVRSRV_HANDLE_BASE_; typedef struct _PVRSRV_HANDLE_BASE_ PVRSRV_HANDLE_BASE; -#if defined (PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) +#if defined(PVR_SECURE_HANDLES) extern PVRSRV_HANDLE_BASE *gpsKernelHandleBase; #define KERNEL_HANDLE_BASE (gpsKernelHandleBase) -#if defined (SUPPORT_SID_INTERFACE) -PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag); - -PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_SID hParent); - -PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType); - -PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_SID hHandle); - -PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType); - -PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType, IMG_SID hAncestor); - -PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phParent, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType); - -PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType); - -PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType); -#else PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag); PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent); @@ -271,7 +252,6 @@ PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phPare PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); -#endif /* #if defined (SUPPORT_SID_INTERFACE) */ PVRSRV_ERROR PVRSRVNewHandleBatch(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32BatchSize); @@ -295,7 +275,7 @@ PVRSRV_ERROR PVRSRVHandleInit(IMG_VOID); PVRSRV_ERROR PVRSRVHandleDeInit(IMG_VOID); -#else /* #if defined (PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE)*/ +#else /* #if defined (PVR_SECURE_HANDLES) */ #define KERNEL_HANDLE_BASE IMG_NULL @@ -543,7 +523,7 @@ PVRSRV_ERROR PVRSRVHandleDeInit(IMG_VOID) return PVRSRV_OK; } -#endif /* #if defined (PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE)*/ +#endif /* #if defined (PVR_SECURE_HANDLES) */ /* * Versions of PVRSRVAllocHandle and PVRSRVAllocSubHandle with no return diff --git a/drivers/gpu/pvr/services4/srvkm/include/hash.h b/drivers/gpu/pvr/services4/srvkm/include/hash.h index 1ed6fd0238c..1ed6fd0238c 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/hash.h +++ b/drivers/gpu/pvr/services4/srvkm/include/hash.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/ion_sync.h b/drivers/gpu/pvr/services4/srvkm/include/ion_sync.h new file mode 100755 index 00000000000..8600a19ebb7 --- /dev/null +++ b/drivers/gpu/pvr/services4/srvkm/include/ion_sync.h @@ -0,0 +1,73 @@ +/*************************************************************************/ /*! +@Title Services Ion synchronisation integration +@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved +@License Dual MIT/GPLv2 + +The contents of this file are subject to the MIT license as set out below. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +Alternatively, the contents of this file may be used under the terms of +the GNU General Public License Version 2 ("GPL") in which case the provisions +of GPL are applicable instead of those above. + +If you wish to allow use of your version of this file only under the terms of +GPL, and not to allow others to use your version of this file under the terms +of the MIT license, indicate your decision by deleting the provisions above +and replace them with the notice and other provisions required by GPL as set +out in the file called "GPL-COPYING" included in this distribution. If you do +not delete the provisions above, a recipient may use your version of this file +under the terms of either the MIT license or GPL. + +This License is also included in this distribution in the file called +"MIT-COPYING". + +EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS +PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ /**************************************************************************/ + +#include "img_defs.h" +#include "img_types.h" +#include "servicesint.h" + +#ifndef __ION_SYNC_H__ +#define __ION_SYNC_H__ + +typedef struct _PVRSRV_ION_SYNC_INFO_ { + PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; + IMG_HANDLE hUnique; + IMG_UINT32 ui32RefCount; + IMG_UINT64 ui64Stamp; +} PVRSRV_ION_SYNC_INFO; + +PVRSRV_ERROR PVRSRVIonBufferSyncAcquire(IMG_HANDLE hUnique, + IMG_HANDLE hDevCookie, + IMG_HANDLE hDevMemContext, + PVRSRV_ION_SYNC_INFO **ppsIonSyncInfo); + +IMG_VOID PVRSRVIonBufferSyncRelease(PVRSRV_ION_SYNC_INFO *psIonSyncInfo); + +static INLINE PVRSRV_KERNEL_SYNC_INFO *IonBufferSyncGetKernelSyncInfo(PVRSRV_ION_SYNC_INFO *psIonSyncInfo) +{ + return psIonSyncInfo->psSyncInfo; +} + +static INLINE IMG_UINT64 IonBufferSyncGetStamp(PVRSRV_ION_SYNC_INFO *psIonSyncInfo) +{ + return psIonSyncInfo->ui64Stamp; +} + +#endif /* __ION_SYNC_H__ */ diff --git a/drivers/gpu/pvr/services4/srvkm/include/lists.h b/drivers/gpu/pvr/services4/srvkm/include/lists.h index 81205de3bd1..31f54096893 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/lists.h +++ b/drivers/gpu/pvr/services4/srvkm/include/lists.h @@ -332,6 +332,10 @@ DECLARE_LIST_ANY_VA_2(PVRSRV_POWER_DEV, PVRSRV_ERROR, PVRSRV_OK); DECLARE_LIST_INSERT(PVRSRV_POWER_DEV); DECLARE_LIST_REMOVE(PVRSRV_POWER_DEV); +DECLARE_LIST_ANY_2(PVRSRV_KERNEL_SYNC_INFO, PVRSRV_ERROR, PVRSRV_OK); +DECLARE_LIST_INSERT(PVRSRV_KERNEL_SYNC_INFO); +DECLARE_LIST_REMOVE(PVRSRV_KERNEL_SYNC_INFO); + #undef DECLARE_LIST_ANY_2 #undef DECLARE_LIST_ANY_VA #undef DECLARE_LIST_ANY_VA_2 diff --git a/drivers/gpu/pvr/services4/srvkm/include/metrics.h b/drivers/gpu/pvr/services4/srvkm/include/metrics.h index 18079cb9624..18079cb9624 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/metrics.h +++ b/drivers/gpu/pvr/services4/srvkm/include/metrics.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/osfunc.h b/drivers/gpu/pvr/services4/srvkm/include/osfunc.h index dcaa58abda8..9bb772c3bbe 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/osfunc.h +++ b/drivers/gpu/pvr/services4/srvkm/include/osfunc.h @@ -54,7 +54,6 @@ extern "C" { #if defined(__linux__) && defined(__KERNEL__) #include <linux/hardirq.h> #include <linux/string.h> -#include <asm/system.h> #if defined(__arm__) #include <asm/memory.h> #endif @@ -87,7 +86,7 @@ extern "C" { IMG_UINT32 OSClockus(IMG_VOID); -IMG_SIZE_T OSGetPageSize(IMG_VOID); +IMG_UINT32 OSGetPageSize(IMG_VOID); PVRSRV_ERROR OSInstallDeviceLISR(IMG_VOID *pvSysData, IMG_UINT32 ui32Irq, IMG_CHAR *pszISRName, @@ -98,12 +97,12 @@ PVRSRV_ERROR OSUninstallSystemLISR(IMG_VOID *pvSysData); PVRSRV_ERROR OSInstallMISR(IMG_VOID *pvSysData); PVRSRV_ERROR OSUninstallMISR(IMG_VOID *pvSysData); IMG_CPU_PHYADDR OSMapLinToCPUPhys(IMG_HANDLE, IMG_VOID* pvLinAddr); -IMG_VOID OSMemCopy(IMG_VOID *pvDst, IMG_VOID *pvSrc, IMG_SIZE_T ui32Size); -IMG_VOID *OSMapPhysToLin(IMG_CPU_PHYADDR BasePAddr, IMG_SIZE_T ui32Bytes, IMG_UINT32 ui32Flags, IMG_HANDLE *phOSMemHandle); -IMG_BOOL OSUnMapPhysToLin(IMG_VOID *pvLinAddr, IMG_SIZE_T ui32Bytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle); +IMG_VOID OSMemCopy(IMG_VOID *pvDst, IMG_VOID *pvSrc, IMG_SIZE_T uiSize); +IMG_VOID *OSMapPhysToLin(IMG_CPU_PHYADDR BasePAddr, IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE *phOSMemHandle); +IMG_BOOL OSUnMapPhysToLin(IMG_VOID *pvLinAddr, IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle); -PVRSRV_ERROR OSReservePhys(IMG_CPU_PHYADDR BasePAddr, IMG_SIZE_T ui32Bytes, IMG_UINT32 ui32Flags, IMG_HANDLE hBMHandle, IMG_VOID **ppvCpuVAddr, IMG_HANDLE *phOSMemHandle); -PVRSRV_ERROR OSUnReservePhys(IMG_VOID *pvCpuVAddr, IMG_SIZE_T ui32Bytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle); +PVRSRV_ERROR OSReservePhys(IMG_CPU_PHYADDR BasePAddr, IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hBMHandle, IMG_VOID **ppvCpuVAddr, IMG_HANDLE *phOSMemHandle); +PVRSRV_ERROR OSUnReservePhys(IMG_VOID *pvCpuVAddr, IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle); /* Some terminology: * @@ -193,11 +192,11 @@ static INLINE IMG_BOOL OSInvalidateCPUCacheRangeKM(IMG_HANDLE hOSMemHandle, #if defined(__linux__) || defined(__QNXNTO__) PVRSRV_ERROR OSRegisterDiscontigMem(IMG_SYS_PHYADDR *pBasePAddr, IMG_VOID *pvCpuVAddr, - IMG_SIZE_T ui32Bytes, + IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE *phOSMemHandle); PVRSRV_ERROR OSUnRegisterDiscontigMem(IMG_VOID *pvCpuVAddr, - IMG_SIZE_T ui32Bytes, + IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle); #else /* defined(__linux__) */ @@ -206,7 +205,7 @@ PVRSRV_ERROR OSUnRegisterDiscontigMem(IMG_VOID *pvCpuVAddr, #endif static INLINE PVRSRV_ERROR OSRegisterDiscontigMem(IMG_SYS_PHYADDR *pBasePAddr, IMG_VOID *pvCpuVAddr, - IMG_SIZE_T ui32Bytes, + IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE *phOSMemHandle) { @@ -223,7 +222,7 @@ static INLINE PVRSRV_ERROR OSRegisterDiscontigMem(IMG_SYS_PHYADDR *pBasePAddr, #pragma inline(OSUnRegisterDiscontigMem) #endif static INLINE PVRSRV_ERROR OSUnRegisterDiscontigMem(IMG_VOID *pvCpuVAddr, - IMG_SIZE_T ui32Bytes, + IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle) { @@ -241,11 +240,11 @@ static INLINE PVRSRV_ERROR OSUnRegisterDiscontigMem(IMG_VOID *pvCpuVAddr, #ifdef INLINE_IS_PRAGMA #pragma inline(OSReserveDiscontigPhys) #endif -static INLINE PVRSRV_ERROR OSReserveDiscontigPhys(IMG_SYS_PHYADDR *pBasePAddr, IMG_SIZE_T ui32Bytes, IMG_UINT32 ui32Flags, IMG_VOID **ppvCpuVAddr, IMG_HANDLE *phOSMemHandle) +static INLINE PVRSRV_ERROR OSReserveDiscontigPhys(IMG_SYS_PHYADDR *pBasePAddr, IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_VOID **ppvCpuVAddr, IMG_HANDLE *phOSMemHandle) { #if defined(__linux__) || defined(__QNXNTO__) *ppvCpuVAddr = IMG_NULL; - return OSRegisterDiscontigMem(pBasePAddr, *ppvCpuVAddr, ui32Bytes, ui32Flags, phOSMemHandle); + return OSRegisterDiscontigMem(pBasePAddr, *ppvCpuVAddr, uBytes, ui32Flags, phOSMemHandle); #else extern IMG_CPU_PHYADDR SysSysPAddrToCpuPAddr(IMG_SYS_PHYADDR SysPAddr); @@ -258,14 +257,14 @@ static INLINE PVRSRV_ERROR OSReserveDiscontigPhys(IMG_SYS_PHYADDR *pBasePAddr, I * 4. We don't need to unmap */ - return OSReservePhys(SysSysPAddrToCpuPAddr(pBasePAddr[0]), ui32Bytes, ui32Flags, IMG_NULL, ppvCpuVAddr, phOSMemHandle); + return OSReservePhys(SysSysPAddrToCpuPAddr(pBasePAddr[0]), uBytes, ui32Flags, IMG_NULL, ppvCpuVAddr, phOSMemHandle); #endif } -static INLINE PVRSRV_ERROR OSUnReserveDiscontigPhys(IMG_VOID *pvCpuVAddr, IMG_SIZE_T ui32Bytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle) +static INLINE PVRSRV_ERROR OSUnReserveDiscontigPhys(IMG_VOID *pvCpuVAddr, IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle) { #if defined(__linux__) || defined(__QNXNTO__) - OSUnRegisterDiscontigMem(pvCpuVAddr, ui32Bytes, ui32Flags, hOSMemHandle); + OSUnRegisterDiscontigMem(pvCpuVAddr, uBytes, ui32Flags, hOSMemHandle); #endif /* We don't need to unmap */ return PVRSRV_OK; @@ -276,10 +275,10 @@ static INLINE PVRSRV_ERROR OSUnReserveDiscontigPhys(IMG_VOID *pvCpuVAddr, IMG_SI #ifdef INLINE_IS_PRAGMA #pragma inline(OSReserveDiscontigPhys) #endif -static INLINE PVRSRV_ERROR OSReserveDiscontigPhys(IMG_SYS_PHYADDR *pBasePAddr, IMG_SIZE_T ui32Bytes, IMG_UINT32 ui32Flags, IMG_VOID **ppvCpuVAddr, IMG_HANDLE *phOSMemHandle) +static INLINE PVRSRV_ERROR OSReserveDiscontigPhys(IMG_SYS_PHYADDR *pBasePAddr, IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_VOID **ppvCpuVAddr, IMG_HANDLE *phOSMemHandle) { PVR_UNREFERENCED_PARAMETER(pBasePAddr); - PVR_UNREFERENCED_PARAMETER(ui32Bytes); + PVR_UNREFERENCED_PARAMETER(uBytes); PVR_UNREFERENCED_PARAMETER(ui32Flags); PVR_UNREFERENCED_PARAMETER(ppvCpuVAddr); PVR_UNREFERENCED_PARAMETER(phOSMemHandle); @@ -290,10 +289,10 @@ static INLINE PVRSRV_ERROR OSReserveDiscontigPhys(IMG_SYS_PHYADDR *pBasePAddr, I #ifdef INLINE_IS_PRAGMA #pragma inline(OSUnReserveDiscontigPhys) #endif -static INLINE PVRSRV_ERROR OSUnReserveDiscontigPhys(IMG_VOID *pvCpuVAddr, IMG_SIZE_T ui32Bytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle) +static INLINE PVRSRV_ERROR OSUnReserveDiscontigPhys(IMG_VOID *pvCpuVAddr, IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle) { PVR_UNREFERENCED_PARAMETER(pvCpuVAddr); - PVR_UNREFERENCED_PARAMETER(ui32Bytes); + PVR_UNREFERENCED_PARAMETER(uBytes); PVR_UNREFERENCED_PARAMETER(ui32Flags); PVR_UNREFERENCED_PARAMETER(hOSMemHandle); @@ -303,11 +302,11 @@ static INLINE PVRSRV_ERROR OSUnReserveDiscontigPhys(IMG_VOID *pvCpuVAddr, IMG_SI PVRSRV_ERROR OSRegisterMem(IMG_CPU_PHYADDR BasePAddr, IMG_VOID *pvCpuVAddr, - IMG_SIZE_T ui32Bytes, + IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE *phOSMemHandle); PVRSRV_ERROR OSUnRegisterMem(IMG_VOID *pvCpuVAddr, - IMG_SIZE_T ui32Bytes, + IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hOSMemHandle); @@ -315,8 +314,8 @@ PVRSRV_ERROR OSUnRegisterMem(IMG_VOID *pvCpuVAddr, #if defined(__linux__) || defined(__QNXNTO__) PVRSRV_ERROR OSGetSubMemHandle(IMG_HANDLE hOSMemHandle, - IMG_UINTPTR_T ui32ByteOffset, - IMG_SIZE_T ui32Bytes, + IMG_UINTPTR_T uByteOffset, + IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE *phOSMemHandleRet); PVRSRV_ERROR OSReleaseSubMemHandle(IMG_HANDLE hOSMemHandle, IMG_UINT32 ui32Flags); @@ -325,13 +324,13 @@ PVRSRV_ERROR OSReleaseSubMemHandle(IMG_HANDLE hOSMemHandle, IMG_UINT32 ui32Flags #pragma inline(OSGetSubMemHandle) #endif static INLINE PVRSRV_ERROR OSGetSubMemHandle(IMG_HANDLE hOSMemHandle, - IMG_UINTPTR_T ui32ByteOffset, - IMG_SIZE_T ui32Bytes, + IMG_UINTPTR_T uByteOffset, + IMG_SIZE_T uBytes, IMG_UINT32 ui32Flags, IMG_HANDLE *phOSMemHandleRet) { - PVR_UNREFERENCED_PARAMETER(ui32ByteOffset); - PVR_UNREFERENCED_PARAMETER(ui32Bytes); + PVR_UNREFERENCED_PARAMETER(uByteOffset); + PVR_UNREFERENCED_PARAMETER(uBytes); PVR_UNREFERENCED_PARAMETER(ui32Flags); *phOSMemHandleRet = hOSMemHandle; @@ -347,18 +346,15 @@ static INLINE PVRSRV_ERROR OSReleaseSubMemHandle(IMG_HANDLE hOSMemHandle, IMG_UI #endif IMG_UINT32 OSGetCurrentProcessIDKM(IMG_VOID); -int OSGetProcCmdline(IMG_UINT32 ui32PID, char * buffer, int buff_size); -const char* OSGetPathBaseName(char * buffer, int buff_size); +#if defined (MEM_TRACK_INFO_DEBUG) +IMG_UINT32 OSGetCurrentTimeInUSecsKM(IMG_VOID); +#endif IMG_UINTPTR_T OSGetCurrentThreadID( IMG_VOID ); -IMG_VOID OSMemSet(IMG_VOID *pvDest, IMG_UINT8 ui8Value, IMG_SIZE_T ui32Size); +IMG_VOID OSMemSet(IMG_VOID *pvDest, IMG_UINT8 ui8Value, IMG_SIZE_T uSize); -PVRSRV_ERROR OSAllocPages_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T ui32Size, IMG_UINT32 ui32PageSize, +PVRSRV_ERROR OSAllocPages_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T uSize, IMG_UINT32 ui32PageSize, IMG_PVOID pvPrivData, IMG_UINT32 ui32PrivDataLength, IMG_HANDLE hBMHandle, IMG_PVOID *ppvLinAddr, IMG_HANDLE *phPageAlloc); -PVRSRV_ERROR OSFreePages(IMG_UINT32 ui32Flags, IMG_SIZE_T ui32Size, IMG_PVOID pvLinAddr, IMG_HANDLE hPageAlloc); - -IMG_INT32 -OSGetMemMultiPlaneInfo(IMG_HANDLE hOSMemHandle, IMG_UINT32* pui32AddressOffsets, - IMG_UINT32* ui32NumAddrOffsets); +PVRSRV_ERROR OSFreePages(IMG_UINT32 ui32Flags, IMG_SIZE_T uSize, IMG_PVOID pvLinAddr, IMG_HANDLE hPageAlloc); /*--------------------- @@ -440,14 +436,14 @@ else alias to level 1 wrapper, else the wrapper function will be used*/ /*If level 1 wrapper is enabled declare the functions with extra parameters else alias to level 0 and declare the functions without the extra debugging parameters*/ #if (defined(__linux__) || defined(__QNXNTO__)) && defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) - PVRSRV_ERROR OSAllocMem_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T ui32Size, IMG_PVOID *ppvLinAddr, IMG_HANDLE *phBlockAlloc, IMG_CHAR *pszFilename, IMG_UINT32 ui32Line); - PVRSRV_ERROR OSFreeMem_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T ui32Size, IMG_PVOID pvLinAddr, IMG_HANDLE hBlockAlloc, IMG_CHAR *pszFilename, IMG_UINT32 ui32Line); + PVRSRV_ERROR OSAllocMem_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T uSize, IMG_PVOID *ppvLinAddr, IMG_HANDLE *phBlockAlloc, IMG_CHAR *pszFilename, IMG_UINT32 ui32Line); + PVRSRV_ERROR OSFreeMem_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T uSize, IMG_PVOID pvLinAddr, IMG_HANDLE hBlockAlloc, IMG_CHAR *pszFilename, IMG_UINT32 ui32Line); #define OSAllocMem_Debug_Linux_Memory_Allocations OSAllocMem_Impl #define OSFreeMem_Debug_Linux_Memory_Allocations OSFreeMem_Impl #else - PVRSRV_ERROR OSAllocMem_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T ui32Size, IMG_PVOID *ppvLinAddr, IMG_HANDLE *phBlockAlloc); - PVRSRV_ERROR OSFreeMem_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T ui32Size, IMG_PVOID pvLinAddr, IMG_HANDLE hBlockAlloc); + PVRSRV_ERROR OSAllocMem_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T uSize, IMG_PVOID *ppvLinAddr, IMG_HANDLE *phBlockAlloc); + PVRSRV_ERROR OSFreeMem_Impl(IMG_UINT32 ui32Flags, IMG_SIZE_T uSize, IMG_PVOID pvLinAddr, IMG_HANDLE hBlockAlloc); #define OSAllocMem_Debug_Linux_Memory_Allocations(flags, size, addr, blockAlloc, file, line) \ OSAllocMem_Impl(flags, size, addr, blockAlloc) @@ -457,16 +453,16 @@ else alias to level 0 and declare the functions without the extra debugging para #if defined(__linux__) || defined(__QNXNTO__) -IMG_CPU_PHYADDR OSMemHandleToCpuPAddr(IMG_VOID *hOSMemHandle, IMG_SIZE_T ui32ByteOffset); +IMG_CPU_PHYADDR OSMemHandleToCpuPAddr(IMG_VOID *hOSMemHandle, IMG_UINTPTR_T uiByteOffset); #else #ifdef INLINE_IS_PRAGMA #pragma inline(OSMemHandleToCpuPAddr) #endif -static INLINE IMG_CPU_PHYADDR OSMemHandleToCpuPAddr(IMG_HANDLE hOSMemHandle, IMG_SIZE_T ui32ByteOffset) +static INLINE IMG_CPU_PHYADDR OSMemHandleToCpuPAddr(IMG_HANDLE hOSMemHandle, IMG_UINTPTR_T uiByteOffset) { IMG_CPU_PHYADDR sCpuPAddr; PVR_UNREFERENCED_PARAMETER(hOSMemHandle); - PVR_UNREFERENCED_PARAMETER(ui32ByteOffset); + PVR_UNREFERENCED_PARAMETER(uiByteOffset); sCpuPAddr.uiAddr = 0; return sCpuPAddr; } @@ -488,20 +484,9 @@ static INLINE IMG_BOOL OSMemHandleIsPhysContig(IMG_HANDLE hOSMemHandle) PVRSRV_ERROR OSInitEnvData(IMG_PVOID *ppvEnvSpecificData); PVRSRV_ERROR OSDeInitEnvData(IMG_PVOID pvEnvSpecificData); IMG_CHAR* OSStringCopy(IMG_CHAR *pszDest, const IMG_CHAR *pszSrc); -IMG_INT32 OSSNPrintf(IMG_CHAR *pStr, IMG_SIZE_T ui32Size, const IMG_CHAR *pszFormat, ...) IMG_FORMAT_PRINTF(3, 4); +IMG_INT32 OSSNPrintf(IMG_CHAR *pStr, IMG_SIZE_T uSize, const IMG_CHAR *pszFormat, ...) IMG_FORMAT_PRINTF(3, 4); #define OSStringLength(pszString) strlen(pszString) -#if defined (SUPPORT_SID_INTERFACE) -PVRSRV_ERROR OSEventObjectCreateKM(const IMG_CHAR *pszName, - PVRSRV_EVENTOBJECT_KM *psEventObject); -PVRSRV_ERROR OSEventObjectDestroyKM(PVRSRV_EVENTOBJECT_KM *psEventObject); -PVRSRV_ERROR OSEventObjectSignalKM(IMG_HANDLE hOSEventKM); -PVRSRV_ERROR OSEventObjectWaitKM(IMG_HANDLE hOSEventKM); -PVRSRV_ERROR OSEventObjectOpenKM(PVRSRV_EVENTOBJECT_KM *psEventObject, - IMG_HANDLE *phOSEvent); -PVRSRV_ERROR OSEventObjectCloseKM(PVRSRV_EVENTOBJECT_KM *psEventObject, - IMG_HANDLE hOSEventKM); -#else PVRSRV_ERROR OSEventObjectCreateKM(const IMG_CHAR *pszName, PVRSRV_EVENTOBJECT *psEventObject); PVRSRV_ERROR OSEventObjectDestroyKM(PVRSRV_EVENTOBJECT *psEventObject); @@ -511,17 +496,16 @@ PVRSRV_ERROR OSEventObjectOpenKM(PVRSRV_EVENTOBJECT *psEventObject, IMG_HANDLE *phOSEvent); PVRSRV_ERROR OSEventObjectCloseKM(PVRSRV_EVENTOBJECT *psEventObject, IMG_HANDLE hOSEventKM); -#endif /* #if defined (SUPPORT_SID_INTERFACE) */ -PVRSRV_ERROR OSBaseAllocContigMemory(IMG_SIZE_T ui32Size, IMG_CPU_VIRTADDR *pLinAddr, IMG_CPU_PHYADDR *pPhysAddr); -PVRSRV_ERROR OSBaseFreeContigMemory(IMG_SIZE_T ui32Size, IMG_CPU_VIRTADDR LinAddr, IMG_CPU_PHYADDR PhysAddr); +PVRSRV_ERROR OSBaseAllocContigMemory(IMG_SIZE_T uSize, IMG_CPU_VIRTADDR *pLinAddr, IMG_CPU_PHYADDR *pPhysAddr); +PVRSRV_ERROR OSBaseFreeContigMemory(IMG_SIZE_T uSize, IMG_CPU_VIRTADDR LinAddr, IMG_CPU_PHYADDR PhysAddr); -IMG_PVOID MapUserFromKernel(IMG_PVOID pvLinAddrKM,IMG_SIZE_T ui32Size,IMG_HANDLE *phMemBlock); +IMG_PVOID MapUserFromKernel(IMG_PVOID pvLinAddrKM,IMG_SIZE_T uSize,IMG_HANDLE *phMemBlock); IMG_PVOID OSMapHWRegsIntoUserSpace(IMG_HANDLE hDevCookie, IMG_SYS_PHYADDR sRegAddr, IMG_UINT32 ulSize, IMG_PVOID *ppvProcess); IMG_VOID OSUnmapHWRegsFromUserSpace(IMG_HANDLE hDevCookie, IMG_PVOID pvUserAddr, IMG_PVOID pvProcess); -IMG_VOID UnmapUserFromKernel(IMG_PVOID pvLinAddrUM, IMG_SIZE_T ui32Size, IMG_HANDLE hMemBlock); +IMG_VOID UnmapUserFromKernel(IMG_PVOID pvLinAddrUM, IMG_SIZE_T uSize, IMG_HANDLE hMemBlock); PVRSRV_ERROR OSMapPhysToUserSpace(IMG_HANDLE hDevCookie, IMG_SYS_PHYADDR sCPUPhysAddr, @@ -627,7 +611,7 @@ PVRSRV_ERROR OSRemoveTimer (IMG_HANDLE hTimer); PVRSRV_ERROR OSEnableTimer (IMG_HANDLE hTimer); PVRSRV_ERROR OSDisableTimer (IMG_HANDLE hTimer); -PVRSRV_ERROR OSGetSysMemSize(IMG_SIZE_T *pui32Bytes); +PVRSRV_ERROR OSGetSysMemSize(IMG_SIZE_T *puBytes); typedef enum _HOST_PCI_INIT_FLAGS_ { @@ -674,14 +658,14 @@ typedef enum _img_verify_test PVR_VERIFY_READ } IMG_VERIFY_TEST; -IMG_BOOL OSAccessOK(IMG_VERIFY_TEST eVerification, IMG_VOID *pvUserPtr, IMG_SIZE_T ui32Bytes); +IMG_BOOL OSAccessOK(IMG_VERIFY_TEST eVerification, IMG_VOID *pvUserPtr, IMG_SIZE_T uBytes); -PVRSRV_ERROR OSCopyToUser(IMG_PVOID pvProcess, IMG_VOID *pvDest, IMG_VOID *pvSrc, IMG_SIZE_T ui32Bytes); -PVRSRV_ERROR OSCopyFromUser(IMG_PVOID pvProcess, IMG_VOID *pvDest, IMG_VOID *pvSrc, IMG_SIZE_T ui32Bytes); +PVRSRV_ERROR OSCopyToUser(IMG_PVOID pvProcess, IMG_VOID *pvDest, IMG_VOID *pvSrc, IMG_SIZE_T uBytes); +PVRSRV_ERROR OSCopyFromUser(IMG_PVOID pvProcess, IMG_VOID *pvDest, IMG_VOID *pvSrc, IMG_SIZE_T uBytes); #if defined(__linux__) || defined(__QNXNTO__) PVRSRV_ERROR OSAcquirePhysPageAddr(IMG_VOID* pvCPUVAddr, - IMG_SIZE_T ui32Bytes, + IMG_SIZE_T uBytes, IMG_SYS_PHYADDR *psSysPAddr, IMG_HANDLE *phOSWrapMem); PVRSRV_ERROR OSReleasePhysPageAddr(IMG_HANDLE hOSWrapMem); @@ -690,12 +674,12 @@ PVRSRV_ERROR OSReleasePhysPageAddr(IMG_HANDLE hOSWrapMem); #pragma inline(OSAcquirePhysPageAddr) #endif static INLINE PVRSRV_ERROR OSAcquirePhysPageAddr(IMG_VOID* pvCPUVAddr, - IMG_SIZE_T ui32Bytes, + IMG_SIZE_T uBytes, IMG_SYS_PHYADDR *psSysPAddr, IMG_HANDLE *phOSWrapMem) { PVR_UNREFERENCED_PARAMETER(pvCPUVAddr); - PVR_UNREFERENCED_PARAMETER(ui32Bytes); + PVR_UNREFERENCED_PARAMETER(uBytes); PVR_UNREFERENCED_PARAMETER(psSysPAddr); PVR_UNREFERENCED_PARAMETER(phOSWrapMem); return PVRSRV_OK; @@ -787,6 +771,12 @@ static INLINE IMG_VOID OSGetCurrentProcessNameKM(IMG_CHAR *pszName, IMG_UINT32 u #endif +#if defined(__linux__) && defined(DEBUG) +#define OSDumpStack dump_stack +#else +#define OSDumpStack() +#endif + #if defined (__cplusplus) } #endif diff --git a/drivers/gpu/pvr/services4/srvkm/include/osperproc.h b/drivers/gpu/pvr/services4/srvkm/include/osperproc.h index 0b962b43830..0b962b43830 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/osperproc.h +++ b/drivers/gpu/pvr/services4/srvkm/include/osperproc.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/pdump_int.h b/drivers/gpu/pvr/services4/srvkm/include/pdump_int.h index a76fed0163b..a76fed0163b 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/pdump_int.h +++ b/drivers/gpu/pvr/services4/srvkm/include/pdump_int.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/pdump_km.h b/drivers/gpu/pvr/services4/srvkm/include/pdump_km.h index e4325ccb360..4d62154fb66 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/pdump_km.h +++ b/drivers/gpu/pvr/services4/srvkm/include/pdump_km.h @@ -77,6 +77,10 @@ extern IMG_UINT32 g_ui32EveryLineCounter; #define MAKEUNIQUETAG(hMemInfo) (0) #endif +IMG_BOOL _PDumpIsProcessActive(IMG_VOID); + +IMG_BOOL PDumpWillCapture(IMG_UINT32 ui32Flags); + #ifdef PDUMP #define MAKEUNIQUETAG(hMemInfo) (((BM_BUF *)(((PVRSRV_KERNEL_MEM_INFO *)(hMemInfo))->sMemBlk.hBuffer))->pMapping) @@ -267,8 +271,8 @@ extern IMG_UINT32 g_ui32EveryLineCounter; IMG_HANDLE hOSMemHandle, IMG_UINT32 ui32NumBytes, IMG_UINT32 ui32PageSize, - IMG_BOOL bShared, - IMG_HANDLE hUniqueTag); + IMG_HANDLE hUniqueTag, + IMG_UINT32 ui32Flags); PVRSRV_ERROR PDumpMallocPageTable(PVRSRV_DEVICE_IDENTIFIER *psDevId, IMG_HANDLE hOSMemHandle, IMG_UINT32 ui32Offset, @@ -282,7 +286,8 @@ extern IMG_UINT32 g_ui32EveryLineCounter; IMG_UINT32 ui32PageSize, IMG_HANDLE hUniqueTag, IMG_BOOL bInterleaved, - IMG_BOOL bSparse); + IMG_BOOL bSparse, + IMG_UINT32 ui32Flags); PVRSRV_ERROR PDumpFreePageTable(PVRSRV_DEVICE_IDENTIFIER *psDevID, IMG_HANDLE hOSMemHandle, IMG_CPU_VIRTADDR pvLinAddr, diff --git a/drivers/gpu/pvr/services4/srvkm/include/pdump_osfunc.h b/drivers/gpu/pvr/services4/srvkm/include/pdump_osfunc.h index 0f2e103c23b..9fc1fd82297 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/pdump_osfunc.h +++ b/drivers/gpu/pvr/services4/srvkm/include/pdump_osfunc.h @@ -58,7 +58,10 @@ extern "C" { * supported (e.g. Linux). */ #define MAX_PDUMP_STRING_LENGTH (256) -#if defined(__QNXNTO__) + + +#if defined(__QNXNTO__) + #define PDUMP_GET_SCRIPT_STRING() \ IMG_CHAR pszScript[MAX_PDUMP_STRING_LENGTH]; \ IMG_UINT32 ui32MaxLen = MAX_PDUMP_STRING_LENGTH-1; \ @@ -79,7 +82,12 @@ extern "C" { IMG_UINT32 ui32MaxLenFileName = MAX_PDUMP_STRING_LENGTH-1; \ IMG_HANDLE hScript = (IMG_HANDLE)pszScript; -#else /* WIN32 or QNX */ +#define PDUMP_LOCK(args...) +#define PDUMP_UNLOCK(args...) +#define PDUMP_LOCK_MSG(args...) +#define PDUMP_UNLOCK_MSG(args...) + +#else /* __QNXNTO__ */ /* @@ -117,6 +125,48 @@ extern "C" { eError = PDumpOSGetFilenameString(&pszFileName, &ui32MaxLenFileName);\ if(eError != PVRSRV_OK) return eError; +#define PDUMP_LOCK() \ + PDumpOSLock(__LINE__); + +#define PDUMP_UNLOCK() \ + PDumpOSUnlock(__LINE__); + +#define PDUMP_LOCK_MSG() \ + PDumpOSLockMessageBuffer(); + +#define PDUMP_UNLOCK_MSG() \ + PDumpOSUnlockMessageBuffer(); + + /*! + * @name PDumpOSLock + * @brief Lock the PDump streams + * @return error none + */ + IMG_VOID PDumpOSLock(IMG_UINT32 ui32Line); + + /*! + * @name PDumpOSUnlock + * @brief Lock the PDump streams + * @return error none + */ + IMG_VOID PDumpOSUnlock(IMG_UINT32 ui32Line); + + /*! + * @name PDumpOSLockMessageBuffer + * @brief Lock the PDump message buffer + * @return error none + */ + IMG_VOID PDumpOSLockMessageBuffer(IMG_VOID); + + /*! + * @name PDumpOSUnlockMessageBuffer + * @brief Lock the PDump message buffer + * @return error none + */ + IMG_VOID PDumpOSUnlockMessageBuffer(IMG_VOID); + +#endif /* __QNXNTO__ */ + /*! * @name PDumpOSGetScriptString * @brief Get the "script" buffer @@ -147,8 +197,6 @@ extern "C" { */ PVRSRV_ERROR PDumpOSGetFilenameString(IMG_CHAR **ppszFile, IMG_UINT32 *pui32MaxLen); -#endif /* WIN32 or QNX */ - /* * Define macro for processing variable args list in OS-independent @@ -305,13 +353,13 @@ IMG_VOID PDumpOSCPUVAddrToDevPAddr(PVRSRV_DEVICE_TYPE eDeviceType, * @param hOSMemHandle mem allocation handle (used if kernel virtual mem space is limited, e.g. linux) * @param ui32Offset offset within mem allocation block * @param pui8LinAddr CPU linear addr - * @param ui32DataPageMask mask for data page (= data page size -1) + * @param uiDataPageMask mask for data page (= data page size -1) * @return pui32PageOffset CPU page offset (same as device page offset if page sizes equal) */ IMG_VOID PDumpOSCPUVAddrToPhysPages(IMG_HANDLE hOSMemHandle, IMG_UINT32 ui32Offset, IMG_PUINT8 pui8LinAddr, - IMG_UINT32 ui32DataPageMask, + IMG_UINTPTR_T uiDataPageMask, IMG_UINT32 *pui32PageOffset); /*! diff --git a/drivers/gpu/pvr/services4/srvkm/include/perfkm.h b/drivers/gpu/pvr/services4/srvkm/include/perfkm.h index 458a29b2fab..458a29b2fab 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/perfkm.h +++ b/drivers/gpu/pvr/services4/srvkm/include/perfkm.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/perproc.h b/drivers/gpu/pvr/services4/srvkm/include/perproc.h index d60361320f1..124f2f23342 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/perproc.h +++ b/drivers/gpu/pvr/services4/srvkm/include/perproc.h @@ -56,21 +56,12 @@ typedef struct _PVRSRV_PER_PROCESS_DATA_ IMG_UINT32 ui32PID; IMG_HANDLE hBlockAlloc; PRESMAN_CONTEXT hResManContext; -#if defined (SUPPORT_SID_INTERFACE) - IMG_SID hPerProcData; -#else IMG_HANDLE hPerProcData; -#endif PVRSRV_HANDLE_BASE *psHandleBase; -#if defined (SUPPORT_SID_INTERFACE) - /* Handles are being allocated in batches */ - IMG_BOOL bHandlesBatched; -#else #if defined (PVR_SECURE_HANDLES) /* Handles are being allocated in batches */ IMG_BOOL bHandlesBatched; #endif /* PVR_SECURE_HANDLES */ -#endif /* SUPPORT_SID_INTERFACE */ IMG_UINT32 ui32RefCount; /* True if the process is the initialisation server. */ diff --git a/drivers/gpu/pvr/services4/srvkm/include/power.h b/drivers/gpu/pvr/services4/srvkm/include/power.h index 0abaf7554e1..0abaf7554e1 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/power.h +++ b/drivers/gpu/pvr/services4/srvkm/include/power.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/queue.h b/drivers/gpu/pvr/services4/srvkm/include/queue.h index 58f80936e8d..6bc82ed5f6e 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/queue.h +++ b/drivers/gpu/pvr/services4/srvkm/include/queue.h @@ -43,6 +43,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef QUEUE_H #define QUEUE_H +#if defined(SUPPORT_PVRSRV_DEVICE_CLASS) #if defined(__cplusplus) extern "C" { @@ -51,9 +52,9 @@ extern "C" { /*! * Macro to Read Offset in given command queue */ -#define UPDATE_QUEUE_ROFF(psQueue, ui32Size) \ - (psQueue)->ui32ReadOffset = ((psQueue)->ui32ReadOffset + (ui32Size)) \ - & ((psQueue)->ui32QueueSize - 1); +#define UPDATE_QUEUE_ROFF(psQueue, uSize) \ + (psQueue)->uReadOffset = ((psQueue)->uReadOffset + (uSize)) \ + & ((psQueue)->uQueueSize - 1); /*! generic cmd complete structure. @@ -75,6 +76,11 @@ extern "C" { IMG_UINT32 ui32AllocSize; /*!< allocated size*/ PFN_QUEUE_COMMAND_COMPLETE pfnCommandComplete; /*!< Command complete callback */ IMG_HANDLE hCallbackData; /*!< Command complete callback data */ + +#if defined(PVR_ANDROID_NATIVE_WINDOW_HAS_SYNC) + IMG_VOID *pvCleanupFence; /*!< Sync fence to 'put' after timeline inc() */ + IMG_VOID *pvTimeline; /*!< Android sync timeline to inc() */ +#endif }COMMAND_COMPLETE_DATA, *PCOMMAND_COMPLETE_DATA; #if !defined(USE_CODE) @@ -92,7 +98,7 @@ void ProcSeqShowQueue(struct seq_file *sfile,void* el); IMG_IMPORT -PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateCommandQueueKM(IMG_SIZE_T ui32QueueSize, +PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateCommandQueueKM(IMG_SIZE_T uQueueSize, PVRSRV_QUEUE_INFO **ppsQueueInfo); IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyCommandQueueKM(PVRSRV_QUEUE_INFO *psQueueInfo); @@ -108,11 +114,12 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue, PVRSRV_KERNEL_SYNC_INFO *apsSrcSync[], IMG_SIZE_T ui32DataByteSize, PFN_QUEUE_COMMAND_COMPLETE pfnCommandComplete, - IMG_HANDLE hCallbackData); + IMG_HANDLE hCallbackData, + IMG_HANDLE *phFence); IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV PVRSRVGetQueueSpaceKM(PVRSRV_QUEUE_INFO *psQueue, - IMG_SIZE_T ui32ParamSize, + IMG_SIZE_T uParamSize, IMG_VOID **ppvSpace); IMG_IMPORT @@ -138,6 +145,8 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex, } #endif +#endif /* defined(SUPPORT_PVRSRV_DEVICE_CLASS) */ + #endif /* QUEUE_H */ /****************************************************************************** diff --git a/drivers/gpu/pvr/services4/srvkm/include/ra.h b/drivers/gpu/pvr/services4/srvkm/include/ra.h index b84a8e54fbe..aaeb345beb0 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/ra.h +++ b/drivers/gpu/pvr/services4/srvkm/include/ra.h @@ -87,9 +87,6 @@ struct _RA_STATISTICS_ /** total number of spans deallocated by the callback mechanism */ IMG_SIZE_T uExportCount; - - IMG_SIZE_T uFailedAllocCount; - }; typedef struct _RA_STATISTICS_ RA_STATISTICS; diff --git a/drivers/gpu/pvr/services4/srvkm/include/refcount.h b/drivers/gpu/pvr/services4/srvkm/include/refcount.h index 0e3479df119..a2efd6ceb11 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/refcount.h +++ b/drivers/gpu/pvr/services4/srvkm/include/refcount.h @@ -43,6 +43,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define __REFCOUNT_H__ #include "pvr_bridge_km.h" +#if defined(SUPPORT_ION) +#include "ion_sync.h" +#endif /* defined(SUPPORT_ION) */ #if defined(PVRSRV_REFCOUNT_DEBUG) @@ -111,6 +114,23 @@ void PVRSRVOffsetStructIncMapped2(const IMG_CHAR *pszFile, IMG_INT iLine, void PVRSRVOffsetStructDecMapped2(const IMG_CHAR *pszFile, IMG_INT iLine, PKV_OFFSET_STRUCT psOffsetStruct); +#if defined(SUPPORT_ION) +#define PVRSRVIonBufferSyncInfoIncRef(x...) \ + PVRSRVIonBufferSyncInfoIncRef2(__FILE__, __LINE__, x) +#define PVRSRVIonBufferSyncInfoDecRef(x...) \ + PVRSRVIonBufferSyncInfoDecRef2(__FILE__, __LINE__, x) + +PVRSRV_ERROR PVRSRVIonBufferSyncInfoIncRef2(const IMG_CHAR *pszFile, IMG_INT iLine, + IMG_HANDLE hUnique, + IMG_HANDLE hDevCookie, + IMG_HANDLE hDevMemContext, + PVRSRV_ION_SYNC_INFO **ppsIonSyncInfo, + PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo); +void PVRSRVIonBufferSyncInfoDecRef2(const IMG_CHAR *pszFile, IMG_INT iLine, + PVRSRV_ION_SYNC_INFO *psIonSyncInfo, + PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo); +#endif /* defined (SUPPORT_ION) */ + #endif /* defined(__linux__) */ #else /* defined(PVRSRV_REFCOUNT_DEBUG) */ @@ -196,6 +216,29 @@ static INLINE void PVRSRVOffsetStructDecMapped(PKV_OFFSET_STRUCT psOffsetStruct) psOffsetStruct->ui32Mapped--; } +#if defined(SUPPORT_ION) +static INLINE PVRSRV_ERROR PVRSRVIonBufferSyncInfoIncRef(IMG_HANDLE hUnique, + IMG_HANDLE hDevCookie, + IMG_HANDLE hDevMemContext, + PVRSRV_ION_SYNC_INFO **ppsIonSyncInfo, + PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo) +{ + PVR_UNREFERENCED_PARAMETER(psKernelMemInfo); + + return PVRSRVIonBufferSyncAcquire(hUnique, + hDevCookie, + hDevMemContext, + ppsIonSyncInfo); +} + +static INLINE void PVRSRVIonBufferSyncInfoDecRef(PVRSRV_ION_SYNC_INFO *psIonSyncInfo, + PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo) +{ + PVR_UNREFERENCED_PARAMETER(psKernelMemInfo); + PVRSRVIonBufferSyncRelease(psIonSyncInfo); +} +#endif /* defined (SUPPORT_ION) */ + #endif /* defined(__linux__) */ #endif /* defined(PVRSRV_REFCOUNT_DEBUG) */ diff --git a/drivers/gpu/pvr/services4/srvkm/include/resman.h b/drivers/gpu/pvr/services4/srvkm/include/resman.h index 92659d9843f..92659d9843f 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/resman.h +++ b/drivers/gpu/pvr/services4/srvkm/include/resman.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/services_headers.h b/drivers/gpu/pvr/services4/srvkm/include/services_headers.h index d09b8a882c0..d09b8a882c0 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/services_headers.h +++ b/drivers/gpu/pvr/services4/srvkm/include/services_headers.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/srvkm.h b/drivers/gpu/pvr/services4/srvkm/include/srvkm.h index 5d396f89e50..45ac3b1aad8 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/srvkm.h +++ b/drivers/gpu/pvr/services4/srvkm/include/srvkm.h @@ -42,6 +42,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef SRVKM_H #define SRVKM_H +#include "servicesint.h" #if defined(__cplusplus) extern "C" { @@ -63,12 +64,155 @@ extern "C" { IMG_IMPORT IMG_VOID PVRSRVScheduleDevicesKM(IMG_VOID); +#if defined(SUPPORT_PVRSRV_DEVICE_CLASS) IMG_VOID IMG_CALLCONV PVRSRVSetDCState(IMG_UINT32 ui32State); +#endif PVRSRV_ERROR IMG_CALLCONV PVRSRVSaveRestoreLiveSegments(IMG_HANDLE hArena, IMG_PBYTE pbyBuffer, IMG_SIZE_T *puiBufSize, IMG_BOOL bSave); IMG_VOID PVRSRVScheduleDeviceCallbacks(IMG_VOID); + IMG_IMPORT IMG_VOID IMG_CALLCONV PVRSRVDumpSyncs(IMG_BOOL bActiveOnly); + +#define SYNC_OP_CLASS_MASK 0x0000ffffUL +#define SYNC_OP_CLASS_SHIFT 0 +#define SYNC_OP_CLASS_MODOBJ (1<<0) +#define SYNC_OP_CLASS_QUEUE (1<<1) +#define SYNC_OP_CLASS_KICKTA (1<<2) +#define SYNC_OP_CLASS_TQ_3D (1<<3) +#define SYNC_OP_CLASS_TQ_2D (1<<4) + +#define SYNC_OP_TYPE_MASK 0x00f0000UL +#define SYNC_OP_TYPE_SHIFT 16 +#define SYNC_OP_TYPE_READOP (1<<0) +#define SYNC_OP_TYPE_WRITEOP (1<<1) +#define SYNC_OP_TYPE_READOP2 (1<<2) + +#define SYNC_OP_HAS_DATA 0x80000000UL +#define SYNC_OP_TAKE 0x40000000UL +#define SYNC_OP_ROLLBACK 0x20000000UL + +#ifdef INLINE_IS_PRAGMA +#pragma inline(SyncTakeWriteOp) +#endif +static INLINE +IMG_UINT32 SyncTakeWriteOp(PVRSRV_KERNEL_SYNC_INFO *psKernelSync, IMG_UINT32 ui32OpType) +{ +#if defined(SUPPORT_PER_SYNC_DEBUG) + IMG_UINT32 ui32Index = psKernelSync->ui32HistoryIndex; + + /* Record a history of all the classes of operation taken on this sync */ + psKernelSync->ui32OperationMask |= (ui32OpType & SYNC_OP_CLASS_MASK) >> SYNC_OP_CLASS_SHIFT; + + /* Add this operation to the history buffer */ + psKernelSync->aui32OpInfo[ui32Index] = SYNC_OP_HAS_DATA | ui32OpType | (SYNC_OP_TYPE_WRITEOP << SYNC_OP_TYPE_SHIFT) | SYNC_OP_TAKE; + psKernelSync->aui32ReadOpSample[ui32Index] = psKernelSync->psSyncData->ui32ReadOpsPending; + psKernelSync->aui32WriteOpSample[ui32Index] = psKernelSync->psSyncData->ui32WriteOpsPending; + psKernelSync->aui32ReadOp2Sample[ui32Index] = psKernelSync->psSyncData->ui32ReadOps2Pending; + psKernelSync->ui32HistoryIndex++; + psKernelSync->ui32HistoryIndex = psKernelSync->ui32HistoryIndex % PER_SYNC_HISTORY; +#endif + PVR_UNREFERENCED_PARAMETER(ui32OpType); + return psKernelSync->psSyncData->ui32WriteOpsPending++; +} + +#ifdef INLINE_IS_PRAGMA +#pragma inline(SyncTakeReadOp) +#endif +static INLINE +IMG_UINT32 SyncTakeReadOp(PVRSRV_KERNEL_SYNC_INFO *psKernelSync, IMG_UINT32 ui32OpType) +{ +#if defined(SUPPORT_PER_SYNC_DEBUG) + IMG_UINT32 ui32Index = psKernelSync->ui32HistoryIndex; + + /* Record a history of all the classes of operation taken on this sync */ + psKernelSync->ui32OperationMask |= (ui32OpType & SYNC_OP_CLASS_MASK) >> SYNC_OP_CLASS_SHIFT; + + /* Add this operation to the history buffer */ + psKernelSync->aui32OpInfo[ui32Index] = SYNC_OP_HAS_DATA | ui32OpType | (SYNC_OP_TYPE_READOP << SYNC_OP_TYPE_SHIFT) | SYNC_OP_TAKE; + psKernelSync->aui32ReadOpSample[ui32Index] = psKernelSync->psSyncData->ui32ReadOpsPending; + psKernelSync->aui32WriteOpSample[ui32Index] = psKernelSync->psSyncData->ui32WriteOpsPending; + psKernelSync->aui32ReadOp2Sample[ui32Index] = psKernelSync->psSyncData->ui32ReadOps2Pending; + psKernelSync->ui32HistoryIndex++; + psKernelSync->ui32HistoryIndex = psKernelSync->ui32HistoryIndex % PER_SYNC_HISTORY; +#endif + PVR_UNREFERENCED_PARAMETER(ui32OpType); + return psKernelSync->psSyncData->ui32ReadOpsPending++; +} + +#ifdef INLINE_IS_PRAGMA +#pragma inline(SyncTakeReadOp2) +#endif +static INLINE +IMG_UINT32 SyncTakeReadOp2(PVRSRV_KERNEL_SYNC_INFO *psKernelSync, IMG_UINT32 ui32OpType) +{ +#if defined(SUPPORT_PER_SYNC_DEBUG) + IMG_UINT32 ui32Index = psKernelSync->ui32HistoryIndex; + + /* Record a history of all the classes of operation taken on this sync */ + psKernelSync->ui32OperationMask |= (ui32OpType & SYNC_OP_CLASS_MASK) >> SYNC_OP_CLASS_SHIFT; + + /* Add this operation to the history buffer */ + psKernelSync->aui32OpInfo[ui32Index] = SYNC_OP_HAS_DATA | ui32OpType | (SYNC_OP_TYPE_READOP2 << SYNC_OP_TYPE_SHIFT) | SYNC_OP_TAKE; + psKernelSync->aui32ReadOpSample[ui32Index] = psKernelSync->psSyncData->ui32ReadOpsPending; + psKernelSync->aui32WriteOpSample[ui32Index] = psKernelSync->psSyncData->ui32WriteOpsPending; + psKernelSync->aui32ReadOp2Sample[ui32Index] = psKernelSync->psSyncData->ui32ReadOps2Pending; + psKernelSync->ui32HistoryIndex++; + psKernelSync->ui32HistoryIndex = psKernelSync->ui32HistoryIndex % PER_SYNC_HISTORY; +#endif + PVR_UNREFERENCED_PARAMETER(ui32OpType); + return psKernelSync->psSyncData->ui32ReadOps2Pending++; +} + +#ifdef INLINE_IS_PRAGMA +#pragma inline(SyncRollBackWriteOp) +#endif +static INLINE +IMG_UINT32 SyncRollBackWriteOp(PVRSRV_KERNEL_SYNC_INFO *psKernelSync, IMG_UINT32 ui32OpType) +{ +#if defined(SUPPORT_PER_SYNC_DEBUG) + IMG_UINT32 ui32Index = psKernelSync->ui32HistoryIndex; + + /* Record a history of all the classes of operation taken on this sync */ + psKernelSync->ui32OperationMask |= (ui32OpType & SYNC_OP_CLASS_MASK) >> SYNC_OP_CLASS_SHIFT; + + /* Add this operation to the history buffer */ + psKernelSync->aui32OpInfo[ui32Index] = SYNC_OP_HAS_DATA | ui32OpType | (SYNC_OP_TYPE_WRITEOP << SYNC_OP_TYPE_SHIFT) | SYNC_OP_ROLLBACK; + psKernelSync->aui32ReadOpSample[ui32Index] = psKernelSync->psSyncData->ui32ReadOpsPending; + psKernelSync->aui32WriteOpSample[ui32Index] = psKernelSync->psSyncData->ui32WriteOpsPending; + psKernelSync->aui32ReadOp2Sample[ui32Index] = psKernelSync->psSyncData->ui32ReadOps2Pending; + psKernelSync->ui32HistoryIndex++; + psKernelSync->ui32HistoryIndex = psKernelSync->ui32HistoryIndex % PER_SYNC_HISTORY; +#endif + PVR_UNREFERENCED_PARAMETER(ui32OpType); + return psKernelSync->psSyncData->ui32WriteOpsPending--; +} + +#ifdef INLINE_IS_PRAGMA +#pragma inline(SyncRollBackReadOp) +#endif +static INLINE +IMG_UINT32 SyncRollBackReadOp(PVRSRV_KERNEL_SYNC_INFO *psKernelSync, IMG_UINT32 ui32OpType) +{ +#if defined(SUPPORT_PER_SYNC_DEBUG) + IMG_UINT32 ui32Index = psKernelSync->ui32HistoryIndex; + + /* Record a history of all the classes of operation taken on this sync */ + psKernelSync->ui32OperationMask |= (ui32OpType & SYNC_OP_CLASS_MASK) >> SYNC_OP_CLASS_SHIFT; + + /* Add this operation to the history buffer */ + psKernelSync->aui32OpInfo[ui32Index] = SYNC_OP_HAS_DATA | ui32OpType | (SYNC_OP_TYPE_READOP << SYNC_OP_TYPE_SHIFT) | SYNC_OP_ROLLBACK; + psKernelSync->aui32ReadOpSample[ui32Index] = psKernelSync->psSyncData->ui32ReadOpsPending; + psKernelSync->aui32WriteOpSample[ui32Index] = psKernelSync->psSyncData->ui32WriteOpsPending; + psKernelSync->aui32ReadOp2Sample[ui32Index] = psKernelSync->psSyncData->ui32ReadOps2Pending; + psKernelSync->ui32HistoryIndex++; + psKernelSync->ui32HistoryIndex = psKernelSync->ui32HistoryIndex % PER_SYNC_HISTORY; +#endif + PVR_UNREFERENCED_PARAMETER(ui32OpType); + return psKernelSync->psSyncData->ui32ReadOpsPending--; +} + + #if defined (__cplusplus) } diff --git a/drivers/gpu/pvr/services4/srvkm/include/ttrace.h b/drivers/gpu/pvr/services4/srvkm/include/ttrace.h index cb70ff8e2a2..cb70ff8e2a2 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/ttrace.h +++ b/drivers/gpu/pvr/services4/srvkm/include/ttrace.h diff --git a/drivers/gpu/pvr/services4/srvkm/include/ttrace_common.h b/drivers/gpu/pvr/services4/srvkm/include/ttrace_common.h index b14f256fc06..e149c20f0c3 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/ttrace_common.h +++ b/drivers/gpu/pvr/services4/srvkm/include/ttrace_common.h @@ -121,7 +121,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define READ_HEADER(n,m) \ ((m & (PVRSRV_TRACE_##n##_MASK << PVRSRV_TRACE_##n##_SHIFT)) >> PVRSRV_TRACE_##n##_SHIFT) + +#if defined(TTRACE_LARGE_BUFFER) +#define TIME_TRACE_BUFFER_SIZE 8192 +#else #define TIME_TRACE_BUFFER_SIZE 4096 +#endif /* Type defines for trace items */ #define PVRSRV_TRACE_TYPE_UI8 0 diff --git a/drivers/gpu/pvr/services4/srvkm/include/ttrace_tokens.h b/drivers/gpu/pvr/services4/srvkm/include/ttrace_tokens.h index 24bc4843ec2..5f898495cdf 100644..100755 --- a/drivers/gpu/pvr/services4/srvkm/include/ttrace_tokens.h +++ b/drivers/gpu/pvr/services4/srvkm/include/ttrace_tokens.h @@ -52,26 +52,29 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define PVRSRV_TRACE_GROUP_QUEUE 2 #define PVRSRV_TRACE_GROUP_POWER 3 #define PVRSRV_TRACE_GROUP_MKSYNC 4 +#define PVRSRV_TRACE_GROUP_MODOBJ 5 #define PVRSRV_TRACE_GROUP_PADDING 255 /* Trace classes */ #define PVRSRV_TRACE_CLASS_FUNCTION_ENTER 0 #define PVRSRV_TRACE_CLASS_FUNCTION_EXIT 1 -#define PVRSRV_TRACE_CLASS_SYNC 2 -#define PVRSRV_TRACE_CLASS_CCB 3 +#define PVRSRV_TRACE_CLASS_SYNC 2 +#define PVRSRV_TRACE_CLASS_CCB 3 #define PVRSRV_TRACE_CLASS_CMD_START 4 -#define PVRSRV_TRACE_CLASS_CMD_END 5 +#define PVRSRV_TRACE_CLASS_CMD_END 5 #define PVRSRV_TRACE_CLASS_CMD_COMP_START 6 #define PVRSRV_TRACE_CLASS_CMD_COMP_END 7 #define PVRSRV_TRACE_CLASS_FLAGS 8 - -#define PVRSRV_TRACE_CLASS_NONE 255 +#define PVRSRV_TRACE_CLASS_DEVVADDR 9 +#define PVRSRV_TRACE_CLASS_FRAMENUM 10 + +#define PVRSRV_TRACE_CLASS_NONE 255 /* Operation about to happen on the sync object */ #define PVRSRV_SYNCOP_SAMPLE 0 #define PVRSRV_SYNCOP_COMPLETE 1 -#define PVRSRV_SYNCOP_DUMP 2 +#define PVRSRV_SYNCOP_DUMP 2 /* * Trace tokens @@ -80,15 +83,19 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Kick group tokens */ -#define KICK_TOKEN_DOKICK 0 +#define KICK_TOKEN_DOKICK 0 #define KICK_TOKEN_CCB_OFFSET 1 #define KICK_TOKEN_TA3D_SYNC 2 -#define KICK_TOKEN_TA_SYNC 3 -#define KICK_TOKEN_3D_SYNC 4 -#define KICK_TOKEN_SRC_SYNC 5 -#define KICK_TOKEN_DST_SYNC 6 -#define KICK_TOKEN_FIRST_KICK 7 -#define KICK_TOKEN_LAST_KICK 8 +#define KICK_TOKEN_TA_SYNC 3 +#define KICK_TOKEN_3D_SYNC 4 +#define KICK_TOKEN_SRC_SYNC 5 +#define KICK_TOKEN_DST_SYNC 6 +#define KICK_TOKEN_FIRST_KICK 7 +#define KICK_TOKEN_LAST_KICK 8 +#define KICK_TOKEN_HWRTDATASET 9 +#define KICK_TOKEN_HWRTDATA 10 +#define KICK_TOKEN_FRAMENUM 11 +#define KICK_TOKEN_RENDERCONTEXT 12 /* Transfer Queue group tokens */ #define TRANSFER_TOKEN_SUBMIT 0 @@ -99,21 +106,30 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define TRANSFER_TOKEN_CCB_OFFSET 5 /* Queue group tokens */ -#define QUEUE_TOKEN_GET_SPACE 0 -#define QUEUE_TOKEN_INSERTKM 1 -#define QUEUE_TOKEN_SUBMITKM 2 -#define QUEUE_TOKEN_PROCESS_COMMAND 3 -#define QUEUE_TOKEN_PROCESS_QUEUES 4 +#define QUEUE_TOKEN_GET_SPACE 0 +#define QUEUE_TOKEN_INSERTKM 1 +#define QUEUE_TOKEN_SUBMITKM 2 +#define QUEUE_TOKEN_PROCESS_COMMAND 3 +#define QUEUE_TOKEN_PROCESS_QUEUES 4 #define QUEUE_TOKEN_COMMAND_COMPLETE 5 -#define QUEUE_TOKEN_UPDATE_DST 6 -#define QUEUE_TOKEN_UPDATE_SRC 7 -#define QUEUE_TOKEN_SRC_SYNC 8 -#define QUEUE_TOKEN_DST_SYNC 9 -#define QUEUE_TOKEN_COMMAND_TYPE 10 +#define QUEUE_TOKEN_UPDATE_DST 6 +#define QUEUE_TOKEN_UPDATE_SRC 7 +#define QUEUE_TOKEN_SRC_SYNC 8 +#define QUEUE_TOKEN_DST_SYNC 9 +#define QUEUE_TOKEN_COMMAND_TYPE 10 /* uKernel Sync tokens */ #define MKSYNC_TOKEN_KERNEL_CCB_OFFSET 0 -#define MKSYNC_TOKEN_CORE_CLK 1 -#define MKSYNC_TOKEN_UKERNEL_CLK 2 +#define MKSYNC_TOKEN_CORE_CLK 1 +#define MKSYNC_TOKEN_UKERNEL_CLK 2 + +/* ModObj tokens */ +#define MODOBJ_TOKEN_MODIFY_PENDING 0 +#define MODOBJ_TOKEN_COMPLETE_PENDING 1 +#define MODOBJ_TOKEN_READ_SYNC 2 +#define MODOBJ_TOKEN_WRITE_SYNC 3 +#define MODOBJ_TOKEN_READ_WRITE_SYNC 4 +#define MODOBJ_TOKEN_SYNC_UPDATE 5 +#define MODOBJ_TOKEN_READ2_SYNC 6 #endif /* __TTRACE_TOKENS_H__ */ |