From aceda1f5f6fe597c6ac74d561fcb45b95ba2869a Mon Sep 17 00:00:00 2001 From: Juston Li Date: Mon, 22 Jan 2024 12:15:55 -0800 Subject: [PATCH] venus: acquire mutex when recycling query feedback cmds Fixes: 5b24ab91e43 ("venus: switch to unconditionally deferred query feedback") Signed-off-by: Juston Li Part-of: --- src/virtio/vulkan/vn_command_buffer.c | 2 ++ src/virtio/vulkan/vn_queue.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c index e8ed22e59a0..7edebe6ff60 100644 --- a/src/virtio/vulkan/vn_command_buffer.c +++ b/src/virtio/vulkan/vn_command_buffer.c @@ -696,11 +696,13 @@ vn_CreateCommandPool(VkDevice device, static inline void vn_recycle_query_feedback_cmd(struct vn_command_buffer *cmd) { + simple_mtx_lock(&cmd->linked_query_feedback_cmd->pool->mutex); vn_ResetCommandBuffer( vn_command_buffer_to_handle(cmd->linked_query_feedback_cmd->cmd), 0); list_add(&cmd->linked_query_feedback_cmd->head, &cmd->linked_query_feedback_cmd->pool->free_query_feedback_cmds); cmd->linked_query_feedback_cmd = NULL; + simple_mtx_unlock(&cmd->linked_query_feedback_cmd->pool->mutex); } void diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 7d716788e5d..ef9c38a8a53 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -999,12 +999,14 @@ vn_queue_submission_cleanup(struct vn_queue_submission *submit) const VkAllocationCallbacks *alloc = &queue->base.base.base.device->alloc; if (submit->recycle_query_feedback_cmd) { + simple_mtx_lock(&submit->recycle_query_feedback_cmd->pool->mutex); vn_ResetCommandBuffer( vn_command_buffer_to_handle(submit->recycle_query_feedback_cmd->cmd), 0); list_add( &submit->recycle_query_feedback_cmd->head, &submit->recycle_query_feedback_cmd->pool->free_query_feedback_cmds); + simple_mtx_unlock(&submit->recycle_query_feedback_cmd->pool->mutex); } /* TODO clean up pending src feedbacks on failure? */