diff options
Diffstat (limited to 'drivers/gpu/pvr/mmap.c')
-rw-r--r-- | drivers/gpu/pvr/mmap.c | 48 |
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 | ||
148 | static inline IMG_UINT32 | 148 | static inline IMG_UINT32 |
149 | #if defined (SUPPORT_SID_INTERFACE) | ||
150 | HandleToMMapOffset(IMG_SID hHandle) | ||
151 | #else | ||
149 | HandleToMMapOffset(IMG_HANDLE hHandle) | 152 | HandleToMMapOffset(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 | ||
271 | PVRSRV_ERROR | 275 | PVRSRV_ERROR |
272 | PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | 276 | PVRMMapOSMemHandleToMMapData(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 | ||
365 | PVRSRV_ERROR | 377 | PVRSRV_ERROR |
366 | PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | 378 | PVRMMapReleaseMMapData(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 | ||
646 | static void | 662 | static void |