diff options
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__ */  |