aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/pvr/mmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/pvr/mmap.c')
-rw-r--r--drivers/gpu/pvr/mmap.c48
1 files changed, 32 insertions, 16 deletions
diff --git a/drivers/gpu/pvr/mmap.c b/drivers/gpu/pvr/mmap.c
index 66cef26e522..c9a30f1c8d4 100644
--- a/drivers/gpu/pvr/mmap.c
+++ b/drivers/gpu/pvr/mmap.c
@@ -67,7 +67,7 @@
67#include "pvr_drm.h" 67#include "pvr_drm.h"
68#endif 68#endif
69 69
70#if !defined(PVR_SECURE_HANDLES) 70#if !defined(PVR_SECURE_HANDLES) && !defined (SUPPORT_SID_INTERFACE)
71#error "The mmap code requires PVR_SECURE_HANDLES" 71#error "The mmap code requires PVR_SECURE_HANDLES"
72#endif 72#endif
73 73
@@ -146,7 +146,11 @@ MMapOffsetToHandle(IMG_UINT32 pfn)
146#endif 146#endif
147 147
148static inline IMG_UINT32 148static inline IMG_UINT32
149#if defined (SUPPORT_SID_INTERFACE)
150HandleToMMapOffset(IMG_SID hHandle)
151#else
149HandleToMMapOffset(IMG_HANDLE hHandle) 152HandleToMMapOffset(IMG_HANDLE hHandle)
153#endif
150{ 154{
151 IMG_UINT32 ulHandle = (IMG_UINT32)hHandle; 155 IMG_UINT32 ulHandle = (IMG_UINT32)hHandle;
152 156
@@ -270,11 +274,15 @@ DetermineUsersSizeAndByteOffset(LinuxMemArea *psLinuxMemArea,
270 274
271PVRSRV_ERROR 275PVRSRV_ERROR
272PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, 276PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc,
273 IMG_HANDLE hMHandle, 277#if defined (SUPPORT_SID_INTERFACE)
274 IMG_UINT32 *pui32MMapOffset, 278 IMG_SID hMHandle,
275 IMG_UINT32 *pui32ByteOffset, 279#else
276 IMG_UINT32 *pui32RealByteSize, 280 IMG_HANDLE hMHandle,
277 IMG_UINT32 *pui32UserVAddr) 281#endif
282 IMG_UINT32 *pui32MMapOffset,
283 IMG_UINT32 *pui32ByteOffset,
284 IMG_UINT32 *pui32RealByteSize,
285 IMG_UINT32 *pui32UserVAddr)
278{ 286{
279 LinuxMemArea *psLinuxMemArea; 287 LinuxMemArea *psLinuxMemArea;
280 PKV_OFFSET_STRUCT psOffsetStruct; 288 PKV_OFFSET_STRUCT psOffsetStruct;
@@ -288,9 +296,13 @@ PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc,
288 eError = PVRSRVLookupOSMemHandle(psPerProc->psHandleBase, &hOSMemHandle, hMHandle); 296 eError = PVRSRVLookupOSMemHandle(psPerProc->psHandleBase, &hOSMemHandle, hMHandle);
289 if (eError != PVRSRV_OK) 297 if (eError != PVRSRV_OK)
290 { 298 {
291 PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %p failed", __FUNCTION__, hMHandle)); 299#if defined (SUPPORT_SID_INTERFACE)
300 PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %x failed", __FUNCTION__, hMHandle));
301#else
302 PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %p failed", __FUNCTION__, hMHandle));
303#endif
292 304
293 goto exit_unlock; 305 goto exit_unlock;
294 } 306 }
295 307
296 psLinuxMemArea = (LinuxMemArea *)hOSMemHandle; 308 psLinuxMemArea = (LinuxMemArea *)hOSMemHandle;
@@ -364,7 +376,11 @@ exit_unlock:
364 376
365PVRSRV_ERROR 377PVRSRV_ERROR
366PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, 378PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc,
379#if defined (SUPPORT_SID_INTERFACE)
380 IMG_SID hMHandle,
381#else
367 IMG_HANDLE hMHandle, 382 IMG_HANDLE hMHandle,
383#endif
368 IMG_BOOL *pbMUnmap, 384 IMG_BOOL *pbMUnmap,
369 IMG_UINT32 *pui32RealByteSize, 385 IMG_UINT32 *pui32RealByteSize,
370 IMG_UINT32 *pui32UserVAddr) 386 IMG_UINT32 *pui32UserVAddr)
@@ -382,7 +398,11 @@ PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc,
382 eError = PVRSRVLookupOSMemHandle(psPerProc->psHandleBase, &hOSMemHandle, hMHandle); 398 eError = PVRSRVLookupOSMemHandle(psPerProc->psHandleBase, &hOSMemHandle, hMHandle);
383 if (eError != PVRSRV_OK) 399 if (eError != PVRSRV_OK)
384 { 400 {
401#if defined (SUPPORT_SID_INTERFACE)
402 PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %x failed", __FUNCTION__, hMHandle));
403#else
385 PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %p failed", __FUNCTION__, hMHandle)); 404 PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %p failed", __FUNCTION__, hMHandle));
405#endif
386 406
387 goto exit_unlock; 407 goto exit_unlock;
388 } 408 }
@@ -414,7 +434,11 @@ PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc,
414 } 434 }
415 435
416 436
437#if defined (SUPPORT_SID_INTERFACE)
438 PVR_DPF((PVR_DBG_ERROR, "%s: Mapping data not found for handle %x (memory area %p)", __FUNCTION__, hMHandle, psLinuxMemArea));
439#else
417 PVR_DPF((PVR_DBG_ERROR, "%s: Mapping data not found for handle %p (memory area %p)", __FUNCTION__, hMHandle, psLinuxMemArea)); 440 PVR_DPF((PVR_DBG_ERROR, "%s: Mapping data not found for handle %p (memory area %p)", __FUNCTION__, hMHandle, psLinuxMemArea));
441#endif
418 442
419 eError = PVRSRV_ERROR_MAPPING_NOT_FOUND; 443 eError = PVRSRV_ERROR_MAPPING_NOT_FOUND;
420 444
@@ -590,10 +614,6 @@ MMapVOpenNoLock(struct vm_area_struct* ps_vma)
590 psOffsetStruct->ui32MMapOffset, 614 psOffsetStruct->ui32MMapOffset,
591 psOffsetStruct->ui32Mapped)); 615 psOffsetStruct->ui32Mapped));
592#endif 616#endif
593
594#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
595 MOD_INC_USE_COUNT;
596#endif
597} 617}
598 618
599 619
@@ -637,10 +657,6 @@ MMapVCloseNoLock(struct vm_area_struct* ps_vma)
637 } 657 }
638 658
639 ps_vma->vm_private_data = NULL; 659 ps_vma->vm_private_data = NULL;
640
641#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
642 MOD_DEC_USE_COUNT;
643#endif
644} 660}
645 661
646static void 662static void