[Joerg, you may be able to answer this. Patch under discussion is: https://lore.kernel.org/r/20230114073420.759989-1-baolu.lu@xxxxxxxxxxxxxxx] On Thu, Feb 02, 2023 at 11:08:25AM +0800, Baolu Lu wrote: > ... > ACS is unnecessary for the devices that only use translated memory request > for PASID. All translated addresses are granted by the Linux kernel which > ensures that such addresses will never be in a P2P address, i.e., it's not > contained in any bridge aperture, will *always* be routed toward the RC. Re 201007ef707a ("PCI: Enable PASID only when ACS RR & UF enabled on upstream path"), does that commit actually *fix* anything? I wonder whether we could revert it completely. The intent of 201007ef707a is to use ACS to prevent misrouting, which would happen if a TLP contained an address that *looked* like a PCI bus address, i.e., it was inside a host bridge aperture, but was *intended* to reach an IOMMU or main memory directly. 201007ef707a only affects pci_enable_pasid(), so I think we already avoid this misrouting by restricting DMA address allocation for both non-IOMMU scenarios and non-PASID IOMMU scenarios. So what about PASID mappings, e.g., consider a mapping of (Requester ID, PASID, Untranslated Address) -> Translated Address? If either the Untranslated Address or the Translated Address looks like a PCI bus address, a Memory Request or Translation Request could be misrouted. Does that actually happen? I assume it does not happen for Translated Addresses because that's basically the non-IOMMU case, and we don't need ACS to prevent misrouting there. Do IOMMUs allocate (PASID, Untranslated Addresses) that look like PCI bus addresses? Bjorn