drm/virtio: Fix same-context optimization
authorRob Clark <robdclark@chromium.org>
Fri, 12 Aug 2022 22:40:00 +0000 (15:40 -0700)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 25 Aug 2022 09:56:22 +0000 (11:56 +0200)
When VIRTGPU_EXECBUF_RING_IDX is used, we should be considering the
timeline that the EB if running on rather than the global driver fence
context.

Fixes: 85c83ea915ed ("drm/virtio: implement context init: allocate an array of fence contexts")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20220812224001.2806463-1-robdclark@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
drivers/gpu/drm/virtio/virtgpu_ioctl.c

index 9b27021..3b17016 100644 (file)
@@ -168,7 +168,7 @@ static int virtio_gpu_execbuffer_ioctl(struct drm_device *dev, void *data,
                 * array contains any fence from a foreign context.
                 */
                ret = 0;
-               if (!dma_fence_match_context(in_fence, vgdev->fence_drv.context))
+               if (!dma_fence_match_context(in_fence, fence_ctx + ring_idx))
                        ret = dma_fence_wait(in_fence, true);
 
                dma_fence_put(in_fence);