On Mon, Mar 28, 2022 at 03:57:53PM -0300, Jason Gunthorpe wrote: > So, currently AMD and Intel have exactly the same HW feature with a > different kAPI.. I fixed it like below and made the ordering changes Kevin pointed to. Will send next week after the merge window: 527e438a974a06 iommu: Delete IOMMU_CAP_CACHE_COHERENCY 5cbc8603ffdf20 vfio: Move the Intel no-snoop control off of IOMMU_CACHE ebc961f93d1af3 iommu: Introduce the domain op enforce_cache_coherency() 79c52a2bb1e60b vfio: Require that devices support DMA cache coherence 02168f961b6a75 iommu: Replace uses of IOMMU_CAP_CACHE_COHERENCY with dev_is_dma_coherent() '79c can be avoided, we'd just drive IOMMU_CACHE off of dev_is_dma_coherent() - but if we do that I'd like to properly document the arch/iommu/platform/kvm combination that is using this.. diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 3c0ac3c34a7f9a..f144eb9fea8e31 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2269,6 +2269,12 @@ static int amd_iommu_def_domain_type(struct device *dev) return 0; } +static bool amd_iommu_enforce_cache_coherency(struct iommu_domain *domain) +{ + /* IOMMU_PTE_FC is always set */ + return true; +} + const struct iommu_ops amd_iommu_ops = { .capable = amd_iommu_capable, .domain_alloc = amd_iommu_domain_alloc, @@ -2291,6 +2297,7 @@ const struct iommu_ops amd_iommu_ops = { .flush_iotlb_all = amd_iommu_flush_iotlb_all, .iotlb_sync = amd_iommu_iotlb_sync, .free = amd_iommu_domain_free, + .enforce_cache_coherency = amd_iommu_enforce_cache_coherency, } }; Thanks, Jason