Re: Conclusions from my investigation about ioapic programming

From: Jeff V. Merkey
Date: Fri Feb 23 2007 - 12:21:52 EST


Eric W. Biederman wrote:



** Conclusions.

*IRQs must be reprogramed in interrupt context.

The result of this is investigation is that I am convinced we need
to perform the irq migration activities in interrupt context although
I am not convinced it is completely safe. I suspect multiple irqs
firing closely enough to each other may hit the same issues as
migrating irqs from process context. However the odds are on our
side, when we are in irq context.



In my older days of programmin 82489DX chipsets (which the AMD APIC versions resemble
the 82489DX more closely than intel's newer incarnations), you had to EOI the apic early if you
wanted to migrate interrupt assignments. I had to do the following steps to move an IRQ:

1. Mask the LOCAL APIC
2, EOI the interrupt
3. Leave the interrupt entry masked until the ISR completed.
4. Reprogram the interrupt.
5. Unmask as the ISR exits

In other words, EOI early in all cases to clear the local and IOAPIC state.

Jeff


-
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/