On 2022/3/21 16:04, Tian, Kevin wrote:
From: Lu Baolu <baolu...@linux.intel.com>
Sent: Sunday, March 20, 2022 2:40 PM
+struct iommu_sva *
+iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void
*drvdata)
+{
+       int ret = -EINVAL;
+       struct iommu_sva *handle;
+       struct iommu_domain *domain;
+
+       handle = kzalloc(sizeof(*handle), GFP_KERNEL);
+       if (!handle)
+               return ERR_PTR(-ENOMEM);
+
+       ret = iommu_sva_alloc_pasid(mm, 1, (1U << dev->iommu->pasid_bits)
- 1);
+       if (ret)
+               goto out;
+
+       domain = iommu_sva_domain_alloc(dev);
+       if (!domain) {
+               ret = -ENOMEM;
+               goto out;
+       }
+       domain->sva_cookie = mm;

one domain can be attached by multiple devices, so this should not be
a blind alloc.

Indeed. Perhaps we could associate the SVA domain with the mm->pasid and
add a user counter inside the domain.

Best regards,
baolu
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to