drm/virtio: Rewrite virtio_gpu_queue_ctrl_buffer using fenced version.
authorDavid Riley <davidriley@chromium.org>
Wed, 11 Sep 2019 18:14:02 +0000 (11:14 -0700)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 12 Sep 2019 07:49:24 +0000 (09:49 +0200)
Factor function in preparation to generating scatterlist prior to locking.

Signed-off-by: David Riley <davidriley@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20190911181403.40909-2-davidriley@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
drivers/gpu/drm/virtio/virtgpu_vq.c

index 7fd2851..5a64c77 100644 (file)
@@ -302,18 +302,6 @@ retry:
        return notify;
 }
 
-static void virtio_gpu_queue_ctrl_buffer(struct virtio_gpu_device *vgdev,
-                                        struct virtio_gpu_vbuffer *vbuf)
-{
-       bool notify;
-
-       spin_lock(&vgdev->ctrlq.qlock);
-       notify = virtio_gpu_queue_ctrl_buffer_locked(vgdev, vbuf);
-       spin_unlock(&vgdev->ctrlq.qlock);
-       if (notify)
-               virtqueue_notify(vgdev->ctrlq.vq);
-}
-
 static void virtio_gpu_queue_fenced_ctrl_buffer(struct virtio_gpu_device *vgdev,
                                                struct virtio_gpu_vbuffer *vbuf,
                                                struct virtio_gpu_ctrl_hdr *hdr,
@@ -339,7 +327,7 @@ again:
                goto again;
        }
 
-       if (fence) {
+       if (hdr && fence) {
                virtio_gpu_fence_emit(vgdev, hdr, fence);
                if (vbuf->objs) {
                        virtio_gpu_array_add_fence(vbuf->objs, &fence->f);
@@ -352,6 +340,12 @@ again:
                virtqueue_notify(vgdev->ctrlq.vq);
 }
 
+static void virtio_gpu_queue_ctrl_buffer(struct virtio_gpu_device *vgdev,
+                                        struct virtio_gpu_vbuffer *vbuf)
+{
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, NULL, NULL);
+}
+
 static void virtio_gpu_queue_cursor(struct virtio_gpu_device *vgdev,
                                    struct virtio_gpu_vbuffer *vbuf)
 {