lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 19 Feb 2007 19:23:43 +0100
From:	Krzysztof Halasa <khc@...waw.pl>
To:	lsorense@...lub.uwaterloo.ca (Lennart Sorensen)
Cc:	Udo van den Heuvel <udovdh@...all.nl>, linux-kernel@...r.kernel.org
Subject: Re: PCI riser cards and PCI irq routing, etc

lsorense@...lub.uwaterloo.ca (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@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ