From: David Brownell <david-b@pacbell.net>
To: "Leon Woestenberg" <leon.woestenberg@gmail.com>
Cc: LAK <linux-arm-kernel@lists.arm.linux.org.uk>,
"Linux Kernel list" <linux-kernel@vger.kernel.org>
Subject: Re: Locking in the (now generic) GPIO infrastructure?
Date: Fri, 6 Jun 2008 05:53:47 -0700 [thread overview]
Message-ID: <200806060553.48057.david-b@pacbell.net> (raw)
In-Reply-To: <c384c5ea0806040400j35236d5fo3854ce2ed30cd755@mail.gmail.com>
On Wednesday 04 June 2008, Leon Woestenberg wrote:
> include/asm-arm/arch-ixp4xx/platform.h:
> static inline void gpio_line_set(u8 line, int value)
> {
> if (value == IXP4XX_GPIO_HIGH)
> *IXP4XX_GPIO_GPOUTR |= (1 << line);
> else if (value == IXP4XX_GPIO_LOW)
> *IXP4XX_GPIO_GPOUTR &= ~(1 << line);
> }
>
> Under a Linux kernel where multiple drivers are accessing GPIO, the
> latter does not seem safe against preemption (assuming the memory
> read-modify-write is not atomic).
>
> Shouldn't GPIO access be protected against concurrent access here?
Well, against an IRQ in the middle of those read/modify/write
sequences hidden by the "|=" and "&=" syntax. Last I knew,
no XScale CPUs support on-chip SMP.
> Documentation/gpio.txt does not really mention the locking mechanism
> assumed to modify GPIO lines.
That function isn't part of the GPIO interface, despite
its gpio_* prefix, so that's not relevant.
It resembles gpio_set_value() though. That can use at
most spinlocks to establish its atomicity guarantee; it's
described as "spinlock-safe", and in distinction to the
gpio_set_value_cansleep() call which could use a mutex or
other sleeping synch primitive.
next prev parent reply other threads:[~2008-06-06 12:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-04 11:00 Locking in the (now generic) GPIO infrastructure? Leon Woestenberg
2008-06-06 8:52 ` Russell King - ARM Linux
2008-06-06 10:28 ` Ben Dooks
2008-06-06 12:53 ` David Brownell [this message]
2008-06-06 19:23 ` Leon Woestenberg
2008-06-06 20:13 ` David Brownell
2008-06-07 11:52 ` Mikael Pettersson
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=200806060553.48057.david-b@pacbell.net \
--to=david-b@pacbell.net \
--cc=leon.woestenberg@gmail.com \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-kernel@vger.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 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.