Thread (2 messages) 2 messages, 2 authors, 2015-02-12

Re: [PATCH] x86 spinlock: Fix memory corruption on completing completions

From: Jeremy Fitzhardinge <hidden>
Date: 2015-02-12 07:08:03
Also in: kvm

Possibly related (same subject, not in this thread)

On 02/11/2015 03:28 PM, Linus Torvalds wrote:

On Feb 11, 2015 3:15 PM, "Jeremy Fitzhardinge" <jeremy@goop.org
<mailto:jeremy@goop.org>> wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help