Lines Matching refs:iommu_group

75 	struct iommu_group		*iommu_group;  member
117 struct iommu_group *vfio_iommu_group_get(struct device *dev) in vfio_iommu_group_get()
119 struct iommu_group *group; in vfio_iommu_group_get()
162 void vfio_iommu_group_put(struct iommu_group *group, struct device *dev) in vfio_iommu_group_put()
198 struct iommu_group *iommu_group) in vfio_noiommu_attach_group() argument
200 return iommu_group_get_iommudata(iommu_group) == &noiommu ? 0 : -EINVAL; in vfio_noiommu_attach_group()
204 struct iommu_group *iommu_group) in vfio_noiommu_detach_group() argument
317 iommu_group_unregister_notifier(group->iommu_group, &group->nb); in vfio_group_unlock_and_free()
324 static struct vfio_group *vfio_create_group(struct iommu_group *iommu_group) in vfio_create_group() argument
342 group->iommu_group = iommu_group; in vfio_create_group()
344 group->noiommu = (iommu_group_get_iommudata(iommu_group) == &noiommu); in vfio_create_group()
357 ret = iommu_group_register_notifier(iommu_group, &group->nb); in vfio_create_group()
367 if (tmp->iommu_group == iommu_group) { in vfio_create_group()
383 iommu_group_id(iommu_group)); in vfio_create_group()
405 struct iommu_group *iommu_group = group->iommu_group; in vfio_group_release() local
420 iommu_group_put(iommu_group); in vfio_group_release()
484 struct vfio_group *vfio_group_get_from_iommu(struct iommu_group *iommu_group) in vfio_group_get_from_iommu() argument
490 if (group->iommu_group == iommu_group) { in vfio_group_get_from_iommu()
519 struct iommu_group *iommu_group; in vfio_group_get_from_dev() local
522 iommu_group = iommu_group_get(dev); in vfio_group_get_from_dev()
523 if (!iommu_group) in vfio_group_get_from_dev()
526 group = vfio_group_get_from_iommu(iommu_group); in vfio_group_get_from_dev()
527 iommu_group_put(iommu_group); in vfio_group_get_from_dev()
710 iommu_group_id(group->iommu_group)); in vfio_group_nb_add_dev()
754 iommu_group_id(group->iommu_group)); in vfio_iommu_group_notifier()
758 iommu_group_id(group->iommu_group), dev->driver->name); in vfio_iommu_group_notifier()
763 __func__, iommu_group_id(group->iommu_group), in vfio_iommu_group_notifier()
768 iommu_group_id(group->iommu_group)); in vfio_iommu_group_notifier()
807 struct iommu_group *iommu_group; in vfio_add_group_dev() local
811 iommu_group = iommu_group_get(dev); in vfio_add_group_dev()
812 if (!iommu_group) in vfio_add_group_dev()
815 group = vfio_group_get_from_iommu(iommu_group); in vfio_add_group_dev()
817 group = vfio_create_group(iommu_group); in vfio_add_group_dev()
819 iommu_group_put(iommu_group); in vfio_add_group_dev()
827 iommu_group_put(iommu_group); in vfio_add_group_dev()
833 iommu_group_id(iommu_group)); in vfio_add_group_dev()
1081 ret = driver->ops->attach_group(data, group->iommu_group); in __vfio_container_attach_groups()
1091 driver->ops->detach_group(data, group->iommu_group); in __vfio_container_attach_groups()
1302 group->iommu_group); in __vfio_group_unset_container()
1391 group->iommu_group); in vfio_group_set_container()
1412 return (iommu_group_for_each_dev(group->iommu_group, in vfio_group_viable()
1795 return iommu_group_id(group->iommu_group); in vfio_external_user_iommu_id()
1965 group->iommu_group, user_pfn, in vfio_pin_pages()
2066 group->iommu_group, user_iova_pfn, in vfio_group_pin_pages()