summaryrefslogtreecommitdiffstats
path: root/drivers/iommu/iommufd/main.c
diff options
context:
space:
mode:
authorJason Gunthorpe <jgg@nvidia.com>2023-07-17 15:11:58 -0300
committerJason Gunthorpe <jgg@nvidia.com>2023-07-26 10:19:17 -0300
commit3a3329a7f14a7a0a8c30a12c7ed9f1f77f8efaa1 (patch)
treebea1c4cadc8190195492d2635c8eac81590fabfc /drivers/iommu/iommufd/main.c
parentd525a5b8cf39791b47a3d61b36dcb43e1d6fbde8 (diff)
downloadlinux-stable-3a3329a7f14a7a0a8c30a12c7ed9f1f77f8efaa1.tar.gz
linux-stable-3a3329a7f14a7a0a8c30a12c7ed9f1f77f8efaa1.tar.bz2
linux-stable-3a3329a7f14a7a0a8c30a12c7ed9f1f77f8efaa1.zip
iommufd: Add iommufd_group
When the hwpt to device attachment is fairly static we could get away with the simple approach of keeping track of the groups via a device list. But with replace this is infeasible. Add an automatically managed struct that is 1:1 with the iommu_group per-ictx so we can store the necessary tracking information there. Link: https://lore.kernel.org/r/2-v8-6659224517ea+532-iommufd_alloc_jgg@nvidia.com Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Tested-by: Nicolin Chen <nicolinc@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Diffstat (limited to 'drivers/iommu/iommufd/main.c')
-rw-r--r--drivers/iommu/iommufd/main.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/iommu/iommufd/main.c b/drivers/iommu/iommufd/main.c
index 4bbb20dff430..34fefc0a7833 100644
--- a/drivers/iommu/iommufd/main.c
+++ b/drivers/iommu/iommufd/main.c
@@ -183,6 +183,7 @@ static int iommufd_fops_open(struct inode *inode, struct file *filp)
}
xa_init_flags(&ictx->objects, XA_FLAGS_ALLOC1 | XA_FLAGS_ACCOUNT);
+ xa_init(&ictx->groups);
ictx->file = filp;
filp->private_data = ictx;
return 0;
@@ -218,6 +219,7 @@ static int iommufd_fops_release(struct inode *inode, struct file *filp)
if (WARN_ON(!destroyed))
break;
}
+ WARN_ON(!xa_empty(&ictx->groups));
kfree(ictx);
return 0;
}