Re: PCI riser cards and PCI irq routing, etc

From: Krzysztof Halasa
Date: Mon Feb 19 2007 - 13:24:07 EST


lsorense@xxxxxxxxxxxxxxxxxxx (Lennart Sorensen) writes:

> The PCI spec doesn't require 4 seperate interrupts. They certainly can
> all be the same. I do believe it does require the rotation method on
> anything using PCI bridges

Correct, PCI-PCI bridges have to rotate their INT lines (used ones
only, of course). The BIOS and OS would have no way to know the
topology otherwise (especially if the bridge is on a add-on card).

> If you
> make a mainboard on the other hand you can do whatever you want since
> you get to design the firmware that assigns the interrupts.

Precisely.

> Depends if the riser card is specific to that system, or if it is
> supposed to be a generic PCI card.

I think a generic card would require a bridge - how would you produce
IDSEL signals without a bridge, and without knowledge about the
motherboard?

If you know the motherboard you know, for example, that is uses
A(D)25-31 as IDSELs for on-board devices and A24 for PCI slot. Then
you can use, say, A23 for card #1 and reuse A24 (or IDSEL from the
mb connector) as IDSEL for card #0. And you know your BIOS will
support this.

If you don't know the motherboard you don't even know if IDSELs are
derived from AD 0->31 or if they are made differently. The BIOS may
just support only one device connected directly to the PCI slot.

I have never seen a riser card with a bridge, though of course it
doesn't mean there aren't any.

> It may. But using just INTB and INTD on a card is not allowed by the
> spec as far as I understand it.

Yep, single function -> INTA, two functions -> INT A+B and so on.

> Sure. But if you have a PCI to PCI bridge on a card, then you only get
> 4 interrupt lines into the card, and you have to distribute them by the
> spec to the chips behind the bridge if you want the system to know how
> the interrupts should be used

Right.

> (although I guess a driver could do its
> own thing if it really wanted to).

Well, that would be against PCI bridge specs but it probably could.
Normally, a special driver for PCI-PCI bridge is not needed.

> It does help make sure that if you have 8 devices, each IRQ is used by
> only two devices, so the interrupt handler doesn't have too many devices
> to check when an interrupt occours.

Right.
--
Krzysztof Halasa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/