drm/virtio: set seqno for dma-fence
authorChia-I Wu <olvaffe@gmail.com>
Mon, 29 Apr 2019 22:08:23 +0000 (15:08 -0700)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 6 May 2019 08:52:58 +0000 (10:52 +0200)
commitefe2bf965522bf0796d413b47a2abbf81d471d6f
tree18cbfaf4bfe4bfb5352a30bb9b47d7f598aa2d4b
parent1f358bc6f272b9846dda4c1a9ab05aa1afa06954
drm/virtio: set seqno for dma-fence

This is motivated by having meaningful ftrace events, but it also
fixes use cases where dma_fence_is_later is called, such as in
sync_file_merge.

In other drivers, fence creation and cmdbuf submission normally
happen atomically,

  mutex_lock();
  fence = dma_fence_create(..., ++timeline->seqno);
  submit_cmdbuf();
  mutex_unlock();

and have no such issue.  But in our driver, because most ioctls
queue commands into ctrlq, we do not want to grab a lock.  Instead,
we set seqno to 0 when a fence is created, and update it when the
command is finally queued and the seqno is known.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20190429220825.156644-1-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
drivers/gpu/drm/virtio/virtgpu_drv.h
drivers/gpu/drm/virtio/virtgpu_fence.c