> I've looked at the pcibios_read_config_byte() change in 2.1.85 which
> overrides IRQ information read from PCI devices and overrides it by
> translated values for APIC IRQ's. IMHO it is not the right solution to
> the problem: no drivers should read the interrupt number from config
> registers directly (if they do, they are broken and should be fixed as
> this scheme already breaks on the Ultra), they should use pci_dev->irq
> instead which can be set by arch-dependent fixup function. [...]
looks like almost all RL PCI drivers do this currently: ne.c, tulip.c,
eepro.c, aic7xxx.c.
> [...] I propose moving this translation to i386 pci_bios_fixup(), are
> there any objections?
sure, fine with me. There was no real thinking behind the PCI part of this
change, i just looked at how drivers aquire PCI interrupts. The IO-APIC
needs this to work properly:
a (bus,slot,pin) -> IO-APIC-IRQ mapping has to be done by the IO-APIC, as
interrupts show up at 'high vectors'. If a driver gets the ISA IRQ
accidentally, then the system will most probably not boot, and the device
wont work for sure. If there is no IO-APIC mapping, then
IO_APIC_get_PCI_irq_vector() returns -1, in this case the ISA IRQ should
be used.
-- mingo