lkml.org 
[lkml]   [2008]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 0/7] Boot IRQ quirks and rerouting
From
Date

On Wed, 2008-06-04 at 23:07 +0100, Maciej W. Rozycki wrote:
> On Wed, 4 Jun 2008, Jon Masters wrote:
>
> > I disagree. I think it's now actually the *inverse*. It /used/ to be
> > harder, because you didn't have a context in which you could do many
> > things (so you need to schedule some kind of deferred work), but
> > actually, it'll become a lot more attractive with device threads.
>
> Well, I mean it's easier to do all the handling sequentially in the
> hardirq context than split the thing and deal with all the communication,
> locking, possible races, etc. so people avoid it unless really forced to.
> In principle all the interrupt handlers could be split like this except
> those really, really tiny ones or where latency is absolutely critical.
> Yet it often does not happen.

I'm really not proposing a return to top/bottom halves...

*). Top level handler is *tiny*. It's job is to get called (along with
every other such function registered for a particular IRQ line) and
determine if its device generated the interrupt, and to acknowledge,
preventing the device from asserting the IRQ line any longer.

The top part is called in hard IRQ context, even on RT.

*). Bottom level is automatically scheduled by the kernel in response to
the top part acknowledging that its device caused the interrupt.

The bottom part is run inside a dedicated kernel thread.

So pretty much everything is in the thread.

Jon.




\
 
 \ /
  Last update: 2008-06-05 00:35    [W:0.157 / U:0.340 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site