Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Sep 1996 17:58:32 +0200 (MET DST)
From:      Stefan Esser <se@zpr.uni-koeln.de>
To:        grog@lemis.de (Greg Lehey)
Cc:        freebsd-hardware@freebsd.org (FreeBSD hardware Users)
Subject:   Re: Any Pentium boards with more than 4 PCI slots?
Message-ID:  <199609151558.RAA00745@x14.mi.uni-koeln.de>
In-Reply-To: <199609151230.OAA00535@allegro.lemis.de>
References:  <199609151230.OAA00535@allegro.lemis.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Greg Lehey writes:
 > Does anybody know of Pentium boards which support more than 4 PCI

Hmmm, I seem to remember there was one with 5,
but that's not what you are looking for ...

 > slots?  One of my customers has a requirement for up to 8 or 10
 > slots.  My understanding is that this is only possible with a PCI
 > bridge--is this correct?  If so (and even if not, I suppose), how

Yes, there are PCI bus extension boxes for this 
purpose. Satoshi uses one for his large disk array.
They use TWO PCI to PCI bridge chips, one that sits
in any PCI slot of your motherboard, the other is 
at the other end of the extender cable, and wired
to the second back plane.

 > transparent is the PCI bridge to the software?  How much slower is it

Once you are through initialization, the PCI to PCI
bridge is not visible to any drivers or software.
But you'll need a very recent PCI BIOS, in order to
get the interrupt to IRQ routing set up correctly: 
The PCI BIOS has to identify all boards behind the
second PCI bus bridge chip, assign them an IRQ, and
set up the routing. Then the IRQ number has to be
stored into the chip's interrupt number register in
configuration space, where the driver will later find
it.

What we found in the case of Satoshi's original MB
was, that his BIOS would only probe one level deep
behind the primary PCI bus, and thus would not see
any cards in the extender box. The FreeBSD PCI probe
will identify the cards, but can't set up the missing
PCI interrupt to ISA IRQ routing, since this is chip
set specific (and should be done by the BIOS for that
reason).

(Well, in fact there is a way to initialize the IRQ
routing, but it relies on a very recent PCI BIOS, or
it will do more harm than good. And with a recent PCI
BIOS, you can expect it did its job :)

 > than the direct side of the PCI bus?  Are there any other gotchas?

The speed will be nearly identical for large bursts,
but latency is much increased. There might be a buffer
that needs to be flushed before reversing directions 
through the PCI bridge, and that may affect accesses
to a devices register, while another chip is doing 
bus-master transfers into the opposite direction. The
BIOS has to assign the memory and port maps correctly,
or you'll not be able to reach all I/O ports (they are
a scarce resource) or will find that card memory has 
been mapped non-prefetchable, while it in fact is, 
leading to reduced streaming performance.

There are dead-lock issues, when a device can't perform
a requested priority transfer, but also can't go on with
its previous operation unless it satisfies this request.
This has been dealt with in PCI 2.1, and newer PCI to
PCI bridge chips are designed to work around this problem.

PCI to PCI bridge chips are very common on multi-channel
ethernet cards, and on the AH3940, for example. But this 
is a slightly different environment than an extender box.
It is only one level deep and just about every BIOS does
the right thing with them.

Conclusion: There is not much of a risk, if all the 
components (motherboard, BIOS, PCI to PCI bridges) are
current designs. I wouldn't bother to try it with an one 
year old motherboard without a BIOS upgrade :)

Regards, STefan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199609151558.RAA00745>