Messages in this thread | | | Date | Wed, 30 Mar 2022 16:09:56 -0300 | From | Jason Gunthorpe <> | Subject | Re: [PATCH RFC v2 06/11] iommu/vt-d: Add SVA domain support |
| |
On Tue, Mar 29, 2022 at 01:37:55PM +0800, Lu Baolu wrote: > Add support for SVA domain allocation and provide an SVA-specific > iommu_domain_ops. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > include/linux/intel-iommu.h | 1 + > drivers/iommu/intel/iommu.c | 10 ++++++++++ > drivers/iommu/intel/svm.c | 37 +++++++++++++++++++++++++++++++++++++ > 3 files changed, 48 insertions(+) > > diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h > index 2f9891cb3d00..c14283137fb5 100644 > +++ b/include/linux/intel-iommu.h > @@ -744,6 +744,7 @@ void intel_svm_unbind(struct iommu_sva *handle); > u32 intel_svm_get_pasid(struct iommu_sva *handle); > int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt, > struct iommu_page_response *msg); > +extern const struct iommu_domain_ops intel_svm_domain_ops; > > struct intel_svm_dev { > struct list_head list; > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > index c1b91bce1530..5eae7cf9bee5 100644 > +++ b/drivers/iommu/intel/iommu.c > @@ -4318,6 +4318,16 @@ static struct iommu_domain *intel_iommu_domain_alloc(unsigned type) > return domain; > case IOMMU_DOMAIN_IDENTITY: > return &si_domain->domain; > +#ifdef CONFIG_INTEL_IOMMU_SVM > + case IOMMU_DOMAIN_SVA: > + dmar_domain = alloc_domain(type); > + if (!dmar_domain) > + return NULL; > + domain = &dmar_domain->domain; > + domain->ops = &intel_svm_domain_ops; > + > + return domain; > +#endif /* CONFIG_INTEL_IOMMU_SVM */
If this is the usual pattern for drivers I would prefer to see an alloc_sva op instead of more and more types.
Multiplexing functions is often not a great idea...
Jason
| |