From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Nick Piggin <npiggin@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Anton Blanchard <anton@samba.org>,
akpm@linux-foundation.org, willy@linux.intel.com,
benh@kernel.crashing.org, paulus@samba.org,
linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2]: atomic_t: Remove volatile from atomic_t definition
Date: Wed, 19 May 2010 08:01:32 -0700 [thread overview]
Message-ID: <20100519150132.GJ2237@linux.vnet.ibm.com> (raw)
In-Reply-To: <20100519130327.GW2516@laptop>
On Wed, May 19, 2010 at 11:03:27PM +1000, Nick Piggin wrote:
> On Mon, May 17, 2010 at 08:01:54AM -0700, Linus Torvalds wrote:
> >
> >
> > On Mon, 17 May 2010, Anton Blanchard wrote:
> > >
> > > It turns out this bad code is a result of us defining atomic_t as a
> > > volatile int.
> >
> > Heh. Ok, as you point out in the commit message, I obviously agree with
> > this patch. "volatile" on data is evil, with the possible exception of
> > "jiffies" type things.
> >
> > So applied.
>
> I wonder, Linus, is there a good reason to use volatile for these at
> all?
>
> I asked you about it quite a while back, and IIRC you said it might
> be OK to remove volatile from bitops, provided that callers were audited
> (ie. that nobody used bitops on volatile variables).
>
> For atomic_read it shouldn't matter unless gcc is *really* bad at it.
> Ah, for atomic_read, the required semantic is surely ACCESS_ONCE, so
> that's where the volatile is needed? (maybe it would be clearer to
> explicitly use ACCESS_ONCE?)
Explicit use of ACCESS_ONCE() where needed makes a lot of sense to me,
and allows better code to be generated for initialization and cleanup
code where no other task has access to the atomic_t.
> The case I was thinking about for bitops was for multiple non-atomic
> bitops, which would be nice to combine. In reality a lot of performance
> critical code (like page allocator) bites the bullet and does the
> open-coded bitwise ops. But it would be nice if that just worked for
> __set_bit / __clear_bit too.
FWIW, a similar debate in the C-language standards committee seems to
be headed in the direction of allowing combining of adjacent atomic
operations.
Thanx, Paul
next prev parent reply other threads:[~2010-05-19 15:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-17 4:33 [PATCH 1/2]: atomic_t: Cast to volatile when accessing atomic variables Anton Blanchard
2010-05-17 4:34 ` [PATCH 2/2]: atomic_t: Remove volatile from atomic_t definition Anton Blanchard
2010-05-17 8:58 ` Heiko Carstens
2010-05-17 15:01 ` Linus Torvalds
2010-05-17 20:13 ` Jamie Lokier
2010-05-17 20:20 ` Linus Torvalds
2010-05-19 13:03 ` Nick Piggin
2010-05-19 14:55 ` Linus Torvalds
2010-05-19 15:01 ` Paul E. McKenney [this message]
2010-05-19 19:54 ` David Miller
2010-05-19 22:50 ` Paul E. McKenney
2010-05-21 5:27 ` Nick Piggin
2010-05-21 5:54 ` David Miller
2010-05-21 6:06 ` Nick Piggin
2010-05-21 6:10 ` David Miller
2010-05-21 6:44 ` Eric Dumazet
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=20100519150132.GJ2237@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=anton@samba.org \
--cc=benh@kernel.crashing.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=npiggin@suse.de \
--cc=paulus@samba.org \
--cc=torvalds@linux-foundation.org \
--cc=willy@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.