mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 23:03:57 -04:00
drm/virtio: implement context init: add virtio_gpu_fence_event
Similar to DRM_VMW_EVENT_FENCE_SIGNALED. Sends a pollable event to the DRM file descriptor when a fence on a specific ring is signaled. One difference is the event is not exposed via the UAPI -- this is because host responses are on a shared memory buffer of type BLOB_MEM_GUEST [this is the common way to receive responses with virtgpu]. As such, there is no context specific read(..) implementation either -- just a poll(..) implementation. Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org> Acked-by: Nicholas Verne <nverne@chromium.org> Link: http://patchwork.freedesktop.org/patch/msgid/20210921232024.817-12-gurchetansingh@chromium.org Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
committed by
Gerd Hoffmann
parent
8d6b006e1f
commit
cd7f5ca335
@@ -152,11 +152,21 @@ void virtio_gpu_fence_event_process(struct virtio_gpu_device *vgdev,
|
||||
continue;
|
||||
|
||||
dma_fence_signal_locked(&curr->f);
|
||||
if (curr->e) {
|
||||
drm_send_event(vgdev->ddev, &curr->e->base);
|
||||
curr->e = NULL;
|
||||
}
|
||||
|
||||
list_del(&curr->node);
|
||||
dma_fence_put(&curr->f);
|
||||
}
|
||||
|
||||
dma_fence_signal_locked(&signaled->f);
|
||||
if (signaled->e) {
|
||||
drm_send_event(vgdev->ddev, &signaled->e->base);
|
||||
signaled->e = NULL;
|
||||
}
|
||||
|
||||
list_del(&signaled->node);
|
||||
dma_fence_put(&signaled->f);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user