lkml.org 
[lkml]   [2006]   [May]   [12]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateFri, 12 May 2006 10:16:28 +0200
FromIngo Molnar <>
SubjectRe: rt20 patch question
* Steven Rostedt <rostedt@goodmis.org> wrote:

> Ingo,
> 
> I traced this down.  It is caused by the disable_irq in vortex_timer 
> that is called via run_timer_softirq.
> 
> disable_irq can call synchronize_irq which can schedule.
> 
> And thus you get this bug since we are in a softirq.

hm. When there are threaded interrupts, we quite naturally have to 
synchronize via scheduling, in synchronize_irq() - the interrupt we are 
waiting on might be scheduled away!

> So I guess we have a case that we can schedule, but while atomic and 
> BUG when it's really not bad.  Should we add something like this:

that's not good enough, we must not schedule with the preempt_count() 
set.

one solution would be to forbid disable_irq() from softirq contexts, and 
to convert the vortex timeout function to a workqueue and use the 
*_delayed_work() APIs to drive it - and cross fingers there's not many 
places to fix.

another solution would be to make softirqs preemptible if they are 
threaded. I'm a bit uneasy about that though. In that case we'd also 
have to make HARDIRQ threading dependent on softirq threading, in the 
Kconfig.

	Ingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-05-12 10:19    [from the cache]
©2003-2008