Lines Matching refs:iommu_group

75 	struct iommu_group		*iommu_group;  member
198 struct iommu_group *iommu_group, enum vfio_group_type type) in vfio_noiommu_attach_group() argument
204 struct iommu_group *iommu_group) in vfio_noiommu_detach_group() argument
316 __vfio_group_get_from_iommu(struct iommu_group *iommu_group) in __vfio_group_get_from_iommu() argument
321 if (group->iommu_group == iommu_group) { in __vfio_group_get_from_iommu()
330 vfio_group_get_from_iommu(struct iommu_group *iommu_group) in vfio_group_get_from_iommu() argument
335 group = __vfio_group_get_from_iommu(iommu_group); in vfio_group_get_from_iommu()
353 iommu_group_put(group->iommu_group); in vfio_group_release()
358 static struct vfio_group *vfio_group_alloc(struct iommu_group *iommu_group, in vfio_group_alloc() argument
387 group->iommu_group = iommu_group; in vfio_group_alloc()
389 iommu_group_ref_get(iommu_group); in vfio_group_alloc()
396 static struct vfio_group *vfio_create_group(struct iommu_group *iommu_group, in vfio_create_group() argument
403 group = vfio_group_alloc(iommu_group, type); in vfio_create_group()
409 iommu_group_id(iommu_group)); in vfio_create_group()
416 err = iommu_group_register_notifier(iommu_group, &group->nb); in vfio_create_group()
425 ret = __vfio_group_get_from_iommu(iommu_group); in vfio_create_group()
442 iommu_group_unregister_notifier(group->iommu_group, &group->nb); in vfio_create_group()
467 iommu_group_unregister_notifier(group->iommu_group, &group->nb); in vfio_group_put()
478 struct iommu_group *iommu_group; in vfio_group_get_from_dev() local
481 iommu_group = iommu_group_get(dev); in vfio_group_get_from_dev()
482 if (!iommu_group) in vfio_group_get_from_dev()
485 group = vfio_group_get_from_iommu(iommu_group); in vfio_group_get_from_dev()
486 iommu_group_put(iommu_group); in vfio_group_get_from_dev()
618 iommu_group_id(group->iommu_group)); in vfio_group_nb_add_dev()
654 iommu_group_id(group->iommu_group)); in vfio_iommu_group_notifier()
658 iommu_group_id(group->iommu_group), dev->driver->name); in vfio_iommu_group_notifier()
663 __func__, iommu_group_id(group->iommu_group), in vfio_iommu_group_notifier()
668 iommu_group_id(group->iommu_group)); in vfio_iommu_group_notifier()
713 struct iommu_group *iommu_group; in vfio_noiommu_group_alloc() local
717 iommu_group = iommu_group_alloc(); in vfio_noiommu_group_alloc()
718 if (IS_ERR(iommu_group)) in vfio_noiommu_group_alloc()
719 return ERR_CAST(iommu_group); in vfio_noiommu_group_alloc()
721 iommu_group_set_name(iommu_group, "vfio-noiommu"); in vfio_noiommu_group_alloc()
722 ret = iommu_group_add_device(iommu_group, dev); in vfio_noiommu_group_alloc()
726 group = vfio_create_group(iommu_group, type); in vfio_noiommu_group_alloc()
731 iommu_group_put(iommu_group); in vfio_noiommu_group_alloc()
737 iommu_group_put(iommu_group); in vfio_noiommu_group_alloc()
743 struct iommu_group *iommu_group; in vfio_group_find_or_alloc() local
746 iommu_group = iommu_group_get(dev); in vfio_group_find_or_alloc()
748 if (!iommu_group && noiommu && !iommu_present(dev->bus)) { in vfio_group_find_or_alloc()
763 if (!iommu_group) in vfio_group_find_or_alloc()
766 group = vfio_group_get_from_iommu(iommu_group); in vfio_group_find_or_alloc()
768 group = vfio_create_group(iommu_group, VFIO_IOMMU); in vfio_group_find_or_alloc()
771 iommu_group_put(iommu_group); in vfio_group_find_or_alloc()
793 iommu_group_id(group->iommu_group)); in __vfio_register_dev()
1029 ret = driver->ops->attach_group(data, group->iommu_group, in __vfio_container_attach_groups()
1040 driver->ops->detach_group(data, group->iommu_group); in __vfio_container_attach_groups()
1199 group->iommu_group); in __vfio_group_unset_container()
1288 group->iommu_group, in vfio_group_set_container()
1310 return (iommu_group_for_each_dev(group->iommu_group, in vfio_group_viable()
1718 return iommu_group_id(group->iommu_group); in vfio_external_user_iommu_id()
1888 group->iommu_group, user_pfn, in vfio_pin_pages()
1989 group->iommu_group, user_iova_pfn, in vfio_group_pin_pages()
2269 group->iommu_group); in vfio_group_iommu_domain()