Re: [PATCH 2/2] ix86: atomic64 assembly improvements

From: H. Peter Anvin
Date: Wed Jan 18 2012 - 12:47:54 EST


On 01/18/2012 08:50 AM, Jan Beulich wrote:

It's atomic in the same way a MOV is atomic.

Then please point me to where this is documented.

As I understand it, there is nothing keeping the CPU (or something
down the bus) from executing the unlocked version as two 32-bit
reads followed by two 32-bit writes.

The CPU could, in fact, execute the locked version at all if the
unlocked version didn't behave like that.

Assuming you meant "could not", that's not true: As long as the
external world has a way to know that both items are locked (think
of the old bus lock mechanism when there were no caches yet),
it can very well do so.

I do not question that in practice all CPUs behave as described,
but without an architectural guarantee (and with the code in
question not being used in hot paths afaik) I see no reason why
it should depend on undefined behavior.


Sorry, Jan, if you want to play the documentation lawyer game then there is very little that will get done. The code is increasingly being used in warm/hot paths and that's actually fair, so I'd like to avoid crapping it up.

There are, to my knowledge, only three companies which have brought SMP-capable x86 processors to market: Intel, AMD, and VIA and the above holds for them. A new vendor realistically can't bring a new processor to market which violates a constraint that the existing processor vendors have preserved.

It is somewhat implied in the SDM section 8.1.1 of volume 3A, but as with many other things it's not written out specifically... I suspect largely because the question hasn't been raised before.

-hpa
--
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/