[PATCH 4/4] media: vivid: synchronize imported DMA-BUFs for CPU access
From: Karl Mehltretter
Date: Mon Oct 19 2026 - 03:15:23 EST
vivid accesses imported DMA-BUFs with the CPU without cache
synchronization, leaving physical RAM stale after capture.
Set uses_cpu_access to bracket the driver's CPU access.
On a Pi 400, stale frames fell from 25/96 to 0/96 with this change.
Assisted-by: LLM
Signed-off-by: Karl Mehltretter <kmehltretter@xxxxxxxxx>
---
drivers/media/test-drivers/vivid/vivid-core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/media/test-drivers/vivid/vivid-core.c b/drivers/media/test-drivers/vivid/vivid-core.c
index 62cfb5feb2cf5..e3aa1fc3bcf75 100644
--- a/drivers/media/test-drivers/vivid/vivid-core.c
+++ b/drivers/media/test-drivers/vivid/vivid-core.c
@@ -925,6 +925,7 @@ static int vivid_create_queue(struct vivid_dev *dev,
q->ops = ops;
q->mem_ops = allocators[dev->inst] == 1 ? &vb2_dma_contig_memops :
&vb2_vmalloc_memops;
+ q->uses_cpu_access = true;
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
q->min_reqbufs_allocation = min_reqbufs_allocation;
q->lock = &dev->mutex;
--
2.47.3