Subject: Re: 2.6.24 BUG: soft lockup - CPU#X

From: Ingo Molnar <[email-masked]>
Date: Fri, 28 Mar 2008 15:09:24 +0100

* Herbert Xu <[email-masked]> wrote:

> On Fri, Mar 28, 2008 at 11:56:29AM +0100, Ingo Molnar wrote:
> >
> > hm, what's the context of this discussion? The call chain looks ok, 
> > that's how we preempt tasks from the timer tick. But other code besides 
> > the scheduler shouldnt do this.
> 
> The code under discussion is __qdisc_run from net/sched/sch_generic.c.
> 
> It runs with BH off from either process context or softirq context. As 
> it is it can keep running forever.  We were discussing adding a 
> need_resched check in there.  So the question is would need_resched 
> ever get updated while BH is disabled?

yes, certainly - as long as the timer irq is allowed. (i.e. hardirqs are 
not disabled) The scheduler tick runs from hardirq context, not from 
softirq context. (that's how we can preempt softirq threads on the -rt 
kernel for example)

	Ingo