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.
Christian.
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
unset).
I can't see how turning off the Req/Comp redirect bits could break
anything except for the isolation they provide.
Logan