[PATCH v2 3/3] media: vivid: synchronize imported DMA-BUFs for CPU access

From: Karl Mehltretter

Date: Sat Nov 07 2026 - 05:55:49 EST


When configured to use vb2-vmalloc, vivid accesses imported DMA-BUFs with
the CPU without cache synchronization, leaving physical RAM stale after
capture.

Set uses_cpu_access on vb2-vmalloc queues to bracket the driver's CPU
access.

Fixes: c88a96b023d8 ("[media] vivid: add core driver code")
Signed-off-by: Karl Mehltretter <kmehltretter@xxxxxxxxx>
---
v2:
- Set uses_cpu_access only when vivid uses vb2_vmalloc_memops
(allocators[dev->inst] != 1) instead of unconditionally (Tomasz Figa).

drivers/media/test-drivers/vivid/vivid-core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/media/test-drivers/vivid/vivid-core.c b/drivers/media/test-drivers/vivid/vivid-core.c
index c042d92db175..f6c7460cdba7 100644
--- a/drivers/media/test-drivers/vivid/vivid-core.c
+++ b/drivers/media/test-drivers/vivid/vivid-core.c
@@ -919,8 +919,10 @@ static int vivid_create_queue(struct vivid_dev *dev,
if (buf_type == V4L2_BUF_TYPE_VBI_CAPTURE)
q->max_num_buffers = 32768;

- if (allocators[dev->inst] != 1)
+ if (allocators[dev->inst] != 1) {
q->io_modes |= VB2_USERPTR;
+ q->uses_cpu_access = true;
+ }
q->drv_priv = dev;
q->buf_struct_size = sizeof(struct vivid_buffer);
q->ops = ops;
--
2.39.5 (Apple Git-154)