Lines Matching refs:vfio

41 static struct vfio {  struct
51 } vfio; variable
110 mutex_lock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
113 list_for_each_entry(tmp, &vfio.iommu_drivers_list, vfio_next) { in vfio_register_iommu_driver()
115 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
121 list_add(&driver->vfio_next, &vfio.iommu_drivers_list); in vfio_register_iommu_driver()
123 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
133 mutex_lock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
134 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_unregister_iommu_driver()
137 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
142 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
151 return idr_alloc(&vfio.group_idr, group, 0, MINORMASK + 1, GFP_KERNEL); in vfio_alloc_group_minor()
156 idr_remove(&vfio.group_idr, minor); in vfio_free_group_minor()
189 mutex_unlock(&vfio.group_lock); in vfio_group_unlock_and_free()
235 mutex_lock(&vfio.group_lock); in vfio_create_group()
238 list_for_each_entry(tmp, &vfio.group_list, vfio_next) { in vfio_create_group()
252 dev = device_create(vfio.class, NULL, in vfio_create_group()
253 MKDEV(MAJOR(vfio.group_devt), minor), in vfio_create_group()
264 list_add(&group->vfio_next, &vfio.group_list); in vfio_create_group()
266 mutex_unlock(&vfio.group_lock); in vfio_create_group()
286 device_destroy(vfio.class, MKDEV(MAJOR(vfio.group_devt), group->minor)); in vfio_group_release()
295 kref_put_mutex(&group->kref, vfio_group_release, &vfio.group_lock); in vfio_group_put()
312 mutex_lock(&vfio.group_lock); in vfio_group_try_get()
313 list_for_each_entry(group, &vfio.group_list, vfio_next) { in vfio_group_try_get()
316 mutex_unlock(&vfio.group_lock); in vfio_group_try_get()
320 mutex_unlock(&vfio.group_lock); in vfio_group_try_get()
330 mutex_lock(&vfio.group_lock); in vfio_group_get_from_iommu()
331 list_for_each_entry(group, &vfio.group_list, vfio_next) { in vfio_group_get_from_iommu()
334 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_iommu()
338 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_iommu()
347 mutex_lock(&vfio.group_lock); in vfio_group_get_from_minor()
348 group = idr_find(&vfio.group_idr, minor); in vfio_group_get_from_minor()
350 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_minor()
354 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_minor()
405 wake_up(&vfio.release_q); in vfio_device_release()
761 ret = wait_event_timeout(vfio.release_q, in vfio_del_group_dev()
764 ret = wait_event_interruptible_timeout(vfio.release_q, in vfio_del_group_dev()
806 mutex_lock(&vfio.iommu_drivers_lock); in vfio_ioctl_check_extension()
807 list_for_each_entry(driver, &vfio.iommu_drivers_list, in vfio_ioctl_check_extension()
819 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_check_extension()
876 mutex_lock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
877 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_ioctl_set_iommu()
896 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
917 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
1539 idr_init(&vfio.group_idr); in vfio_init()
1540 mutex_init(&vfio.group_lock); in vfio_init()
1541 mutex_init(&vfio.iommu_drivers_lock); in vfio_init()
1542 INIT_LIST_HEAD(&vfio.group_list); in vfio_init()
1543 INIT_LIST_HEAD(&vfio.iommu_drivers_list); in vfio_init()
1544 init_waitqueue_head(&vfio.release_q); in vfio_init()
1553 vfio.class = class_create(THIS_MODULE, "vfio"); in vfio_init()
1554 if (IS_ERR(vfio.class)) { in vfio_init()
1555 ret = PTR_ERR(vfio.class); in vfio_init()
1559 vfio.class->devnode = vfio_devnode; in vfio_init()
1561 ret = alloc_chrdev_region(&vfio.group_devt, 0, MINORMASK, "vfio"); in vfio_init()
1565 cdev_init(&vfio.group_cdev, &vfio_group_fops); in vfio_init()
1566 ret = cdev_add(&vfio.group_cdev, vfio.group_devt, MINORMASK); in vfio_init()
1583 unregister_chrdev_region(vfio.group_devt, MINORMASK); in vfio_init()
1585 class_destroy(vfio.class); in vfio_init()
1586 vfio.class = NULL; in vfio_init()
1594 WARN_ON(!list_empty(&vfio.group_list)); in vfio_cleanup()
1596 idr_destroy(&vfio.group_idr); in vfio_cleanup()
1597 cdev_del(&vfio.group_cdev); in vfio_cleanup()
1598 unregister_chrdev_region(vfio.group_devt, MINORMASK); in vfio_cleanup()
1599 class_destroy(vfio.class); in vfio_cleanup()
1600 vfio.class = NULL; in vfio_cleanup()