Lines Matching refs:ictx

27 	xa_cmpxchg(&igroup->ictx->groups, iommu_group_id(igroup->group), igroup,  in iommufd_group_release()
60 static struct iommufd_group *iommufd_get_group(struct iommufd_ctx *ictx, in iommufd_get_group() argument
75 xa_lock(&ictx->groups); in iommufd_get_group()
76 igroup = xa_load(&ictx->groups, id); in iommufd_get_group()
78 xa_unlock(&ictx->groups); in iommufd_get_group()
82 xa_unlock(&ictx->groups); in iommufd_get_group()
101 new_igroup->ictx = ictx; in iommufd_get_group()
108 xa_lock(&ictx->groups); in iommufd_get_group()
110 igroup = __xa_cmpxchg(&ictx->groups, id, cur_igroup, new_igroup, in iommufd_get_group()
113 xa_unlock(&ictx->groups); in iommufd_get_group()
120 xa_unlock(&ictx->groups); in iommufd_get_group()
126 xa_unlock(&ictx->groups); in iommufd_get_group()
142 iommufd_ctx_put(idev->ictx); in iommufd_device_destroy()
161 struct iommufd_device *iommufd_device_bind(struct iommufd_ctx *ictx, in iommufd_device_bind() argument
175 igroup = iommufd_get_group(ictx, dev); in iommufd_device_bind()
199 rc = iommu_device_claim_dma_owner(dev, ictx); in iommufd_device_bind()
203 idev = iommufd_object_alloc(ictx, idev, IOMMUFD_OBJ_DEVICE); in iommufd_device_bind()
208 idev->ictx = ictx; in iommufd_device_bind()
210 iommufd_ctx_get(ictx); in iommufd_device_bind()
226 iommufd_object_finalize(ictx, &idev->obj); in iommufd_device_bind()
247 bool iommufd_ctx_has_group(struct iommufd_ctx *ictx, struct iommu_group *group) in iommufd_ctx_has_group() argument
252 if (!ictx || !group) in iommufd_ctx_has_group()
255 xa_lock(&ictx->objects); in iommufd_ctx_has_group()
256 xa_for_each(&ictx->objects, index, obj) { in iommufd_ctx_has_group()
260 xa_unlock(&ictx->objects); in iommufd_ctx_has_group()
264 xa_unlock(&ictx->objects); in iommufd_ctx_has_group()
280 iommufd_object_destroy_user(idev->ictx, &idev->obj); in iommufd_device_unbind()
286 return idev->ictx; in iommufd_device_to_ictx()
575 iommufd_put_object(idev->ictx, &hwpt->obj); in iommufd_device_auto_get_domain()
587 iommufd_put_object(idev->ictx, &hwpt->obj); in iommufd_device_auto_get_domain()
591 hwpt_paging = iommufd_hwpt_paging_alloc(idev->ictx, ioas, idev, 0, in iommufd_device_auto_get_domain()
610 iommufd_object_finalize(idev->ictx, &hwpt->obj); in iommufd_device_auto_get_domain()
615 iommufd_object_abort_and_destroy(idev->ictx, &hwpt->obj); in iommufd_device_auto_get_domain()
627 pt_obj = iommufd_get_object(idev->ictx, *pt_id, IOMMUFD_OBJ_ANY); in iommufd_device_change_pt()
656 iommufd_put_object(idev->ictx, pt_obj); in iommufd_device_change_pt()
660 iommufd_hw_pagetable_put(idev->ictx, destroy_hwpt); in iommufd_device_change_pt()
664 iommufd_put_object(idev->ictx, pt_obj); in iommufd_device_change_pt()
731 iommufd_hw_pagetable_put(idev->ictx, hwpt); in iommufd_device_detach()
790 struct iommufd_ioas *ioas = iommufd_get_ioas(access->ictx, id); in iommufd_access_change_ioas_id()
796 iommufd_put_object(access->ictx, &ioas->obj); in iommufd_access_change_ioas_id()
809 iommufd_ctx_put(access->ictx); in iommufd_access_destroy_object()
826 iommufd_access_create(struct iommufd_ctx *ictx, in iommufd_access_create() argument
835 access = iommufd_object_alloc(ictx, access, IOMMUFD_OBJ_ACCESS); in iommufd_access_create()
849 access->ictx = ictx; in iommufd_access_create()
850 iommufd_ctx_get(ictx); in iommufd_access_create()
851 iommufd_object_finalize(ictx, &access->obj); in iommufd_access_create()
866 iommufd_object_destroy_user(access->ictx, &access->obj); in iommufd_access_destroy()
945 iommufd_put_object(access->ictx, &access->obj); in iommufd_access_notify_unmap()
1247 iommufd_put_object(ucmd->ictx, &idev->obj); in iommufd_get_hw_info()