Message ID | 20190807145253.2037-3-sean@poorly.run (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/panfrost: Revert drm_gem_map_offset changes | expand |
On Wed, 7 Aug 2019 at 15:53, Sean Paul <sean@poorly.run> wrote: > > From: Rob Herring <robh@kernel.org> > > This reverts commit 583bbf46133c726bae277e8f4e32bfba2a528c7f. > > Turns out we need mmap to work on imported BOs even if the current code > is buggy. > Personally I would have mentioned a use case where imported BOs are used. > Signed-off-by: Rob Herring <robh@kernel.org> > Signed-off-by: Sean Paul <sean@poorly.run> Regardless of the above nitpick, with the patch order fixed the series is: Reviewed-by: Emil Velikov <emil.velikov@collabora.com> ... in case you haven't picked it already. -Emil
On Wed, Aug 07, 2019 at 04:59:51PM +0100, Emil Velikov wrote: > On Wed, 7 Aug 2019 at 15:53, Sean Paul <sean@poorly.run> wrote: > > > > From: Rob Herring <robh@kernel.org> > > > > This reverts commit 583bbf46133c726bae277e8f4e32bfba2a528c7f. > > > > Turns out we need mmap to work on imported BOs even if the current code > > is buggy. > > > Personally I would have mentioned a use case where imported BOs are used. > > > Signed-off-by: Rob Herring <robh@kernel.org> > > Signed-off-by: Sean Paul <sean@poorly.run> > > Regardless of the above nitpick, with the patch order fixed the series is: > Reviewed-by: Emil Velikov <emil.velikov@collabora.com> > > ... in case you haven't picked it already. Yeah a follow-up patch to add a comment here about why exactly this went all kaboom, plus which userspace (since panfrost is moving fast) would be real nice here. Atm we need to hope someone does a git blame on this before the break this again, which seems a bit hopeful ... -Daniel
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c index b2e325e270b7..b187daa4da85 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -291,14 +291,26 @@ 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; } - return drm_gem_map_offset(file_priv, dev, args->handle, - &args->offset); + 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; } static int panfrost_ioctl_get_bo_offset(struct drm_device *dev, void *data,