On 08/05/18 02:13 PM, Alex Williamson wrote:
Well, I'm a bit confused, this patch series is specifically
ACS on switches, but per the spec downstream switch ports implementing
ACS MUST implement direct translated P2P. So it seems the only
potential gap here is the endpoint, which must support ATS or else
there's nothing for direct translated P2P to do. The switch port plays
no part in the actual translation of the request, ATS on the endpoint
has already cached the translation and is now attempting to use it.
For the switch port, this only becomes a routing decision, the request
is already translated, therefore ACS RR and EC can be ignored to
perform "normal" (direct) routing, as if ACS were not present. It would
be a shame to go to all the trouble of creating this no-ACS mode to find
out the target hardware supports ATS and should have simply used it, or
we should have disabled the IOMMU altogether, which leaves ACS disabled.
Ah, ok, I didn't think it was the endpoint that had to implement ATS.
But in that case, for our application, we need NVMe cards and RDMA NICs
to all have ATS support and I expect that is just as unlikely. At least
none of the endpoints on my system support it. Maybe only certain GPUs
have this support.