Commit 30b9c96c authored by Gustavo Padovan's avatar Gustavo Padovan Committed by Gerd Hoffmann

drm/virtio: add real fence context and seqno

virtio fences were created with no fence context, which would make then
clash with an allocated fence context.
Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
Message-id: 1472660813-28219-2-git-send-email-gustavo@padovan.org
Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent 5c32c3dd
...@@ -75,6 +75,7 @@ typedef void (*virtio_gpu_resp_cb)(struct virtio_gpu_device *vgdev, ...@@ -75,6 +75,7 @@ typedef void (*virtio_gpu_resp_cb)(struct virtio_gpu_device *vgdev,
struct virtio_gpu_fence_driver { struct virtio_gpu_fence_driver {
atomic64_t last_seq; atomic64_t last_seq;
uint64_t sync_seq; uint64_t sync_seq;
uint64_t context;
struct list_head fences; struct list_head fences;
spinlock_t lock; spinlock_t lock;
}; };
......
...@@ -89,7 +89,7 @@ int virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, ...@@ -89,7 +89,7 @@ int virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev,
(*fence)->drv = drv; (*fence)->drv = drv;
(*fence)->seq = ++drv->sync_seq; (*fence)->seq = ++drv->sync_seq;
fence_init(&(*fence)->f, &virtio_fence_ops, &drv->lock, fence_init(&(*fence)->f, &virtio_fence_ops, &drv->lock,
0, (*fence)->seq); drv->context, (*fence)->seq);
fence_get(&(*fence)->f); fence_get(&(*fence)->f);
list_add_tail(&(*fence)->node, &drv->fences); list_add_tail(&(*fence)->node, &drv->fences);
spin_unlock_irqrestore(&drv->lock, irq_flags); spin_unlock_irqrestore(&drv->lock, irq_flags);
......
...@@ -159,6 +159,7 @@ int virtio_gpu_driver_load(struct drm_device *dev, unsigned long flags) ...@@ -159,6 +159,7 @@ int virtio_gpu_driver_load(struct drm_device *dev, unsigned long flags)
virtio_gpu_init_vq(&vgdev->ctrlq, virtio_gpu_dequeue_ctrl_func); virtio_gpu_init_vq(&vgdev->ctrlq, virtio_gpu_dequeue_ctrl_func);
virtio_gpu_init_vq(&vgdev->cursorq, virtio_gpu_dequeue_cursor_func); virtio_gpu_init_vq(&vgdev->cursorq, virtio_gpu_dequeue_cursor_func);
vgdev->fence_drv.context = fence_context_alloc(1);
spin_lock_init(&vgdev->fence_drv.lock); spin_lock_init(&vgdev->fence_drv.lock);
INIT_LIST_HEAD(&vgdev->fence_drv.fences); INIT_LIST_HEAD(&vgdev->fence_drv.fences);
INIT_LIST_HEAD(&vgdev->cap_cache); INIT_LIST_HEAD(&vgdev->cap_cache);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment