Lines Matching refs:ioas

17 	struct iommufd_ioas *ioas = ERR_PTR(-ENODEV);
22 ioas = ictx->vfio_ioas;
25 return ioas;
38 struct iommufd_ioas *ioas;
40 ioas = get_compat_ioas(ictx);
41 if (IS_ERR(ioas))
42 return PTR_ERR(ioas);
43 *out_ioas_id = ioas->obj.id;
44 iommufd_put_object(&ioas->obj);
77 * group should cause a default creation of the internal ioas, this does nothing
78 * if an existing ioas has already been assigned somehow.
82 struct iommufd_ioas *ioas = NULL;
85 ioas = iommufd_ioas_alloc(ictx);
86 if (IS_ERR(ioas))
87 return PTR_ERR(ioas);
104 ictx->vfio_ioas = ioas;
113 iommufd_object_finalize(ictx, &ioas->obj);
118 iommufd_object_abort(ictx, &ioas->obj);
126 struct iommufd_ioas *ioas;
132 ioas = get_compat_ioas(ucmd->ictx);
133 if (IS_ERR(ioas))
134 return PTR_ERR(ioas);
135 cmd->ioas_id = ioas->obj.id;
136 iommufd_put_object(&ioas->obj);
140 ioas = iommufd_get_ioas(ucmd->ictx, cmd->ioas_id);
141 if (IS_ERR(ioas))
142 return PTR_ERR(ioas);
144 ucmd->ictx->vfio_ioas = ioas;
146 iommufd_put_object(&ioas->obj);
166 struct iommufd_ioas *ioas;
181 ioas = get_compat_ioas(ictx);
182 if (IS_ERR(ioas))
183 return PTR_ERR(ioas);
191 rc = iopt_map_user_pages(ictx, &ioas->iopt, &iova, u64_to_user_ptr(map.vaddr),
193 iommufd_put_object(&ioas->obj);
210 struct iommufd_ioas *ioas;
219 ioas = get_compat_ioas(ictx);
220 if (IS_ERR(ioas))
221 return PTR_ERR(ioas);
228 rc = iopt_unmap_all(&ioas->iopt, &unmapped);
230 if (READ_ONCE(ioas->iopt.disable_large_pages)) {
239 rc = iopt_cut_iova(&ioas->iopt, iovas,
244 rc = iopt_unmap_iova(&ioas->iopt, unmap.iova, unmap.size,
252 iommufd_put_object(&ioas->obj);
259 struct iommufd_ioas *ioas;
262 ioas = get_compat_ioas(ictx);
263 if (IS_ERR(ioas))
264 return PTR_ERR(ioas);
266 mutex_lock(&ioas->mutex);
267 list_for_each_entry(hwpt, &ioas->hwpt_list, hwpt_item) {
273 mutex_unlock(&ioas->mutex);
275 iommufd_put_object(&ioas->obj);
318 struct iommufd_ioas *ioas = NULL;
338 ioas = get_compat_ioas(ictx);
339 if (IS_ERR(ioas))
340 return PTR_ERR(ioas);
351 rc = iopt_disable_large_pages(&ioas->iopt);
352 iommufd_put_object(&ioas->obj);
356 static unsigned long iommufd_get_pagesizes(struct iommufd_ioas *ioas)
358 struct io_pagetable *iopt = &ioas->iopt;
372 pgsize_bitmap = max(pgsize_bitmap, ioas->iopt.iova_alignment);
377 static int iommufd_fill_cap_iova(struct iommufd_ioas *ioas,
393 interval_tree_for_each_span(&span, &ioas->iopt.reserved_itree, 0,
414 static int iommufd_fill_cap_dma_avail(struct iommufd_ioas *ioas,
442 typedef int (*fill_cap_fn)(struct iommufd_ioas *ioas,
452 struct iommufd_ioas *ioas;
464 ioas = get_compat_ioas(ictx);
465 if (IS_ERR(ioas))
466 return PTR_ERR(ioas);
469 info.iova_pgsizes = iommufd_get_pagesizes(ioas);
472 down_read(&ioas->iopt.iova_rwsem);
478 cap_size = fill_fns[i](ioas, arg + total_cap_size,
481 cap_size = fill_fns[i](ioas, NULL, 0);
513 up_read(&ioas->iopt.iova_rwsem);
514 iommufd_put_object(&ioas->obj);