Messages in this thread | | | Date | Mon, 13 May 2019 16:39:21 +0200 | From | Daniel Vetter <> | Subject | Re: [PATCH] drm/panfrost: Use drm_gem_dump_map_offset() |
| |
On Mon, May 13, 2019 at 03:32:44PM +0100, Steven Price wrote: > panfrost_ioctl_mmap_bo() contains a reimplementation of > drm_gem_dump_map_offset() but with a bug - it allows mapping imported > objects (without going through the exporter). Fix this by switching to > use the generic drm_gem_dump_map_offset() function instead which has the > bonus of simplifying the code.
gem_dumb stuff is for kms drivers, panfrost is a render driver. We're generally trying to separate these two worlds somewhat cleanly.
I think it'd be good to have a non-dumb version of this in the core, and use that. Or upgrade the dumb version to be that helper for everyone (and drop the _dumb). -Daniel
> CC: Alyssa Rosenzweig <alyssa@rosenzweig.io> > Signed-off-by: Steven Price <steven.price@arm.com> > --- > drivers/gpu/drm/panfrost/panfrost_drv.c | 16 ++-------------- > 1 file changed, 2 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c > index 94b0819ad50b..d048250ad8ab 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c > @@ -254,26 +254,14 @@ static int panfrost_ioctl_mmap_bo(struct drm_device *dev, void *data, > struct drm_file *file_priv) > { > struct drm_panfrost_mmap_bo *args = data; > - struct drm_gem_object *gem_obj; > - int ret; > > if (args->flags != 0) { > DRM_INFO("unknown mmap_bo flags: %d\n", args->flags); > return -EINVAL; > } > > - gem_obj = drm_gem_object_lookup(file_priv, args->handle); > - if (!gem_obj) { > - DRM_DEBUG("Failed to look up GEM BO %d\n", args->handle); > - return -ENOENT; > - } > - > - ret = drm_gem_create_mmap_offset(gem_obj); > - if (ret == 0) > - args->offset = drm_vma_node_offset_addr(&gem_obj->vma_node); > - drm_gem_object_put_unlocked(gem_obj); > - > - return ret; > + return drm_gem_dumb_map_offset(file_priv, dev, args->handle, > + &args->offset); > } > > static int panfrost_ioctl_get_bo_offset(struct drm_device *dev, void *data, > -- > 2.20.1 >
-- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
| |