> From: Lu Baolu <baolu...@linux.intel.com> > Sent: Tuesday, June 21, 2022 10:44 PM > +struct iommu_sva *iommu_sva_bind_device(struct device *dev, struct > mm_struct *mm) > +{ > + struct iommu_domain *domain; > + ioasid_t max_pasids; > + int ret = -EINVAL; > + > + /* Allocate mm->pasid if necessary. */
this comment is for iommu_sva_alloc_pasid() > + max_pasids = dev->iommu->max_pasids; > + if (!max_pasids) > + return ERR_PTR(-EOPNOTSUPP); > + > + ret = iommu_sva_alloc_pasid(mm, 1, max_pasids - 1); > + if (ret) > + return ERR_PTR(ret); > + ... > +void iommu_sva_unbind_device(struct iommu_sva *handle) > +{ > + struct device *dev = handle->dev; > + struct iommu_domain *domain = > + container_of(handle, struct iommu_domain, bond); > + ioasid_t pasid = iommu_sva_get_pasid(handle); > + > + mutex_lock(&iommu_sva_lock); > + if (refcount_dec_and_test(&domain->bond.users)) { > + iommu_detach_device_pasid(domain, dev, pasid); > + iommu_domain_free(domain); > + } > + mutex_unlock(&iommu_sva_lock); > +} > +EXPORT_SYMBOL_GPL(iommu_sva_unbind_device); > + > +u32 iommu_sva_get_pasid(struct iommu_sva *handle) > +{ > + struct iommu_domain *domain = > + container_of(handle, struct iommu_domain, bond); > + > + return domain->mm->pasid; > +} > +EXPORT_SYMBOL_GPL(iommu_sva_get_pasid); Looks this is only used by unbind_device. Just open code it. _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu