Re: [PATCH v4 04/14] PCI/P2PDMA: Clear ACS P2P flags for all devices behind switches

From: Christian KÃnig
Date: Thu May 10 2018 - 08:53:17 EST

Am 09.05.2018 um 18:45 schrieb Logan Gunthorpe:

On 09/05/18 07:40 AM, Christian KÃnig wrote:
The key takeaway is that when any device has ATS enabled you can't
disable ACS without breaking it (even if you unplug and replug it).
I don't follow how you came to this conclusion...
The ACS bits we'd be turning off are the ones that force TLPs addressed
at a peer to go to the RC. However, ATS translation packets will be
addressed to an untranslated address which a switch will not identify as
a peer address so it should send upstream regardless the state of the
ACS Req/Comp redirect bits.

Why would a switch not identify that as a peer address? We use the PASID together with ATS to identify the address space which a transaction should use.

If I'm not completely mistaken when you disable ACS it is perfectly possible that a bridge identifies a transaction as belonging to a peer address, which isn't what we want here.


Once the translation comes back, the ATS endpoint should send the TLP to
the peer address with the AT packet type and it will be directed to the
peer provided the Direct Translated bit is set (or the redirect bits are

I can't see how turning off the Req/Comp redirect bits could break
anything except for the isolation they provide.