Re: pci_read_config_byte in 2.1.85

MOLNAR Ingo (mingo@chiara.csoma.elte.hu)
Wed, 4 Feb 1998 12:16:08 +0100 (CET)


On Wed, 4 Feb 1998, Martin Mares wrote:

> 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