As of Linux-2.1.123, intel Linux/SMP will query the so-called ELCR
("Edge/Level Control Register") to find out whether a legacy IRQ is
supposed to be edge-triggered or level-triggered.
The problem for me is that I seem to have no clue about the polarity of
the interrupt. The (scant) documentation I have seems to imply that
level-triggered interrupts are always active low, and that the polarity
should thus be "1" in the IO-APIC. And that works apparently correctly
on the machines I had access to (admittedly few of them actually use
many legacy interrupts - one of the joys of having recent hardware).
However, I also have a report of one machine where it appears that the
level-trigger interrupts are active high. And my changes result in
endless interrupts on such a machine. Understandable, but incorrect ;)
I can make it a bootup option, but it would be even better if somebody
out there has a clue, and can tell me that "duh, Linus, you're just
being dense, look at line XXXX in manual YYYY and they tell you that
..."
Any clues? I may end up having to disable the new code unless something
better comes along..
Linus