Messages in this thread | | | From | "Van Maren, Kevin" <> | Subject | RE: [PATCH][2.4] generic cluster APIC support for systems with m ore than 8 CPUs | Date | Wed, 25 Dec 2002 20:18:27 -0600 |
| |
> One thing I will say. Your code would be a hell of a lot saner for > merging if you mapped the ISA/Legacy IRQ's as 0-15 (to software) and the > PCI ones to 16+ like everyone else does. That would kill a _lot_ of > ifdefs and the IRQ0 corner case
If you have a suggestion on how to do that, I am sure we would all be grateful to hear it.
Note that the reason the code _exists_ is because the interrupt lines are physically connected to different pins on the APIC than they are in "normal" systems. The legitimacy of that decision is not up for debate at this point -- that is the way the system was built, and Linux needs to deal with it in order to run on it.
So the PCI interrupts are in the table at IRQs < 16 (because it tells which pin is being used), which makes it difficult to tell whether a PCI or an ISA interrupt is being requested if you tell the code "irq 3": if ISA, you need to use pin f(X), while if PCI, you use pin X.
ACPI should have the ISA redirection information, but as Natalie was saying, drivers hard-code the ISA vectors without checking the ACPI info.
I suppose it would be possible to detect the ES7000 and have the kernel re-write the PCI vectors (say, add 16 to them all) and then re-mangle them based on a "< 16" criteria. But I don't believe that is a "clean" solution either (and would break when the ACPI isa redirection table is properly used).
Anyway, this was the reason for the "severe irq override" comment by Natalie.
Kevin - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |