Lines Matching refs:vfio
42 static struct vfio { struct
52 } vfio; argument
111 mutex_lock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
114 list_for_each_entry(tmp, &vfio.iommu_drivers_list, vfio_next) { in vfio_register_iommu_driver()
116 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
122 list_add(&driver->vfio_next, &vfio.iommu_drivers_list); in vfio_register_iommu_driver()
124 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_register_iommu_driver()
134 mutex_lock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
135 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_unregister_iommu_driver()
138 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
143 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_unregister_iommu_driver()
152 return idr_alloc(&vfio.group_idr, group, 0, MINORMASK + 1, GFP_KERNEL); in vfio_alloc_group_minor()
157 idr_remove(&vfio.group_idr, minor); in vfio_free_group_minor()
190 mutex_unlock(&vfio.group_lock); in vfio_group_unlock_and_free()
236 mutex_lock(&vfio.group_lock); in vfio_create_group()
239 list_for_each_entry(tmp, &vfio.group_list, vfio_next) { in vfio_create_group()
253 dev = device_create(vfio.class, NULL, in vfio_create_group()
254 MKDEV(MAJOR(vfio.group_devt), minor), in vfio_create_group()
265 list_add(&group->vfio_next, &vfio.group_list); in vfio_create_group()
267 mutex_unlock(&vfio.group_lock); in vfio_create_group()
287 device_destroy(vfio.class, MKDEV(MAJOR(vfio.group_devt), group->minor)); in vfio_group_release()
296 kref_put_mutex(&group->kref, vfio_group_release, &vfio.group_lock); in vfio_group_put()
313 mutex_lock(&vfio.group_lock); in vfio_group_try_get()
314 list_for_each_entry(group, &vfio.group_list, vfio_next) { in vfio_group_try_get()
317 mutex_unlock(&vfio.group_lock); in vfio_group_try_get()
321 mutex_unlock(&vfio.group_lock); in vfio_group_try_get()
331 mutex_lock(&vfio.group_lock); in vfio_group_get_from_iommu()
332 list_for_each_entry(group, &vfio.group_list, vfio_next) { in vfio_group_get_from_iommu()
335 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_iommu()
339 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_iommu()
348 mutex_lock(&vfio.group_lock); in vfio_group_get_from_minor()
349 group = idr_find(&vfio.group_idr, minor); in vfio_group_get_from_minor()
351 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_minor()
355 mutex_unlock(&vfio.group_lock); in vfio_group_get_from_minor()
406 wake_up(&vfio.release_q); in vfio_device_release()
809 ret = wait_event_timeout(vfio.release_q, in vfio_del_group_dev()
812 ret = wait_event_interruptible_timeout(vfio.release_q, in vfio_del_group_dev()
854 mutex_lock(&vfio.iommu_drivers_lock); in vfio_ioctl_check_extension()
855 list_for_each_entry(driver, &vfio.iommu_drivers_list, in vfio_ioctl_check_extension()
867 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_check_extension()
924 mutex_lock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
925 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_ioctl_set_iommu()
944 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
965 mutex_unlock(&vfio.iommu_drivers_lock); in vfio_ioctl_set_iommu()
1587 idr_init(&vfio.group_idr); in vfio_init()
1588 mutex_init(&vfio.group_lock); in vfio_init()
1589 mutex_init(&vfio.iommu_drivers_lock); in vfio_init()
1590 INIT_LIST_HEAD(&vfio.group_list); in vfio_init()
1591 INIT_LIST_HEAD(&vfio.iommu_drivers_list); in vfio_init()
1592 init_waitqueue_head(&vfio.release_q); in vfio_init()
1601 vfio.class = class_create(THIS_MODULE, "vfio"); in vfio_init()
1602 if (IS_ERR(vfio.class)) { in vfio_init()
1603 ret = PTR_ERR(vfio.class); in vfio_init()
1607 vfio.class->devnode = vfio_devnode; in vfio_init()
1609 ret = alloc_chrdev_region(&vfio.group_devt, 0, MINORMASK, "vfio"); in vfio_init()
1613 cdev_init(&vfio.group_cdev, &vfio_group_fops); in vfio_init()
1614 ret = cdev_add(&vfio.group_cdev, vfio.group_devt, MINORMASK); in vfio_init()
1631 unregister_chrdev_region(vfio.group_devt, MINORMASK); in vfio_init()
1633 class_destroy(vfio.class); in vfio_init()
1634 vfio.class = NULL; in vfio_init()
1642 WARN_ON(!list_empty(&vfio.group_list)); in vfio_cleanup()
1644 idr_destroy(&vfio.group_idr); in vfio_cleanup()
1645 cdev_del(&vfio.group_cdev); in vfio_cleanup()
1646 unregister_chrdev_region(vfio.group_devt, MINORMASK); in vfio_cleanup()
1647 class_destroy(vfio.class); in vfio_cleanup()
1648 vfio.class = NULL; in vfio_cleanup()