]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Jan 2020 19:39:46 +0000 (20:39 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Jan 2020 19:39:46 +0000 (20:39 +0100)
added patches:
revert-drm-virtio-switch-virtio_gpu_wait_ioctl-to-gem-helper.patch

queue-5.4/revert-drm-virtio-switch-virtio_gpu_wait_ioctl-to-gem-helper.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/revert-drm-virtio-switch-virtio_gpu_wait_ioctl-to-gem-helper.patch b/queue-5.4/revert-drm-virtio-switch-virtio_gpu_wait_ioctl-to-gem-helper.patch
new file mode 100644 (file)
index 0000000..97a206b
--- /dev/null
@@ -0,0 +1,73 @@
+From c6477978bb7cff342536cb94d446cbb15bcf5180 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Thu, 16 Jan 2020 20:37:53 +0100
+Subject: Revert "drm/virtio: switch virtio_gpu_wait_ioctl() to gem helper."
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+This reverts commit e6733ec8948475c4b62574e452135dc629294d75 which is
+commit 29cf12394c0565d7eb1685bf0c1b4749aa6a8b66 upstream.
+
+Alistair writes:
+       After updating to 5.4.7 we noticed that virtio_gpu's wait ioctl
+       stopped working correctly.
+
+       It looks like 29cf12394c05 ("drm/virtio: switch
+       virtio_gpu_wait_ioctl() to gem helper.") was picked up automatically,
+       but it depends on 889165ad6190 ("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>
+---
+ drivers/gpu/drm/virtio/virtgpu_ioctl.c |   28 ++++++++++++----------------
+ 1 file changed, 12 insertions(+), 16 deletions(-)
+
+--- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c
++++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c
+@@ -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;
+ }
index 9251caef4d0593e45a235711db0190d80f589f86..caf823709ceaeab0e2653ff9a37300f110fd6235 100644 (file)
@@ -121,3 +121,4 @@ pinctrl-sh-pfc-fix-pinmux_ipsr_phys-to-set-gpsr.patch
 pinctrl-sh-pfc-do-not-use-platform_get_irq-to-count-interrupts.patch
 pinctrl-lewisburg-update-pin-list-according-to-v1.1v6.patch
 pci-pciehp-do-not-disable-interrupt-twice-on-suspend.patch
+revert-drm-virtio-switch-virtio_gpu_wait_ioctl-to-gem-helper.patch