Lines Matching refs:ioas

14 	struct iommufd_ioas *ioas = container_of(obj, struct iommufd_ioas, obj);  in iommufd_ioas_destroy()  local
17 rc = iopt_unmap_all(&ioas->iopt, NULL); in iommufd_ioas_destroy()
19 iopt_destroy_table(&ioas->iopt); in iommufd_ioas_destroy()
20 mutex_destroy(&ioas->mutex); in iommufd_ioas_destroy()
25 struct iommufd_ioas *ioas; in iommufd_ioas_alloc() local
27 ioas = iommufd_object_alloc(ictx, ioas, IOMMUFD_OBJ_IOAS); in iommufd_ioas_alloc()
28 if (IS_ERR(ioas)) in iommufd_ioas_alloc()
29 return ioas; in iommufd_ioas_alloc()
31 iopt_init_table(&ioas->iopt); in iommufd_ioas_alloc()
32 INIT_LIST_HEAD(&ioas->hwpt_list); in iommufd_ioas_alloc()
33 mutex_init(&ioas->mutex); in iommufd_ioas_alloc()
34 return ioas; in iommufd_ioas_alloc()
40 struct iommufd_ioas *ioas; in iommufd_ioas_alloc_ioctl() local
46 ioas = iommufd_ioas_alloc(ucmd->ictx); in iommufd_ioas_alloc_ioctl()
47 if (IS_ERR(ioas)) in iommufd_ioas_alloc_ioctl()
48 return PTR_ERR(ioas); in iommufd_ioas_alloc_ioctl()
50 cmd->out_ioas_id = ioas->obj.id; in iommufd_ioas_alloc_ioctl()
54 iommufd_object_finalize(ucmd->ictx, &ioas->obj); in iommufd_ioas_alloc_ioctl()
58 iommufd_object_abort_and_destroy(ucmd->ictx, &ioas->obj); in iommufd_ioas_alloc_ioctl()
66 struct iommufd_ioas *ioas; in iommufd_ioas_iova_ranges() local
74 ioas = iommufd_get_ioas(ucmd, cmd->ioas_id); in iommufd_ioas_iova_ranges()
75 if (IS_ERR(ioas)) in iommufd_ioas_iova_ranges()
76 return PTR_ERR(ioas); in iommufd_ioas_iova_ranges()
78 down_read(&ioas->iopt.iova_rwsem); in iommufd_ioas_iova_ranges()
82 cmd->out_iova_alignment = ioas->iopt.iova_alignment; in iommufd_ioas_iova_ranges()
83 interval_tree_for_each_span(&span, &ioas->iopt.reserved_itree, 0, in iommufd_ioas_iova_ranges()
107 up_read(&ioas->iopt.iova_rwsem); in iommufd_ioas_iova_ranges()
108 iommufd_put_object(&ioas->obj); in iommufd_ioas_iova_ranges()
147 struct iommufd_ioas *ioas; in iommufd_ioas_allow_iovas() local
154 ioas = iommufd_get_ioas(ucmd, cmd->ioas_id); in iommufd_ioas_allow_iovas()
155 if (IS_ERR(ioas)) in iommufd_ioas_allow_iovas()
156 return PTR_ERR(ioas); in iommufd_ioas_allow_iovas()
157 iopt = &ioas->iopt; in iommufd_ioas_allow_iovas()
178 iommufd_put_object(&ioas->obj); in iommufd_ioas_allow_iovas()
204 struct iommufd_ioas *ioas; in iommufd_ioas_map() local
216 ioas = iommufd_get_ioas(ucmd, cmd->ioas_id); in iommufd_ioas_map()
217 if (IS_ERR(ioas)) in iommufd_ioas_map()
218 return PTR_ERR(ioas); in iommufd_ioas_map()
222 rc = iopt_map_user_pages(ucmd->ictx, &ioas->iopt, &iova, in iommufd_ioas_map()
231 iommufd_put_object(&ioas->obj); in iommufd_ioas_map()
291 struct iommufd_ioas *ioas; in iommufd_ioas_unmap() local
295 ioas = iommufd_get_ioas(ucmd, cmd->ioas_id); in iommufd_ioas_unmap()
296 if (IS_ERR(ioas)) in iommufd_ioas_unmap()
297 return PTR_ERR(ioas); in iommufd_ioas_unmap()
300 rc = iopt_unmap_all(&ioas->iopt, &unmapped); in iommufd_ioas_unmap()
308 rc = iopt_unmap_iova(&ioas->iopt, cmd->iova, cmd->length, in iommufd_ioas_unmap()
318 iommufd_put_object(&ioas->obj); in iommufd_ioas_unmap()
357 struct iommufd_ioas *ioas) in iommufd_ioas_option_huge_pages() argument
360 cmd->val64 = !ioas->iopt.disable_large_pages; in iommufd_ioas_option_huge_pages()
365 return iopt_disable_large_pages(&ioas->iopt); in iommufd_ioas_option_huge_pages()
367 iopt_enable_large_pages(&ioas->iopt); in iommufd_ioas_option_huge_pages()
378 struct iommufd_ioas *ioas; in iommufd_ioas_option() local
384 ioas = iommufd_get_ioas(ucmd, cmd->object_id); in iommufd_ioas_option()
385 if (IS_ERR(ioas)) in iommufd_ioas_option()
386 return PTR_ERR(ioas); in iommufd_ioas_option()
390 rc = iommufd_ioas_option_huge_pages(cmd, ioas); in iommufd_ioas_option()
396 iommufd_put_object(&ioas->obj); in iommufd_ioas_option()