1
0
Fork 0

Revert "drm/virtio: switch virtio_gpu_wait_ioctl() to gem helper."

This reverts commit e6733ec894 which is
commit 29cf12394c upstream.

Alistair writes:
	After updating to 5.4.7 we noticed that virtio_gpu's wait ioctl
	stopped working correctly.

	It looks like 29cf12394c ("drm/virtio: switch
	virtio_gpu_wait_ioctl() to gem helper.") was picked up automatically,
	but it depends on 889165ad61 ("drm/virtio: pass gem reservation
	object to ttm init") from earlier in Gerd's series in Linus's tree,
	which was not picked up.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Chia-I Wu <olvaffe@gmail.com>
Cc: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
5.4-rM2-2.2.x-imx-squashed
Greg Kroah-Hartman 2020-01-16 20:37:53 +01:00
parent ee30108f7a
commit 7f57b0b34e
1 changed files with 12 additions and 16 deletions

View File

@ -463,29 +463,25 @@ out:
}
static int virtio_gpu_wait_ioctl(struct drm_device *dev, void *data,
struct drm_file *file)
struct drm_file *file)
{
struct drm_virtgpu_3d_wait *args = data;
struct drm_gem_object *obj;
long timeout = 15 * HZ;
struct drm_gem_object *gobj = NULL;
struct virtio_gpu_object *qobj = NULL;
int ret;
bool nowait = false;
obj = drm_gem_object_lookup(file, args->handle);
if (obj == NULL)
gobj = drm_gem_object_lookup(file, args->handle);
if (gobj == NULL)
return -ENOENT;
if (args->flags & VIRTGPU_WAIT_NOWAIT) {
ret = dma_resv_test_signaled_rcu(obj->resv, true);
} else {
ret = dma_resv_wait_timeout_rcu(obj->resv, true, true,
timeout);
}
if (ret == 0)
ret = -EBUSY;
else if (ret > 0)
ret = 0;
qobj = gem_to_virtio_gpu_obj(gobj);
drm_gem_object_put_unlocked(obj);
if (args->flags & VIRTGPU_WAIT_NOWAIT)
nowait = true;
ret = virtio_gpu_object_wait(qobj, nowait);
drm_gem_object_put_unlocked(gobj);
return ret;
}