From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Andy Shevchenko <andy@kernel.org>
Cc: linux-pwm@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Bartosz Golaszewski <brgl@bgdev.pl>,
Wolfram Sang <wsa@kernel.org>,
linux-gpio@vger.kernel.org,
Thierry Reding <thierry.reding@gmail.com>,
kernel@pengutronix.de, Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH 18/18] gpio: mvebu: Make use of devm_pwmchip_alloc() function
Date: Thu, 3 Aug 2023 17:34:50 +0200 [thread overview]
Message-ID: <20230803153450.fbvqd35memctq6hr@pengutronix.de> (raw)
In-Reply-To: <ZMuUzChRuEckOHIE@smile.fi.intel.com>
[-- Attachment #1: Type: text/plain, Size: 2176 bytes --]
Hello Andy,
On Thu, Aug 03, 2023 at 02:51:40PM +0300, Andy Shevchenko wrote:
> On Thu, Aug 03, 2023 at 11:42:12AM +0200, Uwe Kleine-König wrote:
> > On Sun, Jul 30, 2023 at 12:07:33PM +0200, Bartosz Golaszewski wrote:
>
> ...
>
> > - the locking scheme in gpiod_request_commit() looks strange. gpio_lock
> > is released and retaken possibly several times. I wonder what it
> > actually protects there. Maybe doing
> >
> > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > index edab00c9cb3c..496b1cebba58 100644
> > --- a/drivers/gpio/gpiolib.c
> > +++ b/drivers/gpio/gpiolib.c
> > @@ -2064,13 +2064,11 @@ static int gpiod_request_commit(struct gpio_desc *desc, const char *label)
> > goto out_free_unlock;
> > }
> > }
> > + spin_unlock_irqrestore(&gpio_lock, flags);
> > if (gc->get_direction) {
> > /* gc->get_direction may sleep */
> > - spin_unlock_irqrestore(&gpio_lock, flags);
> > gpiod_get_direction(desc);
> > - spin_lock_irqsave(&gpio_lock, flags);
> > }
> > - spin_unlock_irqrestore(&gpio_lock, flags);
> > return 0;
> >
> > out_free_unlock:
> >
> > simplifies the code and given that gpiod_get_direction() rechecks
> > gc->get_direction unlocked I don't think we'd loose anything here.
>
> Wouldn't this break sleeping bus accesses (I2C gpio expanders, etc)?
This question is too short for me to understand what you think. The
only difference my patch does is that gc->get_direction is checked
without holding the lock and a lock+unlock pair. I don't see how this is
relevant to sleeping bus accesses.
lock()
...
if (A) {
unlock()
something()
lock()
}
unlock()
is nearly identical to:
lock()
...
unlock()
if (A) {
something()
}
lock()
unlock()
which in turn is nearly identical to
lock()
...
unlock()
if (A) {
something()
}
. But I might well miss something, as the "nearly"s above sometimes are
relevant.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
prev parent reply other threads:[~2023-08-03 15:35 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-18 18:18 [PATCH 00/18] pwm: Provide devm_pwmchip_alloc() function Uwe Kleine-König
2023-07-18 18:18 ` [PATCH 18/18] gpio: mvebu: Make use of " Uwe Kleine-König
2023-07-29 14:09 ` Bartosz Golaszewski
2023-07-29 21:37 ` Uwe Kleine-König
2023-07-30 10:07 ` Bartosz Golaszewski
2023-07-30 14:09 ` Uwe Kleine-König
2023-08-03 9:42 ` Uwe Kleine-König
2023-08-03 11:51 ` Andy Shevchenko
2023-08-03 15:34 ` Uwe Kleine-König [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=20230803153450.fbvqd35memctq6hr@pengutronix.de \
--to=u.kleine-koenig@pengutronix.de \
--cc=andy@kernel.org \
--cc=brgl@bgdev.pl \
--cc=gregkh@linuxfoundation.org \
--cc=kernel@pengutronix.de \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=thierry.reding@gmail.com \
--cc=wsa@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).