Lines Matching refs:driver

102 	struct vfio_iommu_driver *driver, *tmp;  in vfio_register_iommu_driver()  local
104 driver = kzalloc(sizeof(*driver), GFP_KERNEL); in vfio_register_iommu_driver()
105 if (!driver) in vfio_register_iommu_driver()
108 driver->ops = ops; in vfio_register_iommu_driver()
116 kfree(driver); in vfio_register_iommu_driver()
121 list_add(&driver->vfio_next, &vfio.iommu_drivers_list); in vfio_register_iommu_driver()
131 struct vfio_iommu_driver *driver; in vfio_unregister_iommu_driver() local
134 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_unregister_iommu_driver()
135 if (driver->ops == ops) { in vfio_unregister_iommu_driver()
136 list_del(&driver->vfio_next); in vfio_unregister_iommu_driver()
138 kfree(driver); in vfio_unregister_iommu_driver()
476 struct device_driver *drv = ACCESS_ONCE(dev->driver); in vfio_dev_viable()
571 iommu_group_id(group->iommu_group), dev->driver->name); in vfio_iommu_group_notifier()
577 iommu_group_id(group->iommu_group), dev->driver->name); in vfio_iommu_group_notifier()
789 struct vfio_iommu_driver *driver; in vfio_ioctl_check_extension() local
794 driver = container->iommu_driver; in vfio_ioctl_check_extension()
805 if (!driver) { in vfio_ioctl_check_extension()
807 list_for_each_entry(driver, &vfio.iommu_drivers_list, in vfio_ioctl_check_extension()
809 if (!try_module_get(driver->ops->owner)) in vfio_ioctl_check_extension()
812 ret = driver->ops->ioctl(NULL, in vfio_ioctl_check_extension()
815 module_put(driver->ops->owner); in vfio_ioctl_check_extension()
821 ret = driver->ops->ioctl(container->iommu_data, in vfio_ioctl_check_extension()
832 struct vfio_iommu_driver *driver, in __vfio_container_attach_groups() argument
839 ret = driver->ops->attach_group(data, group->iommu_group); in __vfio_container_attach_groups()
849 driver->ops->detach_group(data, group->iommu_group); in __vfio_container_attach_groups()
858 struct vfio_iommu_driver *driver; in vfio_ioctl_set_iommu() local
877 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_ioctl_set_iommu()
880 if (!try_module_get(driver->ops->owner)) in vfio_ioctl_set_iommu()
890 if (driver->ops->ioctl(NULL, VFIO_CHECK_EXTENSION, arg) <= 0) { in vfio_ioctl_set_iommu()
891 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
898 data = driver->ops->open(arg); in vfio_ioctl_set_iommu()
901 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
905 ret = __vfio_container_attach_groups(container, driver, data); in vfio_ioctl_set_iommu()
907 container->iommu_driver = driver; in vfio_ioctl_set_iommu()
910 driver->ops->release(data); in vfio_ioctl_set_iommu()
911 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
928 struct vfio_iommu_driver *driver; in vfio_fops_unl_ioctl() local
948 driver = container->iommu_driver; in vfio_fops_unl_ioctl()
951 if (driver) /* passthrough all unrecognized ioctls */ in vfio_fops_unl_ioctl()
952 ret = driver->ops->ioctl(data, cmd, arg); in vfio_fops_unl_ioctl()
1005 struct vfio_iommu_driver *driver; in vfio_fops_read() local
1010 driver = container->iommu_driver; in vfio_fops_read()
1011 if (likely(driver && driver->ops->read)) in vfio_fops_read()
1012 ret = driver->ops->read(container->iommu_data, in vfio_fops_read()
1024 struct vfio_iommu_driver *driver; in vfio_fops_write() local
1029 driver = container->iommu_driver; in vfio_fops_write()
1030 if (likely(driver && driver->ops->write)) in vfio_fops_write()
1031 ret = driver->ops->write(container->iommu_data, in vfio_fops_write()
1042 struct vfio_iommu_driver *driver; in vfio_fops_mmap() local
1047 driver = container->iommu_driver; in vfio_fops_mmap()
1048 if (likely(driver && driver->ops->mmap)) in vfio_fops_mmap()
1049 ret = driver->ops->mmap(container->iommu_data, vma); in vfio_fops_mmap()
1075 struct vfio_iommu_driver *driver; in __vfio_group_unset_container() local
1079 driver = container->iommu_driver; in __vfio_group_unset_container()
1080 if (driver) in __vfio_group_unset_container()
1081 driver->ops->detach_group(container->iommu_data, in __vfio_group_unset_container()
1088 if (driver && list_empty(&container->group_list)) { in __vfio_group_unset_container()
1089 driver->ops->release(container->iommu_data); in __vfio_group_unset_container()
1090 module_put(driver->ops->owner); in __vfio_group_unset_container()
1136 struct vfio_iommu_driver *driver; in vfio_group_set_container() local
1157 driver = container->iommu_driver; in vfio_group_set_container()
1158 if (driver) { in vfio_group_set_container()
1159 ret = driver->ops->attach_group(container->iommu_data, in vfio_group_set_container()