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, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>