I think we want level triggered interrupts to be handled before EOI
because we may want to set IF during the service routine to capture
nested ones and I'm not sure if the current handling of level
triggered interrupts will allow that (?)

I have split this patch in half so that the irqinfo struct helper
is an atomic commit by itself.

The second commit makes use of the irqinfo struct to condition on
trigger mode to perform EOI in two different orderings.

UP with PIC is unchanged behaviour because all interrupts are edge
triggered in this configuration.

I am not 100% certain about the second change but it does seem to
fix 2x concurrent usb stacks from completely breaking a shared irq
and the system can be restored without a reboot on SMP.

TESTED: UP+pic works, UP+apic works, SMP works.




Reply via email to