Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iommu/vt-d: Make intel_svm_set_dev_pasid() support domain replacement

Make intel_svm_set_dev_pasid() support replacement.

Signed-off-by: Yi Liu <yi.l.liu@intel.com>
Link: https://lore.kernel.org/r/20241107122234.7424-10-yi.l.liu@intel.com
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>

authored by

Yi Liu and committed by
Joerg Roedel
cfb31f19 c33e2086

+12 -6
+4 -4
drivers/iommu/intel/iommu.c
··· 1752 1752 intel_context_flush_present(info, context, did, true); 1753 1753 } 1754 1754 1755 - static int __domain_setup_first_level(struct intel_iommu *iommu, 1756 - struct device *dev, ioasid_t pasid, 1757 - u16 did, pgd_t *pgd, int flags, 1758 - struct iommu_domain *old) 1755 + int __domain_setup_first_level(struct intel_iommu *iommu, 1756 + struct device *dev, ioasid_t pasid, 1757 + u16 did, pgd_t *pgd, int flags, 1758 + struct iommu_domain *old) 1759 1759 { 1760 1760 if (!old) 1761 1761 return intel_pasid_setup_first_level(iommu, dev, pgd,
+5
drivers/iommu/intel/iommu.h
··· 1250 1250 void domain_remove_dev_pasid(struct iommu_domain *domain, 1251 1251 struct device *dev, ioasid_t pasid); 1252 1252 1253 + int __domain_setup_first_level(struct intel_iommu *iommu, 1254 + struct device *dev, ioasid_t pasid, 1255 + u16 did, pgd_t *pgd, int flags, 1256 + struct iommu_domain *old); 1257 + 1253 1258 int dmar_ir_support(void); 1254 1259 1255 1260 void iommu_flush_write_buffer(struct intel_iommu *iommu);
+3 -2
drivers/iommu/intel/svm.c
··· 127 127 128 128 /* Setup the pasid table: */ 129 129 sflags = cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0; 130 - ret = intel_pasid_setup_first_level(iommu, dev, mm->pgd, pasid, 131 - FLPT_DEFAULT_DID, sflags); 130 + ret = __domain_setup_first_level(iommu, dev, pasid, 131 + FLPT_DEFAULT_DID, mm->pgd, 132 + sflags, old); 132 133 if (ret) 133 134 goto out_remove_dev_pasid; 134 135