Home
last modified time | relevance | path

Searched refs:iopt (Results 1 – 9 of 9) sorted by relevance

/linux/drivers/iommu/iommufd/
H A Dio_pagetable.c34 struct io_pagetable *iopt, in iopt_area_contig_init() argument
38 lockdep_assert_held(&iopt->iova_rwsem); in iopt_area_contig_init()
42 iter->area = iopt_area_iter_first(iopt, iova, iova); in iopt_area_contig_init()
120 static int iopt_alloc_iova(struct io_pagetable *iopt, unsigned long *iova, in iopt_alloc_iova() argument
129 lockdep_assert_held(&iopt->iova_rwsem); in iopt_alloc_iova()
153 if (iova_alignment < iopt->iova_alignment) in iopt_alloc_iova()
156 interval_tree_for_each_span(&allowed_span, &iopt->allowed_itree, in iopt_alloc_iova()
158 if (RB_EMPTY_ROOT(&iopt->allowed_itree.rb_root)) { in iopt_alloc_iova()
169 &used_span, &iopt->reserved_itree, &iopt->area_itree, in iopt_alloc_iova()
183 static int iopt_check_iova(struct io_pagetable *iopt, unsigned long iova, in iopt_check_iova() argument
[all …]
H A Dioas.c18 rc = iopt_unmap_all(&ioas->iopt, NULL); in iommufd_ioas_destroy()
20 iopt_destroy_table(&ioas->iopt); in iommufd_ioas_destroy()
32 iopt_init_table(&ioas->iopt); in iommufd_ioas_alloc()
82 down_read(&ioas->iopt.iova_rwsem); in iommufd_ioas_iova_ranges()
86 cmd->out_iova_alignment = ioas->iopt.iova_alignment; in iommufd_ioas_iova_ranges()
87 interval_tree_for_each_span(&span, &ioas->iopt.reserved_itree, 0, in iommufd_ioas_iova_ranges()
111 up_read(&ioas->iopt.iova_rwsem); in iommufd_ioas_iova_ranges()
152 struct io_pagetable *iopt; in iommufd_ioas_allow_iovas() local
161 iopt = &ioas->iopt; in iommufd_ioas_allow_iovas()
176 rc = iopt_set_allow_iova(iopt, &allowed_iova); in iommufd_ioas_allow_iovas()
[all …]
H A Dvfio_compat.c191 rc = iopt_map_user_pages(ictx, &ioas->iopt, &iova, u64_to_user_ptr(map.vaddr), in iommufd_vfio_map_dma()
228 rc = iopt_unmap_all(&ioas->iopt, &unmapped); in iommufd_vfio_unmap_dma()
230 if (READ_ONCE(ioas->iopt.disable_large_pages)) { in iommufd_vfio_unmap_dma()
239 rc = iopt_cut_iova(&ioas->iopt, iovas, in iommufd_vfio_unmap_dma()
244 rc = iopt_unmap_iova(&ioas->iopt, unmap.iova, unmap.size, in iommufd_vfio_unmap_dma()
346 rc = iopt_disable_large_pages(&ioas->iopt); in iommufd_vfio_set_iommu()
353 struct io_pagetable *iopt = &ioas->iopt; in iommufd_get_pagesizes() local
358 down_read(&iopt->domains_rwsem); in iommufd_get_pagesizes()
359 xa_for_each(&iopt->domains, index, domain) in iommufd_get_pagesizes()
367 pgsize_bitmap = max(pgsize_bitmap, ioas->iopt.iova_alignment); in iommufd_get_pagesizes()
[all …]
H A Ddevice.c421 rc = iopt_table_enforce_dev_resv_regions(&hwpt_paging->ioas->iopt, in iommufd_device_attach_reserved_iova()
430 iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt, in iommufd_device_attach_reserved_iova()
672 iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt, idev->dev); in iommufd_hw_pagetable_attach()
711 iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt, idev->dev); in iommufd_hw_pagetable_detach()
744 iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt, cur->dev); in iommufd_group_remove_reserved_iova()
764 &hwpt_paging->ioas->iopt, cur->dev, NULL); in iommufd_group_do_replace_reserved_iova()
1094 rc = iopt_add_access(&new_ioas->iopt, access); in iommufd_access_change_ioas()
1108 iopt_remove_access(&cur_ioas->iopt, access, iopt_access_list_id); in iommufd_access_change_ioas()
1300 void iommufd_access_notify_unmap(struct io_pagetable *iopt, unsigned long iova, in iommufd_access_notify_unmap() argument
1304 container_of(iopt, struct iommufd_ioas, iopt); in iommufd_access_notify_unmap()
[all …]
H A Dpages.c510 bool disable_large_pages = area->iopt->disable_large_pages; in batch_to_domain()
1619 xa_for_each(&area->iopt->domains, index, domain) { in iopt_dmabuf_track_all_domains()
1905 lockdep_assert_held(&area->iopt->domains_rwsem); in iopt_area_fill_domains()
1907 if (xa_empty(&area->iopt->domains)) in iopt_area_fill_domains()
1926 xa_for_each(&area->iopt->domains, index, domain) { in iopt_area_fill_domains()
1945 area->storage_domain = xa_load(&area->iopt->domains, 0); in iopt_area_fill_domains()
1952 xa_for_each(&area->iopt->domains, unmap_index, domain) { in iopt_area_fill_domains()
1965 if (unmap_index != area->iopt->next_domain_id - 1) { in iopt_area_fill_domains()
1994 struct io_pagetable *iopt = area->iopt; in iopt_area_unfill_domains() local
1998 lockdep_assert_held(&iopt->domains_rwsem); in iopt_area_unfill_domains()
[all …]
H A Dselftest.c59 static unsigned long __iommufd_test_syz_conv_iova(struct io_pagetable *iopt, in __iommufd_test_syz_conv_iova() argument
70 down_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova()
71 for (area = iopt_area_iter_first(iopt, 0, ULONG_MAX); area; in __iommufd_test_syz_conv_iova()
74 up_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova()
79 up_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova()
94 ret = __iommufd_test_syz_conv_iova(&access->ioas->iopt, iova); in iommufd_test_syz_conv_iova()
111 *iova = __iommufd_test_syz_conv_iova(&ioas->iopt, iova); in iommufd_test_syz_conv_iova_id()
1199 down_write(&ioas->iopt.iova_rwsem); in iommufd_test_add_reserved()
1200 rc = iopt_reserve_iova(&ioas->iopt, start, last, NULL); in iommufd_test_add_reserved()
1201 up_write(&ioas->iopt.iova_rwsem); in iommufd_test_add_reserved()
/linux/drivers/iommu/
H A Diommu-pages.c45 struct ioptdesc *iopt; in iommu_alloc_pages_node_sz() local
70 iopt = folio_ioptdesc(folio); in iommu_alloc_pages_node_sz()
71 iopt->incoherent = false; in iommu_alloc_pages_node_sz()
90 static void __iommu_free_desc(struct ioptdesc *iopt) in __iommu_free_desc() argument
92 struct folio *folio = ioptdesc_folio(iopt); in __iommu_free_desc()
96 WARN_ON_ONCE(iopt->incoherent); in __iommu_free_desc()
127 struct ioptdesc *iopt, *tmp; in iommu_put_pages_list() local
129 list_for_each_entry_safe(iopt, tmp, &list->pages, iopt_freelist_elm) in iommu_put_pages_list()
130 __iommu_free_desc(iopt); in iommu_put_pages_list()
148 struct ioptdesc *iopt = virt_to_ioptdesc(virt); in iommu_pages_start_incoherent() local
[all …]
H A Diommu-pages.h42 static inline struct folio *ioptdesc_folio(struct ioptdesc *iopt) in ioptdesc_folio() argument
44 return (struct folio *)iopt; in ioptdesc_folio()
/linux/drivers/dma/ppc4xx/
H A Ddma.h217 u32 iopt; member