Lines Matching refs:group

174 		device->group->container->iommu_driver;  in vfio_device_container_register()
178 device->group->container->iommu_data, device); in vfio_device_container_register()
184 device->group->container->iommu_driver; in vfio_device_container_unregister()
188 device->group->container->iommu_data, device); in vfio_device_container_unregister()
245 struct vfio_group *group; in __vfio_container_attach_groups() local
248 list_for_each_entry(group, &container->group_list, container_next) { in __vfio_container_attach_groups()
249 ret = driver->ops->attach_group(data, group->iommu_group, in __vfio_container_attach_groups()
250 group->type); in __vfio_container_attach_groups()
258 list_for_each_entry_continue_reverse(group, &container->group_list, in __vfio_container_attach_groups()
260 driver->ops->detach_group(data, group->iommu_group); in __vfio_container_attach_groups()
428 struct vfio_group *group) in vfio_container_attach_group() argument
433 lockdep_assert_held(&group->group_lock); in vfio_container_attach_group()
435 if (group->type == VFIO_NO_IOMMU && !capable(CAP_SYS_RAWIO)) in vfio_container_attach_group()
442 container->noiommu != (group->type == VFIO_NO_IOMMU)) { in vfio_container_attach_group()
447 if (group->type == VFIO_IOMMU) { in vfio_container_attach_group()
448 ret = iommu_group_claim_dma_owner(group->iommu_group, group); in vfio_container_attach_group()
456 group->iommu_group, in vfio_container_attach_group()
457 group->type); in vfio_container_attach_group()
459 if (group->type == VFIO_IOMMU) in vfio_container_attach_group()
461 group->iommu_group); in vfio_container_attach_group()
466 group->container = container; in vfio_container_attach_group()
467 group->container_users = 1; in vfio_container_attach_group()
468 container->noiommu = (group->type == VFIO_NO_IOMMU); in vfio_container_attach_group()
469 list_add(&group->container_next, &container->group_list); in vfio_container_attach_group()
479 void vfio_group_detach_container(struct vfio_group *group) in vfio_group_detach_container() argument
481 struct vfio_container *container = group->container; in vfio_group_detach_container()
484 lockdep_assert_held(&group->group_lock); in vfio_group_detach_container()
485 WARN_ON(group->container_users != 1); in vfio_group_detach_container()
492 group->iommu_group); in vfio_group_detach_container()
494 if (group->type == VFIO_IOMMU) in vfio_group_detach_container()
495 iommu_group_release_dma_owner(group->iommu_group); in vfio_group_detach_container()
497 group->container = NULL; in vfio_group_detach_container()
498 group->container_users = 0; in vfio_group_detach_container()
499 list_del(&group->container_next); in vfio_group_detach_container()
516 struct vfio_group *group = device->group; in vfio_device_assign_container() local
518 lockdep_assert_held(&group->group_lock); in vfio_device_assign_container()
520 if (!group->container || !group->container->iommu_driver || in vfio_device_assign_container()
521 WARN_ON(!group->container_users)) in vfio_device_assign_container()
524 if (group->type == VFIO_NO_IOMMU && !capable(CAP_SYS_RAWIO)) in vfio_device_assign_container()
527 get_file(group->opened_file); in vfio_device_assign_container()
528 group->container_users++; in vfio_device_assign_container()
534 mutex_lock(&device->group->group_lock); in vfio_device_unassign_container()
535 WARN_ON(device->group->container_users <= 1); in vfio_device_unassign_container()
536 device->group->container_users--; in vfio_device_unassign_container()
537 fput(device->group->opened_file); in vfio_device_unassign_container()
538 mutex_unlock(&device->group->group_lock); in vfio_device_unassign_container()
559 struct vfio_group *group = device->group; in vfio_pin_pages() local
570 container = group->container; in vfio_pin_pages()
574 group->iommu_group, iova, in vfio_pin_pages()
602 container = device->group->container; in vfio_unpin_pages()
637 container = device->group->container; in vfio_dma_rw()