From: Linus Torvalds <torvalds@linux-foundation.org>
To: Chris Friesen <cfriesen@nortel.com>
Cc: Nick Piggin <piggin@cyberone.com.au>,
Satyam Sharma <satyam@infradead.org>,
Herbert Xu <herbert@gondor.apana.org.au>,
Paul Mackerras <paulus@samba.org>,
Christoph Lameter <clameter@sgi.com>,
Chris Snook <csnook@redhat.com>,
Ilpo Jarvinen <ilpo.jarvinen@helsinki.fi>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Stefan Richter <stefanr@s5r6.in-berlin.de>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-arch@vger.kernel.org, Netdev <netdev@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
ak@suse.de, heiko.carstens@de.ibm.com,
David Miller <davem@davemloft.net>,
schwidefsky@de.ibm.com, wensong@linux-vs.org, horms@verge.net.au,
wjiang@resilience.com, zlynx@acm.org, rpjday@mindspring.com,
jesper.juhl@gmail.com, segher@kernel.crashing.org
Subject: Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
Date: Fri, 17 Aug 2007 12:08:31 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.0.999.0708171201130.30176@woody.linux-foundation.org> (raw)
In-Reply-To: <46C5EDF9.3090507@nortel.com>
On Fri, 17 Aug 2007, Chris Friesen wrote:
>
> I assume you mean "except for IO-related code and 'random' values like
> jiffies" as you mention later on?
Yes. There *are* valid uses for "volatile", but they have remained the
same for the last few years:
- "jiffies"
- internal per-architecture IO implementations that can do them as normal
stores.
> I assume other values set in interrupt handlers would count as "random"
> from a volatility perspective?
I don't really see any valid case. I can imagine that you have your own
"jiffy" counter in a driver, but what's the point, really? I'd suggest not
using volatile, and using barriers instead.
>
> > So anybody who argues for "volatile" fixing bugs is fundamentally
> > incorrect. It does NO SUCH THING. By arguing that, such people only
> > show that you have no idea what they are talking about.
> What about reading values modified in interrupt handlers, as in your
> "random" case? Or is this a bug where the user of atomic_read() is
> invalidly expecting a read each time it is called?
Quite frankly, the biggest reason for using "volatile" on jiffies was
really historic. So even the "random" case is not really a very strong
one. You'll notice that anybody who is actually careful will be using
sequence locks for the jiffy accesses, if only because the *full* jiffy
count is actually a 64-bit value, and so you cannot get it atomically on a
32-bit architecture even on a single CPU (ie a timer interrupt might
happen in between reading the low and the high word, so "volatile" is only
used for the low 32 bits).
So even for jiffies, we actually have:
extern u64 __jiffy_data jiffies_64;
extern unsigned long volatile __jiffy_data jiffies;
where the *real* jiffies is not volatile: the volatile one is using linker
tricks to alias the low 32 bits:
- arch/i386/kernel/vmlinux.lds.S:
...
jiffies = jiffies_64;
...
and the only reason we do all these games is (a) it works and (b) it's
legacy.
Note how I do *not* say "(c) it's a good idea".
Linus
next prev parent reply other threads:[~2007-08-17 19:11 UTC|newest]
Thread overview: 315+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-09 13:14 [PATCH 0/24] make atomic_read() behave consistently across all architectures Chris Snook
2007-08-09 12:41 ` Arnd Bergmann
2007-08-09 14:29 ` Chris Snook
2007-08-09 15:30 ` Arnd Bergmann
2007-08-14 22:31 ` Christoph Lameter
2007-08-14 22:45 ` Chris Snook
2007-08-14 22:51 ` Christoph Lameter
2007-08-14 23:08 ` Satyam Sharma
2007-08-14 23:04 ` Chris Snook
2007-08-14 23:14 ` Christoph Lameter
2007-08-15 6:49 ` Herbert Xu
2007-08-15 6:49 ` Herbert Xu
2007-08-15 8:18 ` Heiko Carstens
2007-08-15 13:53 ` Stefan Richter
2007-08-15 14:35 ` Satyam Sharma
2007-08-15 14:52 ` Herbert Xu
2007-08-15 16:09 ` Stefan Richter
2007-08-15 16:27 ` Paul E. McKenney
2007-08-15 17:13 ` Satyam Sharma
2007-08-15 18:31 ` Segher Boessenkool
2007-08-15 18:57 ` Paul E. McKenney
2007-08-15 19:54 ` Satyam Sharma
2007-08-15 20:17 ` Paul E. McKenney
2007-08-15 20:52 ` Segher Boessenkool
2007-08-15 22:42 ` Paul E. McKenney
2007-08-15 20:47 ` Segher Boessenkool
2007-08-16 0:36 ` Satyam Sharma
2007-08-16 0:32 ` your mail Herbert Xu
2007-08-16 0:58 ` [PATCH 0/24] make atomic_read() behave consistently across all architectures Satyam Sharma
2007-08-16 0:51 ` Herbert Xu
2007-08-16 1:18 ` Satyam Sharma
2007-08-16 1:38 ` Segher Boessenkool
2007-08-15 21:05 ` [PATCH 0/24] make atomic_read() behave consistently across all architectures Segher Boessenkool
2007-08-15 22:44 ` Paul E. McKenney
2007-08-16 1:23 ` Segher Boessenkool
2007-08-16 2:22 ` Paul E. McKenney
2007-08-15 19:58 ` Stefan Richter
2007-08-16 0:39 ` [PATCH] i386: Fix a couple busy loops in mach_wakecpu.h:wait_for_init_deassert() Satyam Sharma
2007-08-24 11:59 ` Denys Vlasenko
2007-08-24 12:07 ` Andi Kleen
2007-08-24 12:12 ` Kenn Humborg
2007-08-24 12:12 ` Kenn Humborg
2007-08-24 14:25 ` Denys Vlasenko
2007-08-24 17:34 ` Linus Torvalds
2007-08-24 13:30 ` Satyam Sharma
2007-08-24 17:06 ` Christoph Lameter
2007-08-24 20:26 ` Denys Vlasenko
2007-08-24 20:34 ` Chris Snook
2007-08-24 16:19 ` Luck, Tony
2007-08-24 16:19 ` Luck, Tony
2007-08-15 16:13 ` [PATCH 0/24] make atomic_read() behave consistently across all architectures Chris Snook
2007-08-15 23:40 ` Herbert Xu
2007-08-15 23:51 ` Paul E. McKenney
2007-08-16 1:30 ` Segher Boessenkool
2007-08-16 2:30 ` Paul E. McKenney
2007-08-16 19:33 ` Segher Boessenkool
2007-08-16 1:26 ` Segher Boessenkool
2007-08-16 2:23 ` Nick Piggin
2007-08-16 19:32 ` Segher Boessenkool
2007-08-17 2:19 ` Nick Piggin
2007-08-17 3:16 ` Paul Mackerras
2007-08-17 3:32 ` Nick Piggin
2007-08-17 3:50 ` Linus Torvalds
2007-08-17 23:59 ` Paul E. McKenney
2007-08-18 0:09 ` Herbert Xu
2007-08-18 1:08 ` Paul E. McKenney
2007-08-18 1:24 ` Christoph Lameter
2007-08-18 1:41 ` Satyam Sharma
2007-08-18 4:13 ` Linus Torvalds
2007-08-18 13:36 ` Satyam Sharma
2007-08-18 21:54 ` Paul E. McKenney
2007-08-18 22:41 ` Linus Torvalds
2007-08-18 23:19 ` Paul E. McKenney
2007-08-24 12:19 ` Denys Vlasenko
2007-08-24 17:19 ` Linus Torvalds
2007-08-18 21:56 ` Paul E. McKenney
2007-08-20 13:31 ` Chris Snook
2007-08-20 22:04 ` Segher Boessenkool
2007-08-20 22:48 ` Russell King
2007-08-20 23:02 ` Segher Boessenkool
2007-08-21 0:05 ` Paul E. McKenney
2007-08-21 7:08 ` Russell King
2007-08-21 7:05 ` Russell King
2007-08-21 9:33 ` Paul Mackerras
2007-08-21 11:37 ` Andi Kleen
2007-08-21 14:48 ` Segher Boessenkool
2007-08-21 16:16 ` Paul E. McKenney
2007-08-21 22:51 ` Valdis.Kletnieks
2007-08-22 0:50 ` Paul E. McKenney
2007-08-22 21:38 ` Adrian Bunk
2007-08-21 14:39 ` Segher Boessenkool
2007-08-17 3:42 ` Linus Torvalds
2007-08-17 5:18 ` Paul E. McKenney
2007-08-17 5:56 ` Satyam Sharma
2007-08-17 7:26 ` Nick Piggin
2007-08-17 8:47 ` Satyam Sharma
2007-08-17 9:15 ` Nick Piggin
2007-08-17 10:12 ` Satyam Sharma
2007-08-17 12:14 ` Nick Piggin
2007-08-17 13:05 ` Satyam Sharma
2007-08-17 9:48 ` Paul Mackerras
2007-08-17 10:23 ` Satyam Sharma
2007-08-17 22:49 ` Segher Boessenkool
2007-08-17 23:51 ` Satyam Sharma
2007-08-17 23:55 ` Segher Boessenkool
2007-08-17 6:42 ` Geert Uytterhoeven
2007-08-17 8:52 ` Andi Kleen
2007-08-17 10:08 ` Satyam Sharma
2007-08-17 22:29 ` Segher Boessenkool
2007-08-17 17:37 ` Segher Boessenkool
2007-08-14 23:26 ` Paul E. McKenney
2007-08-15 10:35 ` Stefan Richter
2007-08-15 12:04 ` Herbert Xu
2007-08-15 12:31 ` Satyam Sharma
2007-08-15 13:08 ` Stefan Richter
2007-08-15 13:11 ` Stefan Richter
2007-08-15 13:47 ` Satyam Sharma
2007-08-15 14:25 ` Paul E. McKenney
2007-08-15 15:33 ` Herbert Xu
2007-08-15 16:08 ` Paul E. McKenney
2007-08-15 17:18 ` Satyam Sharma
2007-08-15 17:33 ` Paul E. McKenney
2007-08-15 18:05 ` Satyam Sharma
2007-08-15 18:19 ` David Howells
2007-08-15 18:45 ` Paul E. McKenney
2007-08-15 23:41 ` Herbert Xu
2007-08-15 23:53 ` Paul E. McKenney
2007-08-16 0:12 ` Herbert Xu
2007-08-16 0:23 ` Paul E. McKenney
2007-08-16 0:30 ` Herbert Xu
2007-08-16 0:49 ` Paul E. McKenney
2007-08-16 0:53 ` Herbert Xu
2007-08-16 1:14 ` Paul E. McKenney
2007-08-15 17:55 ` Satyam Sharma
2007-08-15 19:07 ` Paul E. McKenney
2007-08-15 21:07 ` Segher Boessenkool
2007-08-15 20:58 ` Segher Boessenkool
2007-08-15 18:31 ` Segher Boessenkool
2007-08-15 19:40 ` Satyam Sharma
2007-08-15 20:42 ` Segher Boessenkool
2007-08-16 1:23 ` Satyam Sharma
2007-08-15 23:22 ` Paul Mackerras
2007-08-16 0:26 ` Christoph Lameter
2007-08-16 0:34 ` Paul Mackerras
2007-08-16 0:40 ` Christoph Lameter
2007-08-16 0:39 ` Paul E. McKenney
2007-08-16 0:42 ` Christoph Lameter
2007-08-16 0:53 ` Paul E. McKenney
2007-08-16 0:59 ` Christoph Lameter
2007-08-16 1:14 ` Paul E. McKenney
2007-08-16 1:41 ` Christoph Lameter
2007-08-16 2:15 ` Satyam Sharma
2007-08-16 2:08 ` Herbert Xu
2007-08-16 2:18 ` Christoph Lameter
2007-08-16 3:23 ` Paul Mackerras
2007-08-16 3:33 ` Herbert Xu
2007-08-16 3:48 ` Paul Mackerras
2007-08-16 4:03 ` Herbert Xu
2007-08-16 4:34 ` Paul Mackerras
2007-08-16 5:37 ` Herbert Xu
2007-08-16 6:00 ` Paul Mackerras
2007-08-16 18:50 ` Christoph Lameter
2007-08-16 18:48 ` Christoph Lameter
2007-08-16 19:44 ` Segher Boessenkool
2007-08-16 2:18 ` Chris Friesen
2007-08-16 2:32 ` Paul E. McKenney
2007-08-16 1:51 ` Paul Mackerras
2007-08-16 2:00 ` Herbert Xu
2007-08-16 2:05 ` Paul Mackerras
2007-08-16 2:11 ` Herbert Xu
2007-08-16 2:35 ` Paul E. McKenney
2007-08-16 3:15 ` Paul Mackerras
2007-08-16 3:43 ` Herbert Xu
2007-08-16 2:15 ` Christoph Lameter
2007-08-16 2:17 ` Christoph Lameter
2007-08-16 2:33 ` Satyam Sharma
2007-08-16 3:01 ` Satyam Sharma
2007-08-16 4:11 ` Paul Mackerras
2007-08-16 5:39 ` Herbert Xu
2007-08-16 6:56 ` Paul Mackerras
2007-08-16 7:09 ` Herbert Xu
2007-08-16 8:06 ` Stefan Richter
2007-08-16 8:10 ` Herbert Xu
2007-08-16 9:54 ` Stefan Richter
2007-08-16 10:31 ` Stefan Richter
2007-08-16 10:42 ` Herbert Xu
2007-08-16 16:34 ` Paul E. McKenney
2007-08-16 23:59 ` Herbert Xu
2007-08-17 1:01 ` Paul E. McKenney
2007-08-17 7:39 ` Satyam Sharma
2007-08-17 14:31 ` Paul E. McKenney
2007-08-17 18:31 ` Satyam Sharma
2007-08-17 18:56 ` Paul E. McKenney
2007-08-17 3:15 ` Nick Piggin
2007-08-17 4:02 ` Paul Mackerras
2007-08-17 4:39 ` Nick Piggin
2007-08-17 7:25 ` Stefan Richter
2007-08-17 8:06 ` Nick Piggin
2007-08-17 8:58 ` Satyam Sharma
2007-08-17 9:15 ` Nick Piggin
2007-08-17 10:03 ` Satyam Sharma
2007-08-17 11:50 ` Nick Piggin
2007-08-17 12:50 ` Satyam Sharma
2007-08-17 12:56 ` Nick Piggin
2007-08-18 2:15 ` Satyam Sharma
2007-08-17 10:48 ` Stefan Richter
2007-08-17 10:58 ` Stefan Richter
2007-08-18 14:35 ` LDD3 pitfalls (was Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures) Stefan Richter
2007-08-20 13:28 ` Chris Snook
2007-08-17 22:14 ` [PATCH 0/24] make atomic_read() behave consistently across all architectures Segher Boessenkool
2007-08-17 5:04 ` Paul Mackerras
2007-08-16 10:35 ` Herbert Xu
2007-08-16 19:48 ` Chris Snook
2007-08-17 0:02 ` Herbert Xu
2007-08-17 2:04 ` Chris Snook
2007-08-17 2:13 ` Herbert Xu
2007-08-17 2:31 ` Nick Piggin
2007-08-17 5:09 ` Paul Mackerras
2007-08-17 5:32 ` Herbert Xu
2007-08-17 5:41 ` Paul Mackerras
2007-08-17 8:28 ` Satyam Sharma
2007-08-16 14:48 ` Ilpo Järvinen
2007-08-16 16:19 ` Stefan Richter
2007-08-16 19:55 ` Chris Snook
2007-08-16 20:20 ` Christoph Lameter
2007-08-17 1:02 ` Paul E. McKenney
2007-08-17 1:28 ` Herbert Xu
2007-08-17 5:07 ` Paul E. McKenney
2007-08-17 2:16 ` Paul Mackerras
2007-08-17 3:03 ` Linus Torvalds
2007-08-17 3:43 ` Paul Mackerras
2007-08-17 3:53 ` Herbert Xu
2007-08-17 6:26 ` Satyam Sharma
2007-08-17 8:38 ` Nick Piggin
2007-08-17 9:14 ` Satyam Sharma
2007-08-17 9:31 ` Nick Piggin
2007-08-17 10:55 ` Satyam Sharma
2007-08-17 12:39 ` Nick Piggin
2007-08-17 13:36 ` Satyam Sharma
2007-08-17 16:48 ` Linus Torvalds
2007-08-17 18:50 ` Chris Friesen
2007-08-17 18:54 ` Arjan van de Ven
2007-08-17 19:49 ` Paul E. McKenney
2007-08-17 19:49 ` Arjan van de Ven
2007-08-17 20:12 ` Paul E. McKenney
2007-08-17 19:08 ` Linus Torvalds [this message]
2007-08-20 13:15 ` Chris Snook
2007-08-20 13:32 ` Herbert Xu
2007-08-20 13:38 ` Chris Snook
2007-08-20 22:07 ` Segher Boessenkool
2007-08-21 5:46 ` Linus Torvalds
2007-08-21 7:04 ` David Miller
2007-08-21 13:50 ` Chris Snook
2007-08-21 14:59 ` Segher Boessenkool
2007-08-21 16:31 ` Satyam Sharma
2007-08-21 16:43 ` Linus Torvalds
2007-09-09 18:02 ` Denys Vlasenko
2007-09-09 18:18 ` Arjan van de Ven
2007-09-10 10:56 ` Denys Vlasenko
2007-09-10 11:15 ` Herbert Xu
2007-09-10 12:22 ` Kyle Moffett
2007-09-10 13:38 ` Denys Vlasenko
2007-09-10 14:16 ` Denys Vlasenko
2007-09-10 15:09 ` Linus Torvalds
2007-09-10 16:46 ` Denys Vlasenko
2007-09-10 19:59 ` Kyle Moffett
2007-09-10 18:59 ` Christoph Lameter
2007-09-10 23:19 ` [PATCH] Document non-semantics of atomic_read() and atomic_set() Chris Snook
2007-09-10 23:44 ` Paul E. McKenney
2007-09-11 19:35 ` Christoph Lameter
2007-09-10 14:51 ` [PATCH 0/24] make atomic_read() behave consistently across all architectures Arjan van de Ven
2007-09-10 14:38 ` Denys Vlasenko
2007-09-10 17:02 ` Arjan van de Ven
2007-08-17 11:08 ` Stefan Richter
2007-08-17 22:09 ` Segher Boessenkool
2007-08-17 17:41 ` Segher Boessenkool
2007-08-17 18:38 ` Satyam Sharma
2007-08-17 23:17 ` Segher Boessenkool
2007-08-17 23:55 ` Satyam Sharma
2007-08-18 0:04 ` Segher Boessenkool
2007-08-18 1:56 ` Satyam Sharma
2007-08-18 2:15 ` Segher Boessenkool
2007-08-18 3:33 ` Satyam Sharma
2007-08-18 5:18 ` Segher Boessenkool
2007-08-18 13:20 ` Satyam Sharma
2007-09-10 18:59 ` Christoph Lameter
2007-09-10 20:54 ` Paul E. McKenney
2007-09-10 21:36 ` Christoph Lameter
2007-09-10 21:50 ` Paul E. McKenney
2007-09-11 2:27 ` Segher Boessenkool
2007-08-16 21:08 ` Luck, Tony
2007-08-16 21:08 ` Luck, Tony
2007-08-16 19:55 ` Chris Snook
2007-08-16 18:54 ` Christoph Lameter
2007-08-16 20:07 ` Paul E. McKenney
2007-08-16 3:05 ` Paul Mackerras
2007-08-16 19:39 ` Segher Boessenkool
2007-08-16 2:07 ` Segher Boessenkool
2007-08-24 12:50 ` Denys Vlasenko
2007-08-24 17:15 ` Christoph Lameter
2007-08-24 20:21 ` Denys Vlasenko
2007-08-16 3:37 ` Bill Fink
2007-08-16 5:20 ` Satyam Sharma
2007-08-16 5:57 ` Satyam Sharma
2007-08-16 9:25 ` Satyam Sharma
2007-08-16 21:00 ` Segher Boessenkool
2007-08-17 4:32 ` Satyam Sharma
2007-08-17 22:38 ` Segher Boessenkool
2007-08-18 14:42 ` Satyam Sharma
2007-08-16 20:50 ` Segher Boessenkool
2007-08-16 22:40 ` David Schwartz
2007-08-17 4:36 ` Satyam Sharma
2007-08-17 4:24 ` Satyam Sharma
2007-08-17 22:34 ` Segher Boessenkool
2007-08-15 19:59 ` Christoph Lameter
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=alpine.LFD.0.999.0708171201130.30176@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=cfriesen@nortel.com \
--cc=clameter@sgi.com \
--cc=csnook@redhat.com \
--cc=davem@davemloft.net \
--cc=heiko.carstens@de.ibm.com \
--cc=herbert@gondor.apana.org.au \
--cc=horms@verge.net.au \
--cc=ilpo.jarvinen@helsinki.fi \
--cc=jesper.juhl@gmail.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=paulus@samba.org \
--cc=piggin@cyberone.com.au \
--cc=rpjday@mindspring.com \
--cc=satyam@infradead.org \
--cc=schwidefsky@de.ibm.com \
--cc=segher@kernel.crashing.org \
--cc=stefanr@s5r6.in-berlin.de \
--cc=wensong@linux-vs.org \
--cc=wjiang@resilience.com \
--cc=zlynx@acm.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.