drm: pass dev to drm_vm_{open,close}_locked()
authorRob Clark <rob@ti.com>
Tue, 1 May 2012 16:04:51 +0000 (11:04 -0500)
committerDave Airlie <airlied@redhat.com>
Fri, 11 May 2012 16:37:46 +0000 (17:37 +0100)
commitb06d66be3b0b198ee30bd9f779874ae7115570a0
treea50e0dcb547b45f2ca3c6ff0a298bfe4b73b298f
parent62363a486019b57be1b286f5235bc0d637aa1dda
drm: pass dev to drm_vm_{open,close}_locked()

Previously these functions would assume that vma->vm_file was the
drm_file.  Although if in some cases if the drm driver needs to use
something else for the backing file (such as the tmpfs filp) then this
assumption is no longer true.  But vma->vm_private_data is still the
GEM object.

With this change, now the drm_device comes from the GEM object rather
than the drm_file so the driver is more free to play with vma->vm_file.

The scenario where this comes up is for mmap'ing of cached dmabuf's
for non-coherent systems, where the driver needs to use fault handling
and PTE shootdown to simulate coherency.  We can't use the vma->vm_file
of the dmabuf, which is using anon_inode's address_space.  The most
straightforward thing to do is to use the GEM object's obj->filp for
vma->vm_file in all cases, for which we need this patch.

Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_gem.c
drivers/gpu/drm/drm_vm.c
include/drm/drmP.h