From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Kieran Bingham <kieran.bingham@ideasonboard.com>
Cc: linux-media@vger.kernel.org,
Guennadi Liakhovetski <g.liakhovetski@gmx.de>,
Olivier BRAUN <olivier.braun@stereolabs.com>,
Troy Kisky <troy.kisky@boundarydevices.com>,
Randy Dunlap <rdunlap@infradead.org>,
Philipp Zabel <philipp.zabel@gmail.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 4/6] media: uvcvideo: queue: Simplify spin-lock usage
Date: Mon, 30 Jul 2018 22:57:00 +0300 [thread overview]
Message-ID: <18698388.LcrgILxgHI@avalon> (raw)
In-Reply-To: <ec54c7e1cfc4d1846c3dc09f27f609e7cf82b45c.1522168131.git-series.kieran.bingham@ideasonboard.com>
Hi Kieran,
Thank you for the patch.
On Tuesday, 27 March 2018 19:46:01 EEST Kieran Bingham wrote:
> Both uvc_start_streaming(), and uvc_stop_streaming() are called from
> userspace context, with interrupts enabled. As such, they do not need to
> save the IRQ state, and can use spin_lock_irq() and spin_unlock_irq()
> respectively.
>
> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
>
> ---
>
> v4:
> - Rebase to v4.16 (linux-media/master)
>
> drivers/media/usb/uvc/uvc_queue.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_queue.c
> b/drivers/media/usb/uvc/uvc_queue.c index adcc4928fae4..698d9a5a5aae 100644
> --- a/drivers/media/usb/uvc/uvc_queue.c
> +++ b/drivers/media/usb/uvc/uvc_queue.c
> @@ -169,7 +169,6 @@ static int uvc_start_streaming(struct vb2_queue *vq,
> unsigned int count) {
> struct uvc_video_queue *queue = vb2_get_drv_priv(vq);
> struct uvc_streaming *stream = uvc_queue_to_stream(queue);
> - unsigned long flags;
> int ret;
>
> queue->buf_used = 0;
> @@ -178,9 +177,9 @@ static int uvc_start_streaming(struct vb2_queue *vq,
> unsigned int count) if (ret == 0)
> return 0;
>
> - spin_lock_irqsave(&queue->irqlock, flags);
> + spin_lock_irq(&queue->irqlock);
> uvc_queue_return_buffers(queue, UVC_BUF_STATE_QUEUED);
> - spin_unlock_irqrestore(&queue->irqlock, flags);
> + spin_unlock_irq(&queue->irqlock);
>
> return ret;
> }
> @@ -188,14 +187,13 @@ static int uvc_start_streaming(struct vb2_queue *vq,
> unsigned int count) static void uvc_stop_streaming(struct vb2_queue *vq)
> {
> struct uvc_video_queue *queue = vb2_get_drv_priv(vq);
> - unsigned long flags;
>
> if (vq->type != V4L2_BUF_TYPE_META_CAPTURE)
> uvc_video_enable(uvc_queue_to_stream(queue), 0);
>
> - spin_lock_irqsave(&queue->irqlock, flags);
> + spin_lock_irq(&queue->irqlock);
> uvc_queue_return_buffers(queue, UVC_BUF_STATE_ERROR);
> - spin_unlock_irqrestore(&queue->irqlock, flags);
> + spin_unlock_irq(&queue->irqlock);
> }
I think you missed my comment that stated
> Please add a one-line comment above both functions to state
>
> /* Must be called with interrupts enabled. */
Philipp Zabel commented that you could also add lockdep_assert_irqs_enabled(),
and I think that's a good idea. I'll let you decide whether to do both, or
only add lockdep_assert_irqs_enabled(), I'm fine with either option.
With this fixed,
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> static const struct vb2_ops uvc_queue_qops = {
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2018-07-30 21:32 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-27 16:45 [PATCH v4 0/6] Asynchronous UVC Kieran Bingham
2018-03-27 16:45 ` [PATCH v4 1/6] media: uvcvideo: Refactor URB descriptors Kieran Bingham
2018-03-27 16:45 ` [PATCH v4 2/6] media: uvcvideo: Convert decode functions to use new context structure Kieran Bingham
2018-03-27 16:46 ` [PATCH v4 3/6] media: uvcvideo: Protect queue internals with helper Kieran Bingham
2018-03-27 16:46 ` [PATCH v4 4/6] media: uvcvideo: queue: Simplify spin-lock usage Kieran Bingham
2018-07-30 19:57 ` Laurent Pinchart [this message]
2018-11-06 15:10 ` Kieran Bingham
2018-03-27 16:46 ` [PATCH v4 5/6] media: uvcvideo: queue: Support asynchronous buffer handling Kieran Bingham
2018-03-27 16:46 ` [PATCH v4 6/6] media: uvcvideo: Move decode processing to process context Kieran Bingham
2018-06-04 12:09 ` Guennadi Liakhovetski
2018-06-04 12:34 ` Kieran Bingham
2018-07-30 22:11 ` Laurent Pinchart
2018-08-07 9:54 ` Tomasz Figa
2018-08-07 23:06 ` Laurent Pinchart
2018-08-07 23:13 ` Laurent Pinchart
2018-08-08 3:50 ` Tomasz Figa
2018-08-08 13:49 ` Kieran Bingham
2018-11-06 15:13 ` Kieran Bingham
2018-11-07 4:38 ` Tomasz Figa
2018-05-15 19:22 ` [PATCH v4 0/6] Asynchronous UVC Mauro Carvalho Chehab
2018-05-15 20:19 ` Kieran Bingham
2018-05-15 21:45 ` Mauro Carvalho Chehab
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=18698388.LcrgILxgHI@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=g.liakhovetski@gmx.de \
--cc=kieran.bingham@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=olivier.braun@stereolabs.com \
--cc=philipp.zabel@gmail.com \
--cc=rdunlap@infradead.org \
--cc=troy.kisky@boundarydevices.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.