On 02/18/2013 08:26 PM, Steven Rostedt wrote: > On Mon, 2013-02-18 at 19:55 -0500, Sasha Levin wrote: >> Hi all, >> >> While fuzzing with trinity inside a KVM tools guest, running today's -next, >> I've stumbled on the following spew. >> >> I've cc'ed Steven Rostedt since the culprit looks like "sched: Enable >> interrupts in idle_balance()". > > You're correct. Interrupts are ok but softirqs must still be disabled. > > The following patch should work. > > -- Steve > > Only compiled tested: > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 0fcdbff..a31174c 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -5222,9 +5222,9 @@ void idle_balance(int this_cpu, struct rq *this_rq) > update_rq_runnable_avg(this_rq, 1); > > /* > - * Drop the rq->lock, but keep preempt disabled. > + * Drop the rq->lock, but keep softirqs disabled. > */ > - preempt_disable(); > + local_bh_disable(); > raw_spin_unlock_irq(&this_rq->lock); > > update_blocked_averages(this_cpu); > @@ -5253,7 +5253,7 @@ void idle_balance(int this_cpu, struct rq *this_rq) > rcu_read_unlock(); > > raw_spin_lock_irq(&this_rq->lock); > - preempt_enable(); > + local_bh_enable();
I have to admit, I'm slightly confused with the patch: there's a raw_spin_lock_irq() followed by local_bh_enable(). afaik it's illegal to call local_bh_enable() with interrupts disabled. Thanks, Sasha -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

