From: Hans Verkuil <hverkuil@xs4all.nl>
To: Sakari Ailus <sakari.ailus@linux.intel.com>, linux-media@vger.kernel.org
Cc: mchehab@osg.samsung.com
Subject: Re: [PATCH 1/1] vb2: Only requeue buffers immediately once streaming is started
Date: Fri, 03 Jul 2015 12:49:35 +0200 [thread overview]
Message-ID: <559668BF.4020905@xs4all.nl> (raw)
In-Reply-To: <1435918810-21180-1-git-send-email-sakari.ailus@linux.intel.com>
On 07/03/2015 12:20 PM, Sakari Ailus wrote:
> Buffers can be returned back to videobuf2 in driver's streamon handler. In
> this case vb2_buffer_done() with buffer state VB2_BUF_STATE_QUEUED will
> cause the driver's buf_queue vb2 operation to be called, queueing the same
> buffer again only to be returned to videobuf2 using vb2_buffer_done() and so
> on.
>
> Instead of using q->start_streamin_called to judge whether to return the
> buffer to the driver immediately, use q->streaming which is set only after
> the driver's start_streaming() vb2 operation is called.
I don't think this patch will work. If q->min_buffers_needed is > 0, then
q->streaming and q->start_streaming_called will both be true in vb2_buffer_done(),
still causing the same issue.
The problem is that there is no clear distinction between STATE_QUEUED as used
in start_streaming and STATE_QUEUED as used to requeue a buffer while streaming.
The best option here I think is to introduce a STATE_REQUEUE for the second use
case.
Regards,
Hans
>
> Fixes: ce0eff016f72 ("[media] vb2: allow requeuing buffers while streaming")
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> Cc: stable@vger.kernel.org # for v4.1
> ---
> drivers/media/v4l2-core/videobuf2-core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
> index 1a096a6..6957078 100644
> --- a/drivers/media/v4l2-core/videobuf2-core.c
> +++ b/drivers/media/v4l2-core/videobuf2-core.c
> @@ -1208,7 +1208,7 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
> spin_unlock_irqrestore(&q->done_lock, flags);
>
> if (state == VB2_BUF_STATE_QUEUED) {
> - if (q->start_streaming_called)
> + if (q->streaming)
> __enqueue_in_driver(vb);
> return;
> }
>
prev parent reply other threads:[~2015-07-03 10:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-03 10:20 [PATCH 1/1] vb2: Only requeue buffers immediately once streaming is started Sakari Ailus
2015-07-03 10:49 ` Hans Verkuil [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=559668BF.4020905@xs4all.nl \
--to=hverkuil@xs4all.nl \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@osg.samsung.com \
--cc=sakari.ailus@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.