I have an old HP Vectra XU5/90 SMP (dual Pentium 100) system and found a bug in the interrupt setup code in the kernel (2.2.16). The problem is that the kernel does not always set the interrupt type correctly. In my case, the SCSI controller and one of my ethernet cards share an IRQ. This cannot be changed, because the on-board SCSI controller and both PCI slots (yes, this is an old machine) share the same physical interrupt line. The kernel insists on configuring the interrupt as type IO- APIC-EDGE and not IO-APIC-LEVEL (shared interrupts must be of type LEVEL). Depending on the activity on the shared devices the problems can range from lockups on boot to the device ceasing to respond to a system hang. Booting with the "noapic" option "solves" the problem by making all interrupts of type XT-PIC routed to CPU0. This is a less than optimial solution but at least allows the system to boot. The problem could be caused by bad BIOS information as to the type of interrupt, but shouldn't the kernel recognize that a shared PCI interrupt must be of type LEVEL and not EDGE? Another alternative would be to allow a boot option to force interrupt type.
We depend on the bios tables. If they are wrong we cant do a lot about it. You can override bits of the apic configuration but if the bios is wrong I think noapic is way safer As to the other comment. Some combinations of edge trigger devices can be used together. Not many but enough I'd be reluctant to second guess vendor info that on most boards is *very* good data.
Well something should be done to fix this. Otherwise, every HP Vectra XU 5/90 SMP in existence won't boot the standard RedHat distro if something is installed in one of the PCI slots. I can tell you the "solution" (noapic) isn't immediately obvious either. Getting the out-of-the box RH6.2 running on one of these machines is difficult enough because of the AM53C974 SCSI controller but the "noapic" thing can really throw someone for a loop. I hate to bring up the comparison, but there must be a solution because NT 4.0 dual-boots fine on the same machine with the same hardware that causes RH6.2 to crash-and-burn. Maybe another way to look at the problem might be: are there any consequences to forcing LEVEL on a PCI interrupt? Particularly a shared one? Or is the performance hit of "noapic" not enough to worry about so I should let the whole thing go?