Message ID | 20190627155318.38053-3-steven.price@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/panfrost: drm_gem_map_offset() helper | expand |
On Thu, Jun 27, 2019 at 9:53 AM Steven Price <steven.price@arm.com> wrote: > > panfrost_ioctl_mmap_bo() contains a reimplementation of > drm_gem_map_offset() but with a bug - it allows mapping imported > objects (without going through the exporter). Fix this by switching to > use the newly renamed drm_gem_map_offset() function instead which has > the bonus of simplifying the code. While it may have been a bug, it worked (by some definition of worked). Now mesa breaks on importing buffers which always get mmapped. So we need to revert this, get import mmaps to work, or drop mmapping of imports and backport that to 19.1. I don't think there should be any need to mmap imports. Rob
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c index e34e86a7378a..1498b9b07a8f 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -259,26 +259,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_map_offset(file_priv, dev, args->handle, + &args->offset); } static int panfrost_ioctl_get_bo_offset(struct drm_device *dev, void *data,