On 02/11/2015 03:28 PM, Linus Torvalds
wrote:
On Feb 11, 2015 3:15 PM, "Jeremy Fitzhardinge" <jeremy@xxxxxxxx>
wrote:
>
> Right now it needs to be a locked operation to prevent
read-reordering.
> x86 memory ordering rules state that all writes are seen in
a globally
> consistent order, and are globally ordered wrt reads *on
the same
> addresses*, but reads to different addresses can be
reordered wrt to writes.
The modern x86 rules are actually much tighter than
that.
Every store is a release, and every load is an
acquire. So a non-atomic store is actually a perfectly fine
unlock. All preceding stores will be seen by other cpu's before
the unlock, and while reads can pass stores, they only pass
*earlier* stores.
Right, so in this particular instance, the read of the SLOWPATH flag
*can't* pass the previous unlock store, hence the need for an atomic
unlock or some other mechanism to prevent the read from being
reordered.
J
|
_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization