On (20/06/02 14:24), Hans Verkuil wrote: [..] > For vim2m (but looks the same for vivid/vimc/vicodec): > > Streaming ioctls: > test read/write: OK (Not Supported) > test blocking wait: OK > Video Capture: Captured 8 buffers > test MMAP (no poll): OK > Video Capture: Captured 8 buffers > test MMAP (select): OK > Video Capture: Captured 8 buffers > test MMAP (epoll): OK > Video Capture: Captured 8 buffers > test USERPTR (no poll): OK > Video Capture: Captured 8 buffers > test USERPTR (select): OK > fail: v4l2-test-buffers.cpp(1874): flags & V4L2_BUF_FLAG_NO_CACHE_INVALIDATE > fail: v4l2-test-buffers.cpp(1937): setupDmaBuf(expbuf_node, node, q, exp_q) > test DMABUF (no poll): FAIL > fail: v4l2-test-buffers.cpp(1874): flags & V4L2_BUF_FLAG_NO_CACHE_INVALIDATE > fail: v4l2-test-buffers.cpp(1937): setupDmaBuf(expbuf_node, node, q, exp_q) > test DMABUF (select): FAIL This helps. I'm probably "holding v4l2-compliance wrong", but I have never seen that assertion triggering. The fix should be easy enough --- diff --git a/utils/v4l2-compliance/v4l2-test-buffers.cpp b/utils/v4l2-compliance/v4l2-test-buffers.cpp index 79b74e96..1ee12f96 100644 --- a/utils/v4l2-compliance/v4l2-test-buffers.cpp +++ b/utils/v4l2-compliance/v4l2-test-buffers.cpp @@ -1871,8 +1871,8 @@ static int setupDmaBuf(struct node *expbuf_node, struct node *node, fail_on_test(!buf.g_bytesused(p)); } flags = buf.g_flags(); - fail_on_test(flags & V4L2_BUF_FLAG_NO_CACHE_INVALIDATE); - fail_on_test(flags & V4L2_BUF_FLAG_NO_CACHE_CLEAN); + fail_on_test(!(flags & V4L2_BUF_FLAG_NO_CACHE_INVALIDATE)); + fail_on_test(!(flags & V4L2_BUF_FLAG_NO_CACHE_CLEAN)); fail_on_test(flags & V4L2_BUF_FLAG_DONE); fail_on_test(buf.querybuf(node, i)); fail_on_test(buf.check(q, Queued, i));