Lines Matching refs:vfio

40 static struct vfio {  struct
50 } vfio; argument
232 mutex_lock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
235 list_for_each_entry(tmp, &vfio.iommu_drivers_list, vfio_next) { in vfio_register_iommu_driver()
237 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
243 list_add(&driver->vfio_next, &vfio.iommu_drivers_list); in vfio_register_iommu_driver()
245 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
255 mutex_lock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
256 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_unregister_iommu_driver()
259 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
264 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
273 return idr_alloc(&vfio.group_idr, group, 0, MINORMASK + 1, GFP_KERNEL); in vfio_alloc_group_minor()
278 idr_remove(&vfio.group_idr, minor); in vfio_free_group_minor()
311 mutex_unlock(&vfio.group_lock); in vfio_group_unlock_and_free()
362 mutex_lock(&vfio.group_lock); in vfio_create_group()
365 list_for_each_entry(tmp, &vfio.group_list, vfio_next) { in vfio_create_group()
379 dev = device_create(vfio.class, NULL, in vfio_create_group()
380 MKDEV(MAJOR(vfio.group_devt), minor), in vfio_create_group()
392 list_add(&group->vfio_next, &vfio.group_list); in vfio_create_group()
394 mutex_unlock(&vfio.group_lock); in vfio_create_group()
415 device_destroy(vfio.class, MKDEV(MAJOR(vfio.group_devt), group->minor)); in vfio_group_release()
424 kref_put_mutex(&group->kref, vfio_group_release, &vfio.group_lock); in vfio_group_put()
469 mutex_lock(&vfio.group_lock); in vfio_group_try_get()
470 list_for_each_entry(group, &vfio.group_list, vfio_next) { in vfio_group_try_get()
473 mutex_unlock(&vfio.group_lock); in vfio_group_try_get()
477 mutex_unlock(&vfio.group_lock); in vfio_group_try_get()
487 mutex_lock(&vfio.group_lock); in vfio_group_get_from_iommu()
488 list_for_each_entry(group, &vfio.group_list, vfio_next) { in vfio_group_get_from_iommu()
491 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_iommu()
495 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_iommu()
504 mutex_lock(&vfio.group_lock); in vfio_group_get_from_minor()
505 group = idr_find(&vfio.group_idr, minor); in vfio_group_get_from_minor()
507 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_minor()
511 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_minor()
577 wake_up(&vfio.release_q); in vfio_device_release()
949 add_wait_queue(&vfio.release_q, &wait); in vfio_del_group_dev()
977 remove_wait_queue(&vfio.release_q, &wait); in vfio_del_group_dev()
1024 mutex_lock(&vfio.iommu_drivers_lock); in vfio_ioctl_check_extension()
1025 list_for_each_entry(driver, &vfio.iommu_drivers_list, in vfio_ioctl_check_extension()
1045 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_check_extension()
1102 mutex_lock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
1103 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_ioctl_set_iommu()
1149 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
2184 idr_init(&vfio.group_idr); in vfio_init()
2185 mutex_init(&vfio.group_lock); in vfio_init()
2186 mutex_init(&vfio.iommu_drivers_lock); in vfio_init()
2187 INIT_LIST_HEAD(&vfio.group_list); in vfio_init()
2188 INIT_LIST_HEAD(&vfio.iommu_drivers_list); in vfio_init()
2189 init_waitqueue_head(&vfio.release_q); in vfio_init()
2198 vfio.class = class_create(THIS_MODULE, "vfio"); in vfio_init()
2199 if (IS_ERR(vfio.class)) { in vfio_init()
2200 ret = PTR_ERR(vfio.class); in vfio_init()
2204 vfio.class->devnode = vfio_devnode; in vfio_init()
2206 ret = alloc_chrdev_region(&vfio.group_devt, 0, MINORMASK + 1, "vfio"); in vfio_init()
2210 cdev_init(&vfio.group_cdev, &vfio_group_fops); in vfio_init()
2211 ret = cdev_add(&vfio.group_cdev, vfio.group_devt, MINORMASK + 1); in vfio_init()
2223 unregister_chrdev_region(vfio.group_devt, MINORMASK + 1); in vfio_init()
2225 class_destroy(vfio.class); in vfio_init()
2226 vfio.class = NULL; in vfio_init()
2234 WARN_ON(!list_empty(&vfio.group_list)); in vfio_cleanup()
2239 idr_destroy(&vfio.group_idr); in vfio_cleanup()
2240 cdev_del(&vfio.group_cdev); in vfio_cleanup()
2241 unregister_chrdev_region(vfio.group_devt, MINORMASK + 1); in vfio_cleanup()
2242 class_destroy(vfio.class); in vfio_cleanup()
2243 vfio.class = NULL; in vfio_cleanup()