[openib-general] Re: Disabling IRQ #201 message

Grant Grundler iod00d at hp.com
Fri Feb 4 09:48:03 PST 2005


On Wed, Feb 02, 2005 at 09:47:52PM +0200, Michael S. Tsirkin wrote:
> > The interrupt handler needs to guarantee it has handled
> > pending work and communicatied that back to the card so
> > IRQ line is not asserted.
> 
> Well, the handler did this, but while it was doing other things
> another interrupt got asserted.

I realize there is a race condition between handling events
and getting interrupts.

> > > I propose returning IRQ_HANDLED *always* in regular interrupt.
> > 
> > This totally breaks Shared IRQ support.
> 
> Why does it "totally break" it?

Sorry - my brainfart - I'm wrong. It's doesn't "totally" break IRQ handling.
I had to look at kernel/handle_IRQ_event() to realize this though.

I did notice a different issue though.
A "hung" shared IRQ (live lock the CPU) will never get flagged if
the IB driver always claims it was handled.

> (write to clear interrupt register) so we return "HANDLED".
> Its unavoidable that hardware may re-assert it while
> the handler is still running.

I agree the race condition exists.
The issue is how it should be handled.
If it can not be handled cleanly, then my original
suggestion of requesting an exclusive interrupt
would be worth considering.

I agree with Roland that occasional spurious interrupts
are ok. But it's probably worth capturing this thread and
adding it to the FAQ. It would be convenient to point at everytime
someone asks about "spurious interrupts" in their syslog.

grant



More information about the general mailing list