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