Lines Matching refs:group

167 		device->group->container->iommu_driver;  in vfio_device_container_register()
171 device->group->container->iommu_data, device); in vfio_device_container_register()
177 device->group->container->iommu_driver; in vfio_device_container_unregister()
181 device->group->container->iommu_data, device); in vfio_device_container_unregister()
239 struct vfio_group *group; in __vfio_container_attach_groups() local
242 list_for_each_entry(group, &container->group_list, container_next) { in __vfio_container_attach_groups()
243 ret = driver->ops->attach_group(data, group->iommu_group, in __vfio_container_attach_groups()
244 group->type); in __vfio_container_attach_groups()
252 list_for_each_entry_continue_reverse(group, &container->group_list, in __vfio_container_attach_groups()
254 driver->ops->detach_group(data, group->iommu_group); in __vfio_container_attach_groups()
417 struct vfio_group *group) in vfio_container_attach_group() argument
422 lockdep_assert_held(&group->group_lock); in vfio_container_attach_group()
424 if (group->type == VFIO_NO_IOMMU && !capable(CAP_SYS_RAWIO)) in vfio_container_attach_group()
431 container->noiommu != (group->type == VFIO_NO_IOMMU)) { in vfio_container_attach_group()
436 if (group->type == VFIO_IOMMU) { in vfio_container_attach_group()
437 ret = iommu_group_claim_dma_owner(group->iommu_group, group); in vfio_container_attach_group()
445 group->iommu_group, in vfio_container_attach_group()
446 group->type); in vfio_container_attach_group()
448 if (group->type == VFIO_IOMMU) in vfio_container_attach_group()
450 group->iommu_group); in vfio_container_attach_group()
455 group->container = container; in vfio_container_attach_group()
456 group->container_users = 1; in vfio_container_attach_group()
457 container->noiommu = (group->type == VFIO_NO_IOMMU); in vfio_container_attach_group()
458 list_add(&group->container_next, &container->group_list); in vfio_container_attach_group()
468 void vfio_group_detach_container(struct vfio_group *group) in vfio_group_detach_container() argument
470 struct vfio_container *container = group->container; in vfio_group_detach_container()
473 lockdep_assert_held(&group->group_lock); in vfio_group_detach_container()
474 WARN_ON(group->container_users != 1); in vfio_group_detach_container()
481 group->iommu_group); in vfio_group_detach_container()
483 if (group->type == VFIO_IOMMU) in vfio_group_detach_container()
484 iommu_group_release_dma_owner(group->iommu_group); in vfio_group_detach_container()
486 group->container = NULL; in vfio_group_detach_container()
487 group->container_users = 0; in vfio_group_detach_container()
488 list_del(&group->container_next); in vfio_group_detach_container()
503 int vfio_group_use_container(struct vfio_group *group) in vfio_group_use_container() argument
505 lockdep_assert_held(&group->group_lock); in vfio_group_use_container()
511 if (!group->container->iommu_driver) in vfio_group_use_container()
514 if (group->type == VFIO_NO_IOMMU && !capable(CAP_SYS_RAWIO)) in vfio_group_use_container()
517 get_file(group->opened_file); in vfio_group_use_container()
518 group->container_users++; in vfio_group_use_container()
522 void vfio_group_unuse_container(struct vfio_group *group) in vfio_group_unuse_container() argument
524 lockdep_assert_held(&group->group_lock); in vfio_group_unuse_container()
526 WARN_ON(group->container_users <= 1); in vfio_group_unuse_container()
527 group->container_users--; in vfio_group_unuse_container()
528 fput(group->opened_file); in vfio_group_unuse_container()
535 struct vfio_container *container = device->group->container; in vfio_device_container_pin_pages()
536 struct iommu_group *iommu_group = device->group->iommu_group; in vfio_device_container_pin_pages()
551 struct vfio_container *container = device->group->container; in vfio_device_container_unpin_pages()
564 struct vfio_container *container = device->group->container; in vfio_device_container_dma_rw()