>> Worse still - early processor implementations actually just ignored >> the acquire/release and did a full fence all the time. Unfortunately >> this meant a lot of badly written code that used .acq when they really >> wanted .rel became legacy out in the wild - so when we made a cpu >> that strictly did the .acq or .rel ... all that code started breaking - so >> we had to back-pedal and keep the "legacy" behavior of a full fence :-( > > Ugh. Can you try what happens with the weaker release-semantics > performance-wise for that code? Do it *just* for the lockref code..
No. I can change the Linux code to say "cmpxchg.rel" here ... but the h/w will do exactly the same thing it did when I had "cmpxchg.acq". -Tony