• Peter Zijlstra's avatar
    futex: Change locking rules · 734009e9
    Peter Zijlstra authored
    Currently futex-pi relies on hb->lock to serialize everything. But hb->lock
    creates another set of problems, especially priority inversions on RT where
    hb->lock becomes a rt_mutex itself.
    
    The rt_mutex::wait_lock is the most obvious protection for keeping the
    futex user space value and the kernel internal pi_state in sync.
    
    Rework and document the locking so rt_mutex::wait_lock is held accross all
    operations which modify the user space value and the pi state.
    
    This allows to invoke rt_mutex_unlock() (including deboost) without holding
    hb->lock as a next step.
    
    Nothing yet relies on the new locking rules.
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: juri.lelli@arm.com
    Cc: bigeasy@linutronix.de
    Cc: xlpang@redhat.com
    Cc: rostedt@goodmis.org
    Cc: mathieu.desnoyers@efficios.com
    Cc: jdesfossez@efficios.com
    Cc: dvhart@infradead.org
    Cc: bristot@redhat.com
    Link: http://lkml.kernel.org/r/20170322104151.751993333@infradead.orgSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    734009e9
futex.c 91.7 KB