Skip site navigation (1)Skip section navigation (2)
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>