On 2019-04-22 11:14 a.m., Logan Gunthorpe wrote: > My guess is that the reason writes work and not reads is because the > write TLPs are posted and thus the switch doesn't apply the Proxy ID > seeing it doesn't expect a completion. Thus the IOMMU sees the TLPs as > coming from a permitted peripheral and doesn't complain. Oh, oops, sounds like I got that backwards as you seem to indicate reads work but not writes. That doesn't make as much sense to me, but I still think it's a proxy_id problem. Take a look at [1]. It reads to me like the AMD IOMMU only supports the last DMA alias. So most of the proxy IDs for the switchtec device we register are probably ignored... One way or another I expect the working cases are because they come from a specific proxy ID and the broken cases come from a proxy ID that the AMD IOMMU doesn't consider. Logan [1] https://elixir.bootlin.com/linux/latest/source/drivers/iommu/amd_iommu.c#L245