On 23/02/2008, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > On Sat, 23 Feb 2008, Dmitry Adamushko wrote: > > > > it's not a LOAD that escapes *out* of the region. It's a MODIFY that gets *in*: > > > Not with the smp_wmb(). That's the whole point. > > Ie the patch I'm suggesting is sufficient is appended, and the point is > that any write before the critical region will be ordered wrt the critical > region because of the write barrier before the spinlock (which itself is a > write). Yeah, good point! (heh... I wouldn't dare to say this 'obvious thing' only to Anton Blanchard who is "the only person who always 'have a point' by definition" :-)) > This is also why I mentioned that if you have a really odd architecure > that considers spinlocks to be "outside" the normal cache coherency > domain, that would be broken, but I cannot think of a single valid case of > that, and I consider it insane. Yeah, some potential implementations come into my mind but, I guess, they are as far away from real hardware as science-fiction from science :-/ So how should we proceed with this issue? let's use your patch and declare try_to_wake_up() a 'full' mb for the case: MODIFY try_to_wake_up LOAD or MODIFY (that take place either after or inside try_to_wake_up()) so we'll fix (lots of) potentially problematic cases with a single shot. and LOAD try_to_wake_up() LOAD or MODIFY is probably not that common so we don't care. -- Best regards, Dmitry Adamushko - To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html