On Mon, 2014-01-20 at 14:58 +0100, Peter Zijlstra wrote: > On Thu, Jan 16, 2014 at 04:08:20PM -0800, Tim Chen wrote: > > Remove unnecessary operation and make the cmpxchg(lock, node, NULL) == node > > check in mcs_spin_unlock() likely() as it is likely that a race did not > > occur > > most of the time. > > It might be good to describe why the node->locked=1 is thought > unnecessary. I concur it is, but upon reading this changelog I was left > wondering and had to go read the code and run through the logic to > convince myself. > > Having done so, I'm now wondering if we think so for the same reason -- > although I'm fairly sure we are. > > The argument goes like: everybody only looks at his own ->locked value, > therefore the only one possibly interested in node->locked is the lock > owner. However the lock owner doesn't care what's in it, it simply > assumes its 1 but really doesn't care one way or another.
Yes, it is done for the same reason you mentioned. I'll update the comments better to reflect this. > > That said, a possible DEBUG mode might want to actually set it, validate > that all other linked nodes are 0 and upon unlock verify the same before > flipping next->locked to 1. I'll leave a comment to indicate this. If we need a DEBUG mode later, we can come back to add this easily. Thanks. Tim -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/