aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/vfio
diff options
context:
space:
mode:
authorAnthony DeRossi <ajderossi@gmail.com>2022-11-09 17:40:26 -0800
committerAlex Williamson <alex.williamson@redhat.com>2022-11-10 12:03:36 -0700
commit5cd189e410debedda416fecfc12f4716b5829845 (patch)
treeb5b0615bcd0526bd0a88ee73e7554de299bbd8b6 /drivers/vfio
parentvfio: Fix container device registration life cycle (diff)
downloadwireguard-linux-5cd189e410debedda416fecfc12f4716b5829845.tar.xz
wireguard-linux-5cd189e410debedda416fecfc12f4716b5829845.zip
vfio: Export the device set open count
The open count of a device set is the sum of the open counts of all devices in the set. Drivers can use this value to determine whether shared resources are in use without tracking them manually or accessing the private open_count in vfio_device. Signed-off-by: Anthony DeRossi <ajderossi@gmail.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Reviewed-by: Yi Liu <yi.l.liu@intel.com> Link: https://lore.kernel.org/r/20221110014027.28780-3-ajderossi@gmail.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Diffstat (limited to 'drivers/vfio')
-rw-r--r--drivers/vfio/vfio_main.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
index 9a4af880e941..6e8804fe0095 100644
--- a/drivers/vfio/vfio_main.c
+++ b/drivers/vfio/vfio_main.c
@@ -125,6 +125,19 @@ static void vfio_release_device_set(struct vfio_device *device)
xa_unlock(&vfio_device_set_xa);
}
+unsigned int vfio_device_set_open_count(struct vfio_device_set *dev_set)
+{
+ struct vfio_device *cur;
+ unsigned int open_count = 0;
+
+ lockdep_assert_held(&dev_set->lock);
+
+ list_for_each_entry(cur, &dev_set->device_list, dev_set_list)
+ open_count += cur->open_count;
+ return open_count;
+}
+EXPORT_SYMBOL_GPL(vfio_device_set_open_count);
+
/*
* Group objects - create, release, get, put, search
*/