Re: [PATCH RT 2/4] Revert "timers: do not raise softirq unconditionally"
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: 2015-03-24 18:10:47
Also in:
lkml
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: 2015-03-24 18:10:47
Also in:
lkml
* Steven Rostedt | 2015-03-19 12:26:11 [-0400]:
On Thu, 19 Mar 2015 09:17:09 +0100 Mike Galbraith [off-list ref] wrote:quoted
(aw crap, let's go shopping)... so why is the one in timer.c ok?It's not. Sebastian, you said there were no other cases of rt_mutexes being taken in hard irq context. Looks like timer.c has one.
If you refer to switch_timer_base() then this one is not taken in
hard-irq context. The callchain is:
lock_timer_base() (with spin_lock_irqsave(&base->lock, *flags) which
makes it a sleeping lock or lockdep would scream)
-> switch_timer_base()
-> spin_trylock() (not in hardirq conteyt)
So perhaps the real fix is to get that special case of ownership in hard interrupt context?
I'm really not sure we want to keep doing this.
-- Steve
Sebastian