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/[email protected]/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
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu