lkml.org 
[lkml]   [2006]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: Ingo's realtime_preempt patch causes kernel oops
From
Date
On Wed, 2006-05-24 at 11:52 -0400, Steven Rostedt wrote:
> > > As I said yesterday. You need a demultiplexer for such cases.
> > >
> >
> > Would IRQs stay masked until the thread has finished running?
>
> I would say yes. But the system is basically broken if you have the
> same interrupt line that needs both to be threaded and NODELAY.
>
> Basically, the best I can think to have for such a case, is all
> interrupt threads that have a shared NODELAY run at MAX_PRIO (99). So
> that they act like a NODELAY interrupt, in that they run over everything
> else, but they can still schedule.

Err. That's why you use demultiplexers. The demux handler is always
NODELAY.

shared IRQ
-> demux_handler
disable shared irq
identify interrupt sources
for all sources:
calculate the interrupt number
irq_desc[number]->handle_irq(.....)
disable/ack a particular source
if NODELAY
call handler and reenable if appropriate
else
wakeup thread
enable shared irq

That's the way you really want to do it. Granted, that this is not
possible with the current implementation of PCI cards, but for the SoC
peripherals this is usually simple to do.

The ARM tree has tons of examples which do exactly this.

tglx


-
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-24 18:05    [W:0.071 / U:1.124 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site