Lines Matching refs:iommu_group
145 __vfio_group_get_from_iommu(struct iommu_group *iommu_group) in __vfio_group_get_from_iommu() argument
154 if (group->iommu_group == iommu_group) { in __vfio_group_get_from_iommu()
163 vfio_group_get_from_iommu(struct iommu_group *iommu_group) in vfio_group_get_from_iommu() argument
168 group = __vfio_group_get_from_iommu(iommu_group); in vfio_group_get_from_iommu()
179 WARN_ON(group->iommu_group); in vfio_group_release()
184 static struct vfio_group *vfio_group_alloc(struct iommu_group *iommu_group, in vfio_group_alloc() argument
211 group->iommu_group = iommu_group; in vfio_group_alloc()
213 iommu_group_ref_get(iommu_group); in vfio_group_alloc()
220 static struct vfio_group *vfio_create_group(struct iommu_group *iommu_group, in vfio_create_group() argument
227 group = vfio_group_alloc(iommu_group, type); in vfio_create_group()
233 iommu_group_id(iommu_group)); in vfio_create_group()
242 ret = __vfio_group_get_from_iommu(iommu_group); in vfio_create_group()
267 struct iommu_group *iommu_group; in vfio_device_remove_group() local
302 iommu_group = group->iommu_group; in vfio_device_remove_group()
303 group->iommu_group = NULL; in vfio_device_remove_group()
307 iommu_group_put(iommu_group); in vfio_device_remove_group()
454 struct iommu_group *iommu_group; in vfio_noiommu_group_alloc() local
458 iommu_group = iommu_group_alloc(); in vfio_noiommu_group_alloc()
459 if (IS_ERR(iommu_group)) in vfio_noiommu_group_alloc()
460 return ERR_CAST(iommu_group); in vfio_noiommu_group_alloc()
462 ret = iommu_group_set_name(iommu_group, "vfio-noiommu"); in vfio_noiommu_group_alloc()
465 ret = iommu_group_add_device(iommu_group, dev); in vfio_noiommu_group_alloc()
469 group = vfio_create_group(iommu_group, type); in vfio_noiommu_group_alloc()
474 iommu_group_put(iommu_group); in vfio_noiommu_group_alloc()
480 iommu_group_put(iommu_group); in vfio_noiommu_group_alloc()
486 struct iommu_group *iommu_group; in vfio_group_find_or_alloc() local
489 iommu_group = iommu_group_get(dev); in vfio_group_find_or_alloc()
490 if (!iommu_group && vfio_noiommu) { in vfio_group_find_or_alloc()
505 if (!iommu_group) in vfio_group_find_or_alloc()
514 iommu_group_put(iommu_group); in vfio_group_find_or_alloc()
518 group = vfio_group_get_from_iommu(iommu_group); in vfio_group_find_or_alloc()
520 group = vfio_create_group(iommu_group, VFIO_IOMMU); in vfio_group_find_or_alloc()
523 iommu_group_put(iommu_group); in vfio_group_find_or_alloc()
554 iommu_group_id(group->iommu_group)); in __vfio_register_dev()
724 if (!group->iommu_group) { in vfio_group_ioctl_set_container()
890 if (!group->iommu_group) { in vfio_group_ioctl_get_status()
898 else if (!iommu_group_dma_owner_claimed(group->iommu_group)) in vfio_group_ioctl_get_status()
1589 struct iommu_group *vfio_file_iommu_group(struct file *file) in vfio_file_iommu_group()
1592 struct iommu_group *iommu_group = NULL; in vfio_file_iommu_group() local
1601 if (group->iommu_group) { in vfio_file_iommu_group()
1602 iommu_group = group->iommu_group; in vfio_file_iommu_group()
1603 iommu_group_ref_get(iommu_group); in vfio_file_iommu_group()
1606 return iommu_group; in vfio_file_iommu_group()