Lines Matching refs:driver

103 	struct vfio_iommu_driver *driver, *tmp;  in vfio_register_iommu_driver()  local
105 driver = kzalloc(sizeof(*driver), GFP_KERNEL); in vfio_register_iommu_driver()
106 if (!driver) in vfio_register_iommu_driver()
109 driver->ops = ops; in vfio_register_iommu_driver()
117 kfree(driver); in vfio_register_iommu_driver()
122 list_add(&driver->vfio_next, &vfio.iommu_drivers_list); in vfio_register_iommu_driver()
132 struct vfio_iommu_driver *driver; in vfio_unregister_iommu_driver() local
135 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_unregister_iommu_driver()
136 if (driver->ops == ops) { in vfio_unregister_iommu_driver()
137 list_del(&driver->vfio_next); in vfio_unregister_iommu_driver()
139 kfree(driver); in vfio_unregister_iommu_driver()
495 struct device_driver *drv = ACCESS_ONCE(dev->driver); in vfio_dev_viable()
590 iommu_group_id(group->iommu_group), dev->driver->name); in vfio_iommu_group_notifier()
596 iommu_group_id(group->iommu_group), dev->driver->name); in vfio_iommu_group_notifier()
837 struct vfio_iommu_driver *driver; in vfio_ioctl_check_extension() local
842 driver = container->iommu_driver; in vfio_ioctl_check_extension()
853 if (!driver) { in vfio_ioctl_check_extension()
855 list_for_each_entry(driver, &vfio.iommu_drivers_list, in vfio_ioctl_check_extension()
857 if (!try_module_get(driver->ops->owner)) in vfio_ioctl_check_extension()
860 ret = driver->ops->ioctl(NULL, in vfio_ioctl_check_extension()
863 module_put(driver->ops->owner); in vfio_ioctl_check_extension()
869 ret = driver->ops->ioctl(container->iommu_data, in vfio_ioctl_check_extension()
880 struct vfio_iommu_driver *driver, in __vfio_container_attach_groups() argument
887 ret = driver->ops->attach_group(data, group->iommu_group); in __vfio_container_attach_groups()
897 driver->ops->detach_group(data, group->iommu_group); in __vfio_container_attach_groups()
906 struct vfio_iommu_driver *driver; in vfio_ioctl_set_iommu() local
925 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_ioctl_set_iommu()
928 if (!try_module_get(driver->ops->owner)) in vfio_ioctl_set_iommu()
938 if (driver->ops->ioctl(NULL, VFIO_CHECK_EXTENSION, arg) <= 0) { in vfio_ioctl_set_iommu()
939 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
946 data = driver->ops->open(arg); in vfio_ioctl_set_iommu()
949 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
953 ret = __vfio_container_attach_groups(container, driver, data); in vfio_ioctl_set_iommu()
955 container->iommu_driver = driver; in vfio_ioctl_set_iommu()
958 driver->ops->release(data); in vfio_ioctl_set_iommu()
959 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
976 struct vfio_iommu_driver *driver; in vfio_fops_unl_ioctl() local
996 driver = container->iommu_driver; in vfio_fops_unl_ioctl()
999 if (driver) /* passthrough all unrecognized ioctls */ in vfio_fops_unl_ioctl()
1000 ret = driver->ops->ioctl(data, cmd, arg); in vfio_fops_unl_ioctl()
1053 struct vfio_iommu_driver *driver; in vfio_fops_read() local
1058 driver = container->iommu_driver; in vfio_fops_read()
1059 if (likely(driver && driver->ops->read)) in vfio_fops_read()
1060 ret = driver->ops->read(container->iommu_data, in vfio_fops_read()
1072 struct vfio_iommu_driver *driver; in vfio_fops_write() local
1077 driver = container->iommu_driver; in vfio_fops_write()
1078 if (likely(driver && driver->ops->write)) in vfio_fops_write()
1079 ret = driver->ops->write(container->iommu_data, in vfio_fops_write()
1090 struct vfio_iommu_driver *driver; in vfio_fops_mmap() local
1095 driver = container->iommu_driver; in vfio_fops_mmap()
1096 if (likely(driver && driver->ops->mmap)) in vfio_fops_mmap()
1097 ret = driver->ops->mmap(container->iommu_data, vma); in vfio_fops_mmap()
1123 struct vfio_iommu_driver *driver; in __vfio_group_unset_container() local
1127 driver = container->iommu_driver; in __vfio_group_unset_container()
1128 if (driver) in __vfio_group_unset_container()
1129 driver->ops->detach_group(container->iommu_data, in __vfio_group_unset_container()
1136 if (driver && list_empty(&container->group_list)) { in __vfio_group_unset_container()
1137 driver->ops->release(container->iommu_data); in __vfio_group_unset_container()
1138 module_put(driver->ops->owner); in __vfio_group_unset_container()
1184 struct vfio_iommu_driver *driver; in vfio_group_set_container() local
1205 driver = container->iommu_driver; in vfio_group_set_container()
1206 if (driver) { in vfio_group_set_container()
1207 ret = driver->ops->attach_group(container->iommu_data, in vfio_group_set_container()