[PATCH] drm/prime: Fix mmap fake offset for drm_gem_object_funcs.mmap

Gerd Hoffmann kraxel at redhat.com
Fri Oct 25 05:25:03 UTC 2019

On Thu, Oct 24, 2019 at 02:32:14PM +0200, Daniel Vetter wrote:
> On Thu, Oct 24, 2019 at 11:02:40AM +0200, Gerd Hoffmann wrote:
> > On Wed, Oct 23, 2019 at 05:22:26PM -0500, Rob Herring wrote:
> > > Commit c40069cb7bd6 ("drm: add mmap() to drm_gem_object_funcs")
> > > introduced a GEM object mmap() hook which is expected to subtract the
> > > fake offset from vm_pgoff.
> > 
> > Long-term it is probably a good idea to just remove the fake offset
> > handling from drivers.  But that'll only work once all drivers switched
> > away from custom fops->mmap handlers so we can handle the offset -> obj
> > lookup in the drm core for everybody.
> > 
> > So let's go this way for now.
> > 
> > Acked-by: Gerd Hoffmann <kraxel at redhat.com>
> Uh this sounds like doubling down on rather horrible semantics. Can we at
> least stop the mess instead of baking it in for real? The hook is very
> very new after all. I.e.
> - Document that obj->funcs->mmap will have 0 offset in the kerneldoc.
> - Remove the subtracting from the shmem helper
> - In ttm_bo_mmap_obj re-add the offset with a huge FIXME comment.

Ah, right, we can also tweak the drivers which need it instead of doing
it for everybody in drm_gem_mmap_obj().

> Also I guess Gerd didn't really test this prime mmap support?

I did, but I think the test[1] is too simple.  It'll only try to mmap()
the dma-buf, but doesn't touch the pages, so it doesn't see the shmem
fault callback throwing SIGBUS.


[1] https://git.kraxel.org/cgit/drminfo/tree/prime.c

More information about the dri-devel mailing list