SNP-enabled system requires IOMMU v1 page table to be configured with non-zero DTE[Mode] for DMA-capable devices. This effects a number of usecases such as IOMMU pass-through mode and AMD IOMMUv2 APIs for binding/unbinding pasid.
The series introduce a global variable to check SNP-enabled state during driver initialization, and use it to enforce the SNP restrictions during runtime. Also, for non-DMA-capable devices such as IOAPIC, the recommendation is to set DTE[TV] and DTE[Mode] to zero on SNP-enabled system. Therefore, additinal checks is added before setting DTE[TV]. Testing: - Tested booting and verify dmesg. - Tested booting with iommu=pt - Tested loading amd_iommu_v2 driver - Tested changing the iommu domain at runtime - Tested booting SEV/SNP-enabled guest Pre-requisite: - [PATCH v3 00/35] iommu/amd: Add multiple PCI segments support https://lore.kernel.org/linux-iommu/20220511072141.15485-29-vasant.he...@amd.com/T/ Note: - Previously discussed on here: [PATCH v2] iommu/amd: Set translation valid bit only when IO page tables are in used https://www.spinics.net/lists/kernel/msg4351005.html Best Regards, Suravee Brijesh Singh (1): iommu/amd: Introduce function to check SEV-SNP support Suravee Suthikulpanit (6): iommu/amd: Process all IVHDs before enabling IOMMU features iommu/amd: Introduce a global variable for tracking SNP enable status iommu/amd: Set translation valid bit only when IO page tables are in use iommu: Add domain_type_supported() callback in iommu_ops iommu/amd: Do not support IOMMU_DOMAIN_IDENTITY when SNP is enabled iommu/amd: Do not support IOMMUv2 APIs when SNP is enabled drivers/iommu/amd/amd_iommu_types.h | 11 +++ drivers/iommu/amd/init.c | 111 +++++++++++++++++++++++----- drivers/iommu/amd/iommu.c | 31 +++++++- drivers/iommu/iommu.c | 13 +++- include/linux/iommu.h | 11 +++ 5 files changed, 153 insertions(+), 24 deletions(-) -- 2.32.0 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu