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 _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-hardware To unsubscribe, send any mail to "[email protected]"
