Hi Jason, On 7/14/26 10:03 PM, Jason Gunthorpe wrote: > On Tue, Jul 14, 2026 at 09:06:51PM +0800, Zhanpeng Zhang wrote: >> Add iommu_group_get_by_id() so callers can resolve an IOMMU group from >> the numeric ID used in /sys/kernel/iommu_groups. >> >> An ID lookup must keep the group object alive without also keeping an >> otherwise empty group active. Embed the devices kobject in struct >> iommu_group so its address remains valid until the parent group is >> released, and return a reference on the parent kobject to ID lookup >> callers. Add iommu_group_put_by_id() to release that reference and >> iommu_group_is_active() to detect when the devices kobject has become >> inactive. >> >> Serialize lookup against group teardown with iommu_group_kset_mutex and >> only return groups whose devices kobject still has a live reference. >> This prevents a concurrent lookup from dereferencing a stale child >> kobject while allowing external users to discard bindings to empty >> groups. >> >> Signed-off-by: Zhanpeng Zhang <[email protected]> >> --- >> drivers/iommu/iommu.c | 107 +++++++++++++++++++++++++++++++++++++----- >> include/linux/iommu.h | 17 +++++++ >> 2 files changed, 113 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c >> index e8f13dcebbde..da269d10f6bf 100644 >> --- a/drivers/iommu/iommu.c >> +++ b/drivers/iommu/iommu.c >> @@ -40,6 +40,7 @@ >> #include "iommu-priv.h" >> >> static struct kset *iommu_group_kset; >> +static DEFINE_MUTEX(iommu_group_kset_mutex); >> static DEFINE_IDA(iommu_group_ida); > > I think it would be better to change the ida to an xarray than to use > a string search on a kset.. > > Jason
Agreed. Using an XArray as both the ID allocator and the group lookup table avoids the string-based kset lookup and the additional mutex. I will refactor it in the next revision. Thanks, Zhanpeng

