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>