Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1421868

Re: [RFC][PATCH 5/8] rtmutex: Clean up

From Peter Zijlstra <peterz@infradead.org>
Newsgroups linux.kernel
Subject Re: [RFC][PATCH 5/8] rtmutex: Clean up
Date 2016-06-14 14:40 +0200
Message-ID <rJVNn-4Px-9@gated-at.bofh.it> (permalink)
References <rHvDI-7fg-35@gated-at.bofh.it> <rHvNo-7ix-25@gated-at.bofh.it> <rJVkl-4Ei-13@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Tue, Jun 14, 2016 at 01:08:13PM +0100, Juri Lelli wrote:
> > +	postunlock = rt_mutex_futex_unlock(&pi_state->pi_mutex, &wake_q);
> >  
> >  	/*
> >  	 * First unlock HB so the waiter does not spin on it once he got woken
> > +	 * up. Then wakeup the waiter by calling rt_mutex_postunlock(). Priority
> > +	 * is already adjusted and preemption is disabled to avoid inversion.
> >  	 */
> >  	spin_unlock(&hb->lock);
> >  
> > +	if (postunlock)
> > +		rt_mutex_postunlock(&wake_q);
> 
> I'm most probably missing something, but don't we still need to call
> wake_up_q() even when postunlock is false? IIUC, we were always doing
> that, rt_mutex_postunlock(), before this change (only calling
> preempt_enable() was conditional).

Note that rt_mutex_slowunlock() only uses wake_q on the true path. When
it returns false, it will not have placed a task to wake up.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: [RFC][PATCH 5/8] rtmutex: Clean up Juri Lelli <juri.lelli@arm.com> - 2016-06-14 14:10 +0200
  Re: [RFC][PATCH 5/8] rtmutex: Clean up Peter Zijlstra <peterz@infradead.org> - 2016-06-14 14:40 +0200
    Re: [RFC][PATCH 5/8] rtmutex: Clean up Juri Lelli <juri.lelli@arm.com> - 2016-06-14 14:50 +0200

csiph-web