Re: System crash after "No irq handler for vector" linux 2.6.19

From: Eric W. Biederman
Date: Thu Feb 01 2007 - 02:21:18 EST


"Luigi Genoni" <luigi.genoni@xxxxxxxxxxx> writes:

> OK,
> willing to test any patch.

Ok. I've finally figured out what is going on. The code is
race free but the programmer was an idiot.

In the local apic there are two relevant registers.
ISR (in service register) describing all of the
interrupts that the cpu in the process of handling.
IRR (intrerupt request register) which lists all of
the interrupts that are currently pending.

Well it happens that IRR is used to catch the case
when we are servicing an interrupt and that same interrupt
comes in again. When that happens as soon as we are
done service the interrupt that same interrupt fires again.

We perform interrupt migration in an interrupt handler, so
we can be race free.

It turns out that if I'm performing migration (updating all
of the data structures and hardware registers) while IRR
is set the interrupt will happen in the old location immediate after
my migration work is complete. And since the kernel is not
setup to deal with it we get an ugly error message.

Anyway now that I know what is going on I'm going to have to think
about this a little bit more to figure out how to fix this. My hunch
is the easy fix will be simply not to migrate until I have an
interrupt instance when IRR is clear.

Anyway with a little luck tomorrow I will be able to figure it out,
it's to bed with me now.

Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/