Lines Matching defs:ictx
15 static struct iommufd_ioas *get_compat_ioas(struct iommufd_ctx *ictx)
19 xa_lock(&ictx->objects);
20 if (!ictx->vfio_ioas || !iommufd_lock_obj(&ictx->vfio_ioas->obj))
22 ioas = ictx->vfio_ioas;
24 xa_unlock(&ictx->objects);
30 * @ictx: Context to operate on
36 int iommufd_vfio_compat_ioas_get_id(struct iommufd_ctx *ictx, u32 *out_ioas_id)
40 ioas = get_compat_ioas(ictx);
51 * @ictx: Context to operate on
55 int iommufd_vfio_compat_set_no_iommu(struct iommufd_ctx *ictx)
59 xa_lock(&ictx->objects);
60 if (!ictx->vfio_ioas) {
61 ictx->no_iommu_mode = 1;
66 xa_unlock(&ictx->objects);
73 * @ictx: Context to operate on
80 int iommufd_vfio_compat_ioas_create(struct iommufd_ctx *ictx)
85 ioas = iommufd_ioas_alloc(ictx);
89 xa_lock(&ictx->objects);
94 if (ictx->no_iommu_mode) {
99 if (ictx->vfio_ioas && iommufd_lock_obj(&ictx->vfio_ioas->obj)) {
101 iommufd_put_object(&ictx->vfio_ioas->obj);
104 ictx->vfio_ioas = ioas;
105 xa_unlock(&ictx->objects);
113 iommufd_object_finalize(ictx, &ioas->obj);
117 xa_unlock(&ictx->objects);
118 iommufd_object_abort(ictx, &ioas->obj);
132 ioas = get_compat_ioas(ucmd->ictx);
140 ioas = iommufd_get_ioas(ucmd->ictx, cmd->ioas_id);
143 xa_lock(&ucmd->ictx->objects);
144 ucmd->ictx->vfio_ioas = ioas;
145 xa_unlock(&ucmd->ictx->objects);
150 xa_lock(&ucmd->ictx->objects);
151 ucmd->ictx->vfio_ioas = NULL;
152 xa_unlock(&ucmd->ictx->objects);
159 static int iommufd_vfio_map_dma(struct iommufd_ctx *ictx, unsigned int cmd,
181 ioas = get_compat_ioas(ictx);
191 rc = iopt_map_user_pages(ictx, &ioas->iopt, &iova, u64_to_user_ptr(map.vaddr),
197 static int iommufd_vfio_unmap_dma(struct iommufd_ctx *ictx, unsigned int cmd,
219 ioas = get_compat_ioas(ictx);
256 static int iommufd_vfio_cc_iommu(struct iommufd_ctx *ictx)
262 ioas = get_compat_ioas(ictx);
279 static int iommufd_vfio_check_extension(struct iommufd_ctx *ictx,
292 return iommufd_vfio_cc_iommu(ictx);
315 static int iommufd_vfio_set_iommu(struct iommufd_ctx *ictx, unsigned long type)
317 bool no_iommu_mode = READ_ONCE(ictx->no_iommu_mode);
338 ioas = get_compat_ioas(ictx);
439 static int iommufd_vfio_iommu_get_info(struct iommufd_ctx *ictx,
464 ioas = get_compat_ioas(ictx);
518 int iommufd_vfio_ioctl(struct iommufd_ctx *ictx, unsigned int cmd,
527 return iommufd_vfio_set_iommu(ictx, arg);
529 return iommufd_vfio_check_extension(ictx, arg);
531 return iommufd_vfio_iommu_get_info(ictx, uarg);
533 return iommufd_vfio_map_dma(ictx, cmd, uarg);
535 return iommufd_vfio_unmap_dma(ictx, cmd, uarg);