PCIE endpoint to endpoint transaction

Dien Nguyen picture Dien Nguyen · Jan 14, 2013 · Viewed 10.4k times · Source

I would like to clarify that the endpoint to endpoint transactions (peer to peer transaction) of two PCIE endpoints behind a PCIE switch are not forwarded to the root complex.

I googled around and understand that if the transaction from Endpoint #1 targeted to the PCIE address space which the root port assigned to the Endpoint #2, the switch will forward the transaction to the downstream port where Endpoint #2 located.

Please correct me if I misunderstand this point. Is this forwarding feature mandatory according to the PCIE spec or implementation-specific?

Answer

wataken44 picture wataken44 · Jan 14, 2013

At first, if a PCIe Switch supports Access Control Services(ACS) and the host software configures the Switch to redirect a P2P transaction to upstream, the Switch forwards the transaction towards Root Complex. So there is a case that a P2P transaction is forwarded to upstream.

If the Switch does not support ACS or the host software disables ACS, the PCIe Switch will forward a P2P transaction to downstream directly. I think this routing is mandatory because the internal bridges of the PCI Switch should perform as conventional PCI-PCI bridges.


Here are some references:

If you can access the latest PCIe Specification, you can read about ACS capability in the spec. But if you are not a member, you can read the ECN of ACS because it is public, which will also be helpful. PDF

Intel provides the useful document that describes why ACS is required.

Here VMware requests that the PCIe Switch must support ACS to use PCI Passthrough.