On Fri, 2014-06-13 at 11:44 +0200, Thomas Gleixner wrote: > Subject: futex: Simplify futex_lock_pi_atomic() and make it more robust > From: Thomas Gleixner <[email protected]> > Date: Wed, 11 Jun 2014 20:45:41 -0000 > > futex_lock_pi_atomic() is a maze of retry hoops and loops. > > Reduce it to simple and understandable states: > > First step is to lookup existing waiters (state) in the kernel. > > If there is an existing waiter, validate it and attach to it. > > If there is no existing waiter, check the user space value > > If the TID encoded in the user space value is 0, take over the futex > preserving the owner died bit. > > If the TID encoded in the user space value is != 0, lookup the owner > task, validate it and attach to it. > > Reduces text size by 128 bytes on x8664. > > Signed-off-by: Thomas Gleixner <[email protected]> > Cc: Peter Zijlstra <[email protected]> > Cc: Darren Hart <[email protected]> > Cc: Davidlohr Bueso <[email protected]> > Cc: Kees Cook <[email protected]> > Cc: [email protected] > Link: http://lkml.kernel.org/r/[email protected] > Signed-off-by: Thomas Gleixner <[email protected]> > --- > > V2: Fixed the brown paperbag bug of V1
I confirm this v2 fixes the issue. Passes 5 hr pounding on my 80-core system. Unsurprisingly, I didn't see any performance regressions either. Thanks, Davidlohr -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

