Re: [PATCH 1/1] futex: don't spin waiting for PF_EXITING -> PF_EXITPIDONE transition

2015-02-27 Thread Peter Zijlstra
On Fri, Feb 27, 2015 at 10:52:40AM +0100, Peter Zijlstra wrote: > On Mon, Feb 16, 2015 at 09:13:36PM +0100, Oleg Nesterov wrote: > > > diff --git a/kernel/futex.c b/kernel/futex.c > > index b101381..c1104a8 100644 > > +++ b/kernel/futex.c > > @@ -716,11 +716,13 @@ void exit_pi_state_list(struct

Re: [PATCH 1/1] futex: don't spin waiting for PF_EXITING -> PF_EXITPIDONE transition

2015-02-27 Thread Peter Zijlstra
On Mon, Feb 16, 2015 at 09:13:36PM +0100, Oleg Nesterov wrote: > diff --git a/kernel/futex.c b/kernel/futex.c > index b101381..c1104a8 100644 > +++ b/kernel/futex.c > @@ -716,11 +716,13 @@ void exit_pi_state_list(struct task_struct *curr) > > if (!futex_cmpxchg_enabled) >

Re: [PATCH 1/1] futex: don't spin waiting for PF_EXITING - PF_EXITPIDONE transition

2015-02-27 Thread Peter Zijlstra
On Mon, Feb 16, 2015 at 09:13:36PM +0100, Oleg Nesterov wrote: diff --git a/kernel/futex.c b/kernel/futex.c index b101381..c1104a8 100644 +++ b/kernel/futex.c @@ -716,11 +716,13 @@ void exit_pi_state_list(struct task_struct *curr) if (!futex_cmpxchg_enabled) return;

Re: [PATCH 1/1] futex: don't spin waiting for PF_EXITING - PF_EXITPIDONE transition

2015-02-27 Thread Peter Zijlstra
On Fri, Feb 27, 2015 at 10:52:40AM +0100, Peter Zijlstra wrote: On Mon, Feb 16, 2015 at 09:13:36PM +0100, Oleg Nesterov wrote: diff --git a/kernel/futex.c b/kernel/futex.c index b101381..c1104a8 100644 +++ b/kernel/futex.c @@ -716,11 +716,13 @@ void exit_pi_state_list(struct task_struct

[PATCH 1/1] futex: don't spin waiting for PF_EXITING -> PF_EXITPIDONE transition

2015-02-16 Thread Oleg Nesterov
It is absolutely not clear why attach_to_pi_owner() returns -EAGAIN which triggers "retry" if the lock owner is PF_EXITING but not PF_EXITPIDONE. This burns CPU for no reason and this can even livelock if the rt_task() caller preempts a PF_EXITING owner. Remove the PF_EXITING check altogether. We

[PATCH 1/1] futex: don't spin waiting for PF_EXITING - PF_EXITPIDONE transition

2015-02-16 Thread Oleg Nesterov
It is absolutely not clear why attach_to_pi_owner() returns -EAGAIN which triggers retry if the lock owner is PF_EXITING but not PF_EXITPIDONE. This burns CPU for no reason and this can even livelock if the rt_task() caller preempts a PF_EXITING owner. Remove the PF_EXITING check altogether. We