vfio
mutex_lock(&vfio.iommu_drivers_lock);
list_for_each_entry(tmp, &vfio.iommu_drivers_list, vfio_next) {
mutex_unlock(&vfio.iommu_drivers_lock);
list_add(&driver->vfio_next, &vfio.iommu_drivers_list);
mutex_unlock(&vfio.iommu_drivers_lock);
mutex_lock(&vfio.iommu_drivers_lock);
list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) {
mutex_unlock(&vfio.iommu_drivers_lock);
mutex_unlock(&vfio.iommu_drivers_lock);
mutex_lock(&vfio.iommu_drivers_lock);
list_for_each_entry(driver, &vfio.iommu_drivers_list,
mutex_unlock(&vfio.iommu_drivers_lock);
mutex_lock(&vfio.iommu_drivers_lock);
list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) {
} vfio;
mutex_unlock(&vfio.iommu_drivers_lock);
mutex_init(&vfio.iommu_drivers_lock);
INIT_LIST_HEAD(&vfio.iommu_drivers_list);
mutex_destroy(&vfio.iommu_drivers_lock);
} vfio;
lockdep_assert_held(&vfio.group_lock);
list_for_each_entry(group, &vfio.group_list, vfio_next) {
ida_free(&vfio.group_ida, MINOR(group->dev.devt));
minor = ida_alloc_max(&vfio.group_ida, MINORMASK, GFP_KERNEL);
group->dev.devt = MKDEV(MAJOR(vfio.group_devt), minor);
group->dev.class = vfio.class;
lockdep_assert_held(&vfio.group_lock);
list_add(&group->vfio_next, &vfio.group_list);
mutex_lock(&vfio.group_lock);
mutex_unlock(&vfio.group_lock);
mutex_lock(&vfio.group_lock);
mutex_unlock(&vfio.group_lock);
if (!refcount_dec_and_mutex_lock(&group->drivers, &vfio.group_lock))
mutex_unlock(&vfio.group_lock);
ida_init(&vfio.group_ida);
mutex_init(&vfio.group_lock);
INIT_LIST_HEAD(&vfio.group_list);
vfio.class = class_create("vfio");
if (IS_ERR(vfio.class)) {
ret = PTR_ERR(vfio.class);
vfio.class->devnode = vfio_devnode;
ret = alloc_chrdev_region(&vfio.group_devt, 0, MINORMASK + 1, "vfio");
class_destroy(vfio.class);
vfio.class = NULL;
WARN_ON(!list_empty(&vfio.group_list));
ida_destroy(&vfio.group_ida);
unregister_chrdev_region(vfio.group_devt, MINORMASK + 1);
class_destroy(vfio.class);
vfio.class = NULL;
#define TRACE_INCLUDE_PATH ../../drivers/vfio/pci
ida_init(&vfio.device_ida);
vfio.device_class = class_create("vfio-dev");
if (IS_ERR(vfio.device_class)) {
ret = PTR_ERR(vfio.device_class);
ret = vfio_cdev_init(vfio.device_class);
class_destroy(vfio.device_class);
vfio.device_class = NULL;
ida_destroy(&vfio.device_ida);
class_destroy(vfio.device_class);
vfio.device_class = NULL;
ida_free(&vfio.device_ida, device->index);
simple_release_fs(&vfio.vfs_mount, &vfio.fs_count);
ret = simple_pin_fs(&vfio_fs_type, &vfio.vfs_mount, &vfio.fs_count);
inode = alloc_anon_inode(vfio.vfs_mount->mnt_sb);
simple_release_fs(&vfio.vfs_mount, &vfio.fs_count);
ret = ida_alloc_max(&vfio.device_ida, MINORMASK, GFP_KERNEL);
device->device.class = vfio.device_class;
simple_release_fs(&vfio.vfs_mount, &vfio.fs_count);
ida_free(&vfio.device_ida, device->index);
} vfio;