Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Herbert Xu <herbert@...>
Cc: Satyam Sharma <satyam@...>, Christoph Lameter <clameter@...>, Paul E. McKenney <paulmck@...>, Stefan Richter <stefanr@...>, Chris Snook <csnook@...>, Linux Kernel Mailing List <linux-kernel@...>, <linux-arch@...>, Linus Torvalds <torvalds@...>, <netdev@...>, Andrew Morton <akpm@...>, <ak@...>, <heiko.carstens@...>, <davem@...>, <schwidefsky@...>, <wensong@...>, <horms@...>, <wjiang@...>, <cfriesen@...>, <zlynx@...>, <rpjday@...>, <jesper.juhl@...>, <segher@...>
Date: Thursday, August 16, 2007 - 2:56 am

Herbert Xu writes:


Note that I said these are the cases _where one might want to allow
caching_, so of course adding volatile doesn't help _these_ cases.
There are of course other cases where one definitely doesn't want to
allow the compiler to cache the value, such as when polling an atomic
variable waiting for another CPU to change it, and from my inspection
so far these cases seem to be the majority.

The reasons for having "volatile" behaviour of atomic_read (whether or
not that is achieved by use of the "volatile" C keyword) are

- It matches the normal expectation based on the name "atomic_read"
- It matches the behaviour of the other atomic_* primitives
- It avoids bugs in the cases where "volatile" behaviour is required

To my mind these outweigh the small benefit for some code of the
non-volatile (caching-allowed) behaviour.  In fact it's pretty minor
either way, and since x86[-64] has this behaviour, one can expect the
potential bugs in generic code to have mostly been found, although
perhaps not all of them since x86[-64] has less aggressive reordering
of memory accesses and fewer registers in which to cache things than
some other architectures.

Paul.
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Tue Aug 14, 6:31 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Wed Aug 15, 3:59 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Thu Aug 16, 4:50 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Fri Aug 17, 6:34 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Thu Aug 16, 5:00 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Fri Aug 17, 6:38 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Fri Aug 24, 1:15 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Wed Aug 15, 8:26 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Wed Aug 15, 8:42 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Wed Aug 15, 10:07 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Thu Aug 16, 3:39 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Thu Aug 16, 2:54 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Paul Mackerras, (Thu Aug 16, 2:56 am)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Thu Aug 16, 4:20 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Fri Aug 17, 1:41 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Mon Sep 10, 2:59 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Mon Sep 10, 10:27 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Mon Sep 10, 5:36 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Fri Aug 17, 7:17 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Fri Aug 17, 8:04 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Fri Aug 17, 10:15 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Sat Aug 18, 1:18 am)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Fri Aug 17, 6:09 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Arjan van de Ven, (Mon Sep 10, 10:51 am)
Re: [PATCH] Document non-semantics of atomic_read() and atom..., Christoph Lameter, (Tue Sep 11, 3:35 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Mon Sep 10, 2:59 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Tue Aug 21, 10:59 am)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Mon Aug 20, 6:07 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Paul E. McKenney, (Thu Aug 16, 12:34 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Fri Aug 17, 6:14 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Paul E. McKenney, (Fri Aug 17, 10:31 am)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Wed Aug 15, 10:15 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Wed Aug 15, 10:17 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Paul E. McKenney, (Wed Aug 15, 10:35 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Wed Aug 15, 8:59 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Wed Aug 15, 9:41 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Paul E. McKenney, (Wed Aug 15, 10:32 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Wed Aug 15, 8:40 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Wed Aug 15, 2:31 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Wed Aug 15, 4:42 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Paul E. McKenney, (Wed Aug 15, 10:25 am)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Wed Aug 15, 4:58 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Segher Boessenkool, (Wed Aug 15, 5:07 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Paul E. McKenney, (Wed Aug 15, 12:08 pm)
Re: [PATCH 0/24] make atomic_read() behave consistently acro..., Christoph Lameter, (Tue Aug 14, 6:51 pm)