Date: Mon, 11 Jun 2018 17:37:16 -0400 From: Kurt Lidl <lidl@pix.net> To: freebsd-hardware@freebsd.org Subject: Re: PCIe multipliers, how do they work? Message-ID: <b9946f8c-1796-3f7c-b7d1-b92b0227656b@pix.net> In-Reply-To: <CAA3ZYrCtsLSgW6eA0akOD6Upyx1cTt5qbgaY9iSeguQuQmo%2Bjg@mail.gmail.com> References: <CAA3ZYrCtsLSgW6eA0akOD6Upyx1cTt5qbgaY9iSeguQuQmo%2Bjg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> I'm wondering how these things work. The wikipedia PCIe page [1] says: > "PCI Express switches can create multiple endpoints out of one endpoint > to allow sharing one endpoint with multiple devices." So maybe they > use a PCIe switch? Poking around wikipedia and google has thus far > uncovered very little info about PCIe switches. Wikipedia is less > helpful than usual, and they keep making google less and less useful > for no apparent reason. I don't see any other obvious keywords > to google for. > > It isn't obvious how slot id/address is handled. How do commands and > data get routed to/from the correct card? > > Is any firmware or OS support required? It's worth reading the following two pages closely, as they talk about PCI Express endpoints, and how PCI-Express switches have to work to enable multiple cards. http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-1 http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-2 One such family of PCI-express switch parts is from PLX Technologies, now owned by Broadcom. One of typical functions of such as switch is to provide "non transparent bridging" - basically mapping the address space from one machine's PCI address into the address space of another PCI system. This can be used a communication path between devices, for example, using a block and slot type software architecture. There is some support for NTB in FreeBSD's master branch, under sys/dev/ntb - with drivers for the PLX/Avago/Broadcom parts, as well as a driver for the Intel parts found on certain Xeon and Atom CPUs. -Kurt
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?b9946f8c-1796-3f7c-b7d1-b92b0227656b>