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]"

Reply via email to