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 <[email protected]> --- 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
