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: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Message-id: 1472660813-28219-2-git-send-email-gustavo@padovan.org Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Родитель
5c32c3dd85
Коммит
30b9c96cf7
|
@ -75,6 +75,7 @@ typedef void (*virtio_gpu_resp_cb)(struct virtio_gpu_device *vgdev,
|
|||
struct virtio_gpu_fence_driver {
|
||||
atomic64_t last_seq;
|
||||
uint64_t sync_seq;
|
||||
uint64_t context;
|
||||
struct list_head fences;
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
|
|
@ -89,7 +89,7 @@ int virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev,
|
|||
(*fence)->drv = drv;
|
||||
(*fence)->seq = ++drv->sync_seq;
|
||||
fence_init(&(*fence)->f, &virtio_fence_ops, &drv->lock,
|
||||
0, (*fence)->seq);
|
||||
drv->context, (*fence)->seq);
|
||||
fence_get(&(*fence)->f);
|
||||
list_add_tail(&(*fence)->node, &drv->fences);
|
||||
spin_unlock_irqrestore(&drv->lock, irq_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->cursorq, virtio_gpu_dequeue_cursor_func);
|
||||
|
||||
vgdev->fence_drv.context = fence_context_alloc(1);
|
||||
spin_lock_init(&vgdev->fence_drv.lock);
|
||||
INIT_LIST_HEAD(&vgdev->fence_drv.fences);
|
||||
INIT_LIST_HEAD(&vgdev->cap_cache);
|
||||
|
|
Загрузка…
Ссылка в новой задаче