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/