From 1e6ea0697a178b32de0f9036eec74d1275cad790 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Wed, 17 Sep 2025 10:27:12 +0200 Subject: [PATCH] panvk: Flush pending map syncs before submission Flush deferred CPU sync ops so we can make CPU changes visible to the GPU. This is currently a NOP because we haven't enabled cached mappings in panvk yet, but we need to prepare for that before we progressively switch each relevant buffer to use writeback CPU mappings. Signed-off-by: Boris Brezillon Reviewed-by: Faith Ekstrand Reviewed-by: Christoph Pillmayer Part-of: --- src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c | 6 ++++++ src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c b/src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c index 72ed569e6b5..85388092649 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c +++ b/src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c @@ -511,6 +511,8 @@ init_subqueue(struct panvk_gpu_queue *queue, enum panvk_subqueue_id subqueue) .queue_submits = DRM_PANTHOR_OBJ_ARRAY(1, &qsubmit), }; + pan_kmod_flush_bo_map_syncs(dev->kmod.dev); + int ret = pan_kmod_ioctl(dev->drm_fd, DRM_IOCTL_PANTHOR_GROUP_SUBMIT, &gsubmit); if (ret) @@ -1136,6 +1138,10 @@ panvk_queue_submit_ioctl(struct panvk_queue_submit *submit) } } + /* Flush pending synchronization requests before submitting the job, to + * make sure things are GPU-visible. */ + pan_kmod_flush_bo_map_syncs(dev->kmod.dev); + struct drm_panthor_group_submit gsubmit = { .group_handle = queue->group_handle, .queue_submits = diff --git a/src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c b/src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c index 5fd4c64962e..70e822c3b9f 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c +++ b/src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c @@ -56,6 +56,10 @@ panvk_queue_submit_batch(struct panvk_gpu_queue *queue, struct panvk_batch *batc } } + /* Flush pending synchronization requests before submitting the job, to + * make sure things are GPU-visible. */ + pan_kmod_flush_bo_map_syncs(dev->kmod.dev); + if (batch->vtc_jc.first_job) { struct drm_panfrost_submit submit = { .bo_handles = (uintptr_t)bos,