lkml.org 
[lkml]   [2006]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
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    [W:0.164 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site