Lines Matching refs:vfio
42 static struct vfio { struct
52 } vfio; argument
234 mutex_lock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
237 list_for_each_entry(tmp, &vfio.iommu_drivers_list, vfio_next) { in vfio_register_iommu_driver()
239 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
245 list_add(&driver->vfio_next, &vfio.iommu_drivers_list); in vfio_register_iommu_driver()
247 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
257 mutex_lock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
258 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_unregister_iommu_driver()
261 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
266 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
275 return idr_alloc(&vfio.group_idr, group, 0, MINORMASK + 1, GFP_KERNEL); in vfio_alloc_group_minor()
280 idr_remove(&vfio.group_idr, minor); in vfio_free_group_minor()
313 mutex_unlock(&vfio.group_lock); in vfio_group_unlock_and_free()
364 mutex_lock(&vfio.group_lock); in vfio_create_group()
367 list_for_each_entry(tmp, &vfio.group_list, vfio_next) { in vfio_create_group()
381 dev = device_create(vfio.class, NULL, in vfio_create_group()
382 MKDEV(MAJOR(vfio.group_devt), minor), in vfio_create_group()
394 list_add(&group->vfio_next, &vfio.group_list); in vfio_create_group()
396 mutex_unlock(&vfio.group_lock); in vfio_create_group()
417 device_destroy(vfio.class, MKDEV(MAJOR(vfio.group_devt), group->minor)); in vfio_group_release()
426 kref_put_mutex(&group->kref, vfio_group_release, &vfio.group_lock); in vfio_group_put()
471 mutex_lock(&vfio.group_lock); in vfio_group_try_get()
472 list_for_each_entry(group, &vfio.group_list, vfio_next) { in vfio_group_try_get()
475 mutex_unlock(&vfio.group_lock); in vfio_group_try_get()
479 mutex_unlock(&vfio.group_lock); in vfio_group_try_get()
489 mutex_lock(&vfio.group_lock); in vfio_group_get_from_iommu()
490 list_for_each_entry(group, &vfio.group_list, vfio_next) { in vfio_group_get_from_iommu()
493 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_iommu()
497 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_iommu()
506 mutex_lock(&vfio.group_lock); in vfio_group_get_from_minor()
507 group = idr_find(&vfio.group_idr, minor); in vfio_group_get_from_minor()
509 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_minor()
513 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_minor()
579 wake_up(&vfio.release_q); in vfio_device_release()
978 ret = wait_event_timeout(vfio.release_q, in vfio_del_group_dev()
981 ret = wait_event_interruptible_timeout(vfio.release_q, in vfio_del_group_dev()
1040 mutex_lock(&vfio.iommu_drivers_lock); in vfio_ioctl_check_extension()
1041 list_for_each_entry(driver, &vfio.iommu_drivers_list, in vfio_ioctl_check_extension()
1061 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_check_extension()
1118 mutex_lock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
1119 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_ioctl_set_iommu()
1165 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
2200 idr_init(&vfio.group_idr); in vfio_init()
2201 mutex_init(&vfio.group_lock); in vfio_init()
2202 mutex_init(&vfio.iommu_drivers_lock); in vfio_init()
2203 INIT_LIST_HEAD(&vfio.group_list); in vfio_init()
2204 INIT_LIST_HEAD(&vfio.iommu_drivers_list); in vfio_init()
2205 init_waitqueue_head(&vfio.release_q); in vfio_init()
2214 vfio.class = class_create(THIS_MODULE, "vfio"); in vfio_init()
2215 if (IS_ERR(vfio.class)) { in vfio_init()
2216 ret = PTR_ERR(vfio.class); in vfio_init()
2220 vfio.class->devnode = vfio_devnode; in vfio_init()
2222 ret = alloc_chrdev_region(&vfio.group_devt, 0, MINORMASK, "vfio"); in vfio_init()
2226 cdev_init(&vfio.group_cdev, &vfio_group_fops); in vfio_init()
2227 ret = cdev_add(&vfio.group_cdev, vfio.group_devt, MINORMASK); in vfio_init()
2239 unregister_chrdev_region(vfio.group_devt, MINORMASK); in vfio_init()
2241 class_destroy(vfio.class); in vfio_init()
2242 vfio.class = NULL; in vfio_init()
2250 WARN_ON(!list_empty(&vfio.group_list)); in vfio_cleanup()
2255 idr_destroy(&vfio.group_idr); in vfio_cleanup()
2256 cdev_del(&vfio.group_cdev); in vfio_cleanup()
2257 unregister_chrdev_region(vfio.group_devt, MINORMASK); in vfio_cleanup()
2258 class_destroy(vfio.class); in vfio_cleanup()
2259 vfio.class = NULL; in vfio_cleanup()