From mboxrd@z Thu Jan 1 00:00:00 1970 From: Frederic Weisbecker Subject: Re: [PATCH v2] rtmutex: take the waiter lock with irqs off Date: Tue, 19 Nov 2013 00:59:59 +0100 Message-ID: <20131118235956.GA1810@localhost.localdomain> References: <1383794799.5441.16.camel@marge.simpson.net> <1383798668.5441.25.camel@marge.simpson.net> <20131107125923.GB24644@localhost.localdomain> <1384243595.15180.63.camel@marge.simpson.net> <20131115163008.GB12164@linutronix.de> <20131115201436.GC12164@linutronix.de> <20131118141021.GA10022@twins.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Sebastian Andrzej Siewior , Thomas Gleixner , Mike Galbraith , LKML , RT , "Paul E. McKenney" To: Peter Zijlstra Return-path: Content-Disposition: inline In-Reply-To: <20131118141021.GA10022@twins.programming.kicks-ass.net> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-rt-users.vger.kernel.org On Mon, Nov 18, 2013 at 03:10:21PM +0100, Peter Zijlstra wrote: > --- a/kernel/softirq.c > +++ b/kernel/softirq.c > @@ -746,13 +746,23 @@ void irq_exit(void) > #endif > > account_irq_exit_time(current); > - trace_hardirq_exit(); > sub_preempt_count(HARDIRQ_OFFSET); > - if (!in_interrupt() && local_softirq_pending()) > + if (!in_interrupt() && local_softirq_pending()) { > + /* > + * Temp. disable hardirq context so as not to confuse lockdep; > + * otherwise it might think we're running softirq handler from > + * hardirq context. > + * > + * Should probably sort this someplace else.. > + */ > + trace_hardirq_exit(); > invoke_softirq(); > + trace_hardirq_enter(); > + } > > tick_irq_exit(); > rcu_irq_exit(); > + trace_hardirq_exit(); Looks like a change we really want! Thanks! > } > > void raise_softirq(unsigned int nr)