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->ictx, 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->ictx, 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
220 ioas = iommufd_get_ioas(ucmd->ictx, cmd->ioas_id); in iommufd_ioas_map()
221 if (IS_ERR(ioas)) in iommufd_ioas_map()
222 return PTR_ERR(ioas); in iommufd_ioas_map()
226 rc = iopt_map_user_pages(ucmd->ictx, &ioas->iopt, &iova, in iommufd_ioas_map()
235 iommufd_put_object(&ioas->obj); in iommufd_ioas_map()
299 struct iommufd_ioas *ioas; in iommufd_ioas_unmap() local
303 ioas = iommufd_get_ioas(ucmd->ictx, cmd->ioas_id); in iommufd_ioas_unmap()
304 if (IS_ERR(ioas)) in iommufd_ioas_unmap()
305 return PTR_ERR(ioas); in iommufd_ioas_unmap()
308 rc = iopt_unmap_all(&ioas->iopt, &unmapped); in iommufd_ioas_unmap()
316 rc = iopt_unmap_iova(&ioas->iopt, cmd->iova, cmd->length, in iommufd_ioas_unmap()
326 iommufd_put_object(&ioas->obj); in iommufd_ioas_unmap()
365 struct iommufd_ioas *ioas) in iommufd_ioas_option_huge_pages() argument
368 cmd->val64 = !ioas->iopt.disable_large_pages; in iommufd_ioas_option_huge_pages()
373 return iopt_disable_large_pages(&ioas->iopt); in iommufd_ioas_option_huge_pages()
375 iopt_enable_large_pages(&ioas->iopt); in iommufd_ioas_option_huge_pages()
386 struct iommufd_ioas *ioas; in iommufd_ioas_option() local
392 ioas = iommufd_get_ioas(ucmd->ictx, cmd->object_id); in iommufd_ioas_option()
393 if (IS_ERR(ioas)) in iommufd_ioas_option()
394 return PTR_ERR(ioas); in iommufd_ioas_option()
398 rc = iommufd_ioas_option_huge_pages(cmd, ioas); in iommufd_ioas_option()
404 iommufd_put_object(&ioas->obj); in iommufd_ioas_option()