Lines Matching refs:driver

81 				      const struct vfio_iommu_driver *driver)  in vfio_iommu_driver_allowed()  argument
85 return container->noiommu == (driver->ops == &vfio_noiommu_ops); in vfio_iommu_driver_allowed()
93 struct vfio_iommu_driver *driver, *tmp; in vfio_register_iommu_driver() local
98 driver = kzalloc(sizeof(*driver), GFP_KERNEL); in vfio_register_iommu_driver()
99 if (!driver) in vfio_register_iommu_driver()
102 driver->ops = ops; in vfio_register_iommu_driver()
110 kfree(driver); in vfio_register_iommu_driver()
115 list_add(&driver->vfio_next, &vfio.iommu_drivers_list); in vfio_register_iommu_driver()
125 struct vfio_iommu_driver *driver; in vfio_unregister_iommu_driver() local
128 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_unregister_iommu_driver()
129 if (driver->ops == ops) { in vfio_unregister_iommu_driver()
130 list_del(&driver->vfio_next); in vfio_unregister_iommu_driver()
132 kfree(driver); in vfio_unregister_iommu_driver()
188 struct vfio_iommu_driver *driver; in vfio_container_ioctl_check_extension() local
193 driver = container->iommu_driver; in vfio_container_ioctl_check_extension()
204 if (!driver) { in vfio_container_ioctl_check_extension()
206 list_for_each_entry(driver, &vfio.iommu_drivers_list, in vfio_container_ioctl_check_extension()
211 driver)) in vfio_container_ioctl_check_extension()
213 if (!try_module_get(driver->ops->owner)) in vfio_container_ioctl_check_extension()
216 ret = driver->ops->ioctl(NULL, in vfio_container_ioctl_check_extension()
219 module_put(driver->ops->owner); in vfio_container_ioctl_check_extension()
225 ret = driver->ops->ioctl(container->iommu_data, in vfio_container_ioctl_check_extension()
236 struct vfio_iommu_driver *driver, in __vfio_container_attach_groups() argument
243 ret = driver->ops->attach_group(data, group->iommu_group, in __vfio_container_attach_groups()
254 driver->ops->detach_group(data, group->iommu_group); in __vfio_container_attach_groups()
263 struct vfio_iommu_driver *driver; in vfio_ioctl_set_iommu() local
282 list_for_each_entry(driver, &vfio.iommu_drivers_list, vfio_next) { in vfio_ioctl_set_iommu()
285 if (!vfio_iommu_driver_allowed(container, driver)) in vfio_ioctl_set_iommu()
287 if (!try_module_get(driver->ops->owner)) in vfio_ioctl_set_iommu()
297 if (driver->ops->ioctl(NULL, VFIO_CHECK_EXTENSION, arg) <= 0) { in vfio_ioctl_set_iommu()
298 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
302 data = driver->ops->open(arg); in vfio_ioctl_set_iommu()
305 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
309 ret = __vfio_container_attach_groups(container, driver, data); in vfio_ioctl_set_iommu()
311 driver->ops->release(data); in vfio_ioctl_set_iommu()
312 module_put(driver->ops->owner); in vfio_ioctl_set_iommu()
316 container->iommu_driver = driver; in vfio_ioctl_set_iommu()
331 struct vfio_iommu_driver *driver; in vfio_fops_unl_ioctl() local
349 driver = container->iommu_driver; in vfio_fops_unl_ioctl()
352 if (driver) /* passthrough all unrecognized ioctls */ in vfio_fops_unl_ioctl()
353 ret = driver->ops->ioctl(data, cmd, arg); in vfio_fops_unl_ioctl()
419 struct vfio_iommu_driver *driver; in vfio_container_attach_group() local
442 driver = container->iommu_driver; in vfio_container_attach_group()
443 if (driver) { in vfio_container_attach_group()
444 ret = driver->ops->attach_group(container->iommu_data, in vfio_container_attach_group()
471 struct vfio_iommu_driver *driver; in vfio_group_detach_container() local
478 driver = container->iommu_driver; in vfio_group_detach_container()
479 if (driver) in vfio_group_detach_container()
480 driver->ops->detach_group(container->iommu_data, in vfio_group_detach_container()
491 if (driver && list_empty(&container->group_list)) { in vfio_group_detach_container()
492 driver->ops->release(container->iommu_data); in vfio_group_detach_container()
493 module_put(driver->ops->owner); in vfio_group_detach_container()
537 struct vfio_iommu_driver *driver = container->iommu_driver; in vfio_device_container_pin_pages() local
542 if (unlikely(!driver || !driver->ops->pin_pages)) in vfio_device_container_pin_pages()
544 return driver->ops->pin_pages(container->iommu_data, iommu_group, iova, in vfio_device_container_pin_pages()
565 struct vfio_iommu_driver *driver = container->iommu_driver; in vfio_device_container_dma_rw() local
567 if (unlikely(!driver || !driver->ops->dma_rw)) in vfio_device_container_dma_rw()
569 return driver->ops->dma_rw(container->iommu_data, iova, data, len, in vfio_device_container_dma_rw()