Commit 7b0cdf3e authored by Daniel Vetter's avatar Daniel Vetter

drm/vgem: Ditch attach trickery in the fence ioctl

It looks like this was done purely to get a consistent place to look
up the reservation object pointer. With the drm_prime.c helper code
now also setting gem_object->resv for imported objects we can just use
that pointer directly, instead of first ensuring a dma-buf exists.

v2: Note that I screwed up the patch ordering, hence why this needed
a Fixes: tag - CI spotted the broken intermediate state.

Fixes: 5eab9987 ("drm/vgem: Drop drm_gem_prime_export")
Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190614203615.12639-49-daniel.vetter@ffwll.ch
parent 5f6ed987
...@@ -100,22 +100,6 @@ static struct dma_fence *vgem_fence_create(struct vgem_file *vfile, ...@@ -100,22 +100,6 @@ static struct dma_fence *vgem_fence_create(struct vgem_file *vfile,
return &fence->base; return &fence->base;
} }
static int attach_dmabuf(struct drm_device *dev,
struct drm_gem_object *obj)
{
struct dma_buf *dmabuf;
if (obj->dma_buf)
return 0;
dmabuf = dev->driver->gem_prime_export(obj, 0);
if (IS_ERR(dmabuf))
return PTR_ERR(dmabuf);
obj->dma_buf = dmabuf;
return 0;
}
/* /*
* vgem_fence_attach_ioctl (DRM_IOCTL_VGEM_FENCE_ATTACH): * vgem_fence_attach_ioctl (DRM_IOCTL_VGEM_FENCE_ATTACH):
* *
...@@ -157,10 +141,6 @@ int vgem_fence_attach_ioctl(struct drm_device *dev, ...@@ -157,10 +141,6 @@ int vgem_fence_attach_ioctl(struct drm_device *dev,
if (!obj) if (!obj)
return -ENOENT; return -ENOENT;
ret = attach_dmabuf(dev, obj);
if (ret)
goto err;
fence = vgem_fence_create(vfile, arg->flags); fence = vgem_fence_create(vfile, arg->flags);
if (!fence) { if (!fence) {
ret = -ENOMEM; ret = -ENOMEM;
...@@ -168,7 +148,7 @@ int vgem_fence_attach_ioctl(struct drm_device *dev, ...@@ -168,7 +148,7 @@ int vgem_fence_attach_ioctl(struct drm_device *dev,
} }
/* Check for a conflicting fence */ /* Check for a conflicting fence */
resv = obj->dma_buf->resv; resv = obj->resv;
if (!reservation_object_test_signaled_rcu(resv, if (!reservation_object_test_signaled_rcu(resv,
arg->flags & VGEM_FENCE_WRITE)) { arg->flags & VGEM_FENCE_WRITE)) {
ret = -EBUSY; ret = -EBUSY;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment