RE: Why no interrupt priorities?

Grover, Andrew
2004-02-27T17:46:09Z

> From: Helge Hafting [mailto:helgehaf@aitel.hist.no]
> Grover, Andrew wrote:
> > Is the assumption that hardirq handlers are superfast also
> the reason
> > why Linux calls all handlers on a shared interrupt, even if
> the first
> > handler reports it was for its device?
> >
> No, it is the other way around. hardirq handlers have to be superfast
> because linux usually _have to_ call all the handlers of a shared irq.
>
> The fact that one device did indeed have an interrupt for us
> doesn't mean
> that the others didn't. So all of them have to be checked to be safe.

If a device later in the handler chain is also interrupting, then the
interrupt will immediately trigger again. The irq line will remain
asserted until nobody is asserting it.

If the LAST guy in the chain is the one with the interrupt, then you
basically get today's ISR "call each handler" behavior, but it should be
possible to in some cases to get less time spent in do_IRQ.

It is a trivial change to implement this behavior, but benchmarking
would have to be done to verify it really would be a worthwhile
optimization.

Regards -- Andy