Continue converting drivers to the new interface. Introduce ops->blocked_domain to hold the global static BLOCKED domain and convert all drivers supporting BLOCKED to use it.
This makes it trivial for dart and iommufd to convert over to domain_alloc_paging(). There are six drivers remaining: drivers/iommu/amd/iommu.c: .domain_alloc = amd_iommu_domain_alloc, drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c: .domain_alloc = arm_smmu_domain_alloc, drivers/iommu/arm/arm-smmu/arm-smmu.c: .domain_alloc = arm_smmu_domain_alloc, drivers/iommu/fsl_pamu_domain.c: .domain_alloc = fsl_pamu_domain_alloc, drivers/iommu/intel/iommu.c: .domain_alloc = intel_iommu_domain_alloc, drivers/iommu/virtio-iommu.c: .domain_alloc = viommu_domain_alloc, v2: - Rebase to Joerg's for-next - New patch to remove force_bypass, as discussed with Janne - Move some hunks between patches to accommodate Robin's change to the attach_dev switch v1: https://lore.kernel.org/r/0-v1-8060f06462cc+c0a39-dart_paging_...@nvidia.com Jason Gunthorpe (9): iommu: Move IOMMU_DOMAIN_BLOCKED global statics to ops->blocked_domain iommu/vt-d: Update the definition of the blocking domain iommu/vt-d: Use ops->blocked_domain iommufd: Convert to alloc_domain_paging() iommu/dart: Use static global identity domains iommu/dart: Move the blocked domain support to a global static iommu/dart: Convert to domain_alloc_paging() iommu/dart: Call apple_dart_finalize_domain() as part of alloc_paging() iommu/dart: Remove the force_bypass variable arch/powerpc/kernel/iommu.c | 9 +- drivers/iommu/apple-dart.c | 137 ++++++++++++++++++------------- drivers/iommu/intel/iommu.c | 7 +- drivers/iommu/iommu.c | 2 + drivers/iommu/iommufd/selftest.c | 11 +-- include/linux/iommu.h | 3 + 6 files changed, 94 insertions(+), 75 deletions(-) base-commit: 83653d8508051af13f74905fc3f6c2fa2e59dbee -- 2.42.0