Re: [PATCH 1/24] make atomic_read() behave consistently on alpha

From: Segher Boessenkool
Date: Thu Aug 09 2007 - 15:26:06 EST


The only safe way to get atomic accesses is to write
assembler code. Are there any downsides to that? I don't
see any.

The assumption that aligned word reads and writes are atomic, and that words are aligned unless explicitly packed otherwise, is endemic in the kernel. No sane compiler violates this assumption. It's true that we're not portable to insane compilers after this patch, but we never were in the first place.
You didn't answer my question: are there any downsides to using
explicit coded-in-assembler accesses for atomic accesses? You
can handwave all you want that it should "just work" with
volatile accesses, but volatility != atomicity, volatile in C
is really badly defined, GCC never officially gave stronger
guarantees, and we have a bugzilla full of PRs to show what a
minefield it is.
So, why not use the well-defined alternative?

Because we don't need to,

You don't need to use volatile objects, or accesses through
valatile-cast pointers, either.

and it hurts performance.

Please show how it does this -- one load is one load either way,
and one store is one store.


Segher

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/