Commit cfb31f19 authored by Yi Liu's avatar Yi Liu Committed by Joerg Roedel
Browse files

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



Make intel_svm_set_dev_pasid() support replacement.

Signed-off-by: default avatarYi Liu <yi.l.liu@intel.com>
Link: https://lore.kernel.org/r/20241107122234.7424-10-yi.l.liu@intel.com


Signed-off-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent c33e2086
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1752,7 +1752,7 @@ static void domain_context_clear_one(struct device_domain_info *info, u8 bus, u8
	intel_context_flush_present(info, context, did, true);
}

static int __domain_setup_first_level(struct intel_iommu *iommu,
int __domain_setup_first_level(struct intel_iommu *iommu,
			       struct device *dev, ioasid_t pasid,
			       u16 did, pgd_t *pgd, int flags,
			       struct iommu_domain *old)
+5 −0
Original line number Diff line number Diff line
@@ -1250,6 +1250,11 @@ domain_add_dev_pasid(struct iommu_domain *domain,
void domain_remove_dev_pasid(struct iommu_domain *domain,
			     struct device *dev, ioasid_t pasid);

int __domain_setup_first_level(struct intel_iommu *iommu,
			       struct device *dev, ioasid_t pasid,
			       u16 did, pgd_t *pgd, int flags,
			       struct iommu_domain *old);

int dmar_ir_support(void);

void iommu_flush_write_buffer(struct intel_iommu *iommu);
+3 −2
Original line number Diff line number Diff line
@@ -127,8 +127,9 @@ static int intel_svm_set_dev_pasid(struct iommu_domain *domain,

	/* Setup the pasid table: */
	sflags = cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0;
	ret = intel_pasid_setup_first_level(iommu, dev, mm->pgd, pasid,
					    FLPT_DEFAULT_DID, sflags);
	ret = __domain_setup_first_level(iommu, dev, pasid,
					 FLPT_DEFAULT_DID, mm->pgd,
					 sflags, old);
	if (ret)
		goto out_remove_dev_pasid;