Commit 5cd189e4 authored by Anthony DeRossi's avatar Anthony DeRossi Committed by Alex Williamson

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: default avatarAnthony DeRossi <ajderossi@gmail.com>
Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Reviewed-by: default avatarKevin Tian <kevin.tian@intel.com>
Reviewed-by: default avatarYi Liu <yi.l.liu@intel.com>
Link: https://lore.kernel.org/r/20221110014027.28780-3-ajderossi@gmail.comSigned-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
parent 7fdba001
...@@ -125,6 +125,19 @@ static void vfio_release_device_set(struct vfio_device *device) ...@@ -125,6 +125,19 @@ static void vfio_release_device_set(struct vfio_device *device)
xa_unlock(&vfio_device_set_xa); 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 * Group objects - create, release, get, put, search
*/ */
......
...@@ -189,6 +189,7 @@ int vfio_register_emulated_iommu_dev(struct vfio_device *device); ...@@ -189,6 +189,7 @@ int vfio_register_emulated_iommu_dev(struct vfio_device *device);
void vfio_unregister_group_dev(struct vfio_device *device); void vfio_unregister_group_dev(struct vfio_device *device);
int vfio_assign_device_set(struct vfio_device *device, void *set_id); int vfio_assign_device_set(struct vfio_device *device, void *set_id);
unsigned int vfio_device_set_open_count(struct vfio_device_set *dev_set);
int vfio_mig_get_next_state(struct vfio_device *device, int vfio_mig_get_next_state(struct vfio_device *device,
enum vfio_device_mig_state cur_fsm, enum vfio_device_mig_state cur_fsm,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment