Re: 108: PCI->APIC IRQ transform to the same IRQ.

Somnath Roy (
Tue, 7 Jul 1998 11:41:56 +0530 (IST)

=> I'm running 2.1.108 and I get the following on my dual PPro
=> with two SCSI cards, ethernet, and sound card:
=> PCI: PCI BIOS revision 2.10 entry at 0xfda11
=> PCI: Using configuration type 1
=> PCI: Probing PCI hardware
=> PCI->APIC IRQ transform: (B0,I6,P0) -> 18
=> PCI->APIC IRQ transform: (B0,I9,P0) -> 17
=> PCI->APIC IRQ transform: (B0,I11,P0) -> 16
=> PCI->APIC IRQ transform: (B0,I17,P0) -> 18
=> PCI: 00:00 [8086/1237]: Passive release enable (00)
=> And then both the second SCSI card (NCR 53c810) and
=> the ethernet (eepro100) get assigned to the same IRQ 18.
=> It this the BIOS's fault or the kernel's? What can I
=> do differently?
=> Thanks,

By default, PCI devices are supposed to be capable of sharing IRQs. Sharing
should be possible between two PCI devices of same or different types. Also,
a PCI device can be assigned any IRQ and the driver shoule be independent of
the IRQ number. The device drivers should always be designed considering this
issue (unless, a particular device SHOULD NOT share IRQs with other devies due
to some reason).

However, in some OSs, interrupt-sharing of the PCI devices can be configured
(no sharing, sharing with similar devices, sharing with any devices).

BIOS assigns the IRQs of PCI devices depending on the parameters like *type of
PCI device*, *PCI slot* on which the device reside etc. Each BIOS uses its own
algorithm to assign IRQs and hence it might assign same IRQs to two different
PCI devices. There is absolutely no fault of BIOS (or kernel).

However, in some systems, using BIOS setup program, IRQs can be pre-assigned
(or forced) so that no two PCI devices share IRQs.

- Somnath.

|____|____|____|____|____|____|____|____|____|____|____/ |) \
| Somnath Roy, Wipro Ltd., /_____|___\
/DivyaSree,30,Mission Rd.,Bl-27, Ph-2241730 (Ext-3305)///////| |
| |///////| |
| Journey of thousand miles begins with a single step |///////| |
\___/ \___/ \___/

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to