Commit 23cd08c8 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] videobuf2-core: add comments before the WARN_ON

Recently WARN_ON() calls have been added to warn if the driver is not
properly returning buffers to vb2 in start_streaming (if it fails) or
stop_streaming(). Add comments before those WARN_ON calls that refer
to the videobuf2-core.h header that explains what drivers are supposed
to do in these situations. That should help point developers in the
right direction if they see these warnings.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Acked-by: default avatarPawel Osciak <pawel@osciak.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 47bc59c5
...@@ -1762,6 +1762,12 @@ static int vb2_start_streaming(struct vb2_queue *q) ...@@ -1762,6 +1762,12 @@ static int vb2_start_streaming(struct vb2_queue *q)
q->start_streaming_called = 0; q->start_streaming_called = 0;
dprintk(1, "driver refused to start streaming\n"); dprintk(1, "driver refused to start streaming\n");
/*
* If you see this warning, then the driver isn't cleaning up properly
* after a failed start_streaming(). See the start_streaming()
* documentation in videobuf2-core.h for more information how buffers
* should be returned to vb2 in start_streaming().
*/
if (WARN_ON(atomic_read(&q->owned_by_drv_count))) { if (WARN_ON(atomic_read(&q->owned_by_drv_count))) {
unsigned i; unsigned i;
...@@ -2123,6 +2129,12 @@ static void __vb2_queue_cancel(struct vb2_queue *q) ...@@ -2123,6 +2129,12 @@ static void __vb2_queue_cancel(struct vb2_queue *q)
if (q->start_streaming_called) if (q->start_streaming_called)
call_void_qop(q, stop_streaming, q); call_void_qop(q, stop_streaming, q);
/*
* If you see this warning, then the driver isn't cleaning up properly
* in stop_streaming(). See the stop_streaming() documentation in
* videobuf2-core.h for more information how buffers should be returned
* to vb2 in stop_streaming().
*/
if (WARN_ON(atomic_read(&q->owned_by_drv_count))) { if (WARN_ON(atomic_read(&q->owned_by_drv_count))) {
for (i = 0; i < q->num_buffers; ++i) for (i = 0; i < q->num_buffers; ++i)
if (q->bufs[i]->state == VB2_BUF_STATE_ACTIVE) if (q->bufs[i]->state == VB2_BUF_STATE_ACTIVE)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment