Home
last modified time | relevance | path

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

/drivers/iommu/iommufd/
A Dio_pagetable.c167 &used_span, &iopt->reserved_itree, &iopt->area_itree, in iopt_alloc_iova()
237 area->iopt = iopt; in iopt_insert_area()
324 if (area->iopt) { in iopt_abort_area()
552 arg.iopt = iopt; in iommu_read_and_clear_dirty()
1139 rc = xa_reserve(&iopt->domains, iopt->next_domain_id, GFP_KERNEL); in iopt_table_add_domain()
1148 xa_store(&iopt->domains, iopt->next_domain_id, domain, GFP_KERNEL); in iopt_table_add_domain()
1149 iopt->next_domain_id++; in iopt_table_add_domain()
1154 xa_release(&iopt->domains, iopt->next_domain_id); in iopt_table_add_domain()
1218 iopt->next_domain_id--; in iopt_table_remove_domain()
1219 iter_domain = xa_erase(&iopt->domains, iopt->next_domain_id); in iopt_table_remove_domain()
[all …]
A Diommufd_private.h98 void iopt_init_table(struct io_pagetable *iopt);
99 void iopt_destroy_table(struct io_pagetable *iopt);
125 int iopt_set_dirty_tracking(struct io_pagetable *iopt,
130 int iopt_table_add_domain(struct io_pagetable *iopt,
132 void iopt_table_remove_domain(struct io_pagetable *iopt,
137 int iopt_set_allow_iova(struct io_pagetable *iopt,
144 void iopt_enable_large_pages(struct io_pagetable *iopt);
145 int iopt_disable_large_pages(struct io_pagetable *iopt);
326 struct io_pagetable iopt; member
353 int iommufd_check_iova_range(struct io_pagetable *iopt,
[all …]
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()
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()
358 rc = iopt_unmap_all(&ioas->iopt, &unmapped); in iommufd_ioas_unmap()
387 up_write(&ioas->iopt.iova_rwsem); in iommufd_release_all_iova_rwsem()
[all …]
A Dvfio_compat.c228 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()
368 up_read(&iopt->domains_rwsem); in iommufd_get_pagesizes()
467 down_read(&ioas->iopt.iova_rwsem); in iommufd_vfio_iommu_get_info()
[all …]
A Ddevice.c1303 container_of(iopt, struct iommufd_ioas, iopt); in iommufd_access_notify_unmap()
1336 struct io_pagetable *iopt; in iommufd_access_unpin_pages() local
1353 iopt = &access->ioas_unpin->iopt; in iommufd_access_unpin_pages()
1364 up_read(&iopt->iova_rwsem); in iommufd_access_unpin_pages()
1413 struct io_pagetable *iopt; in iommufd_access_pin_pages() local
1434 iopt = &access->ioas->iopt; in iommufd_access_pin_pages()
1465 up_read(&iopt->iova_rwsem); in iommufd_access_pin_pages()
1481 up_read(&iopt->iova_rwsem); in iommufd_access_pin_pages()
1503 struct io_pagetable *iopt; in iommufd_access_rw() local
1518 iopt = &access->ioas->iopt; in iommufd_access_rw()
[all …]
A Dio_pagetable.h42 struct io_pagetable *iopt; member
120 struct io_pagetable *iopt, unsigned long start, \
125 lockdep_assert_held(&iopt->iova_rwsem); \
126 node = interval_tree_iter_first(&iopt->name##_itree, start, \
154 struct io_pagetable *iopt,
169 #define iopt_for_each_contig_area(iter, area, iopt, iova, last_iova) \ argument
170 for (area = iopt_area_contig_init(iter, iopt, iova, last_iova); area; \
A Dhw_pagetable.c30 iopt_table_remove_domain(&hwpt_paging->ioas->iopt, in iommufd_hwpt_paging_destroy()
48 iopt_table_remove_domain(&hwpt_paging->ioas->iopt, in iommufd_hwpt_paging_abort()
200 rc = iopt_table_add_domain(&ioas->iopt, hwpt->domain); in iommufd_hwpt_paging_alloc()
462 rc = iopt_set_dirty_tracking(&ioas->iopt, hwpt_paging->common.domain, in iommufd_hwpt_set_dirty_tracking()
486 &ioas->iopt, hwpt_paging->common.domain, cmd->flags, cmd); in iommufd_hwpt_get_dirty_bitmap()
A Dpages.c493 bool disable_large_pages = area->iopt->disable_large_pages; in batch_to_domain()
1602 lockdep_assert_held(&area->iopt->domains_rwsem); in iopt_area_fill_domains()
1604 if (xa_empty(&area->iopt->domains)) in iopt_area_fill_domains()
1616 xa_for_each(&area->iopt->domains, index, domain) { in iopt_area_fill_domains()
1632 area->storage_domain = xa_load(&area->iopt->domains, 0); in iopt_area_fill_domains()
1638 xa_for_each(&area->iopt->domains, unmap_index, domain) { in iopt_area_fill_domains()
1651 if (unmap_index != area->iopt->next_domain_id - 1) { in iopt_area_fill_domains()
1678 struct io_pagetable *iopt = area->iopt; in iopt_area_unfill_domains() local
1682 lockdep_assert_held(&iopt->domains_rwsem); in iopt_area_unfill_domains()
1688 xa_for_each(&iopt->domains, index, domain) in iopt_area_unfill_domains()
A Dselftest.c70 static unsigned long __iommufd_test_syz_conv_iova(struct io_pagetable *iopt, in __iommufd_test_syz_conv_iova() argument
81 down_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova()
82 for (area = iopt_area_iter_first(iopt, 0, ULONG_MAX); area; in __iommufd_test_syz_conv_iova()
85 up_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova()
90 up_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova()
105 ret = __iommufd_test_syz_conv_iova(&access->ioas->iopt, iova); in iommufd_test_syz_conv_iova()
122 *iova = __iommufd_test_syz_conv_iova(&ioas->iopt, iova); in iommufd_test_syz_conv_iova_id()
1266 down_write(&ioas->iopt.iova_rwsem); in iommufd_test_add_reserved()
1267 rc = iopt_reserve_iova(&ioas->iopt, start, start + length - 1, NULL); in iommufd_test_add_reserved()
1268 up_write(&ioas->iopt.iova_rwsem); in iommufd_test_add_reserved()
/drivers/iommu/
A Diommu-pages.c80 static void __iommu_free_desc(struct ioptdesc *iopt) in __iommu_free_desc() argument
82 struct folio *folio = ioptdesc_folio(iopt); in __iommu_free_desc()
114 struct ioptdesc *iopt, *tmp; in iommu_put_pages_list() local
116 list_for_each_entry_safe(iopt, tmp, &list->pages, iopt_freelist_elm) in iommu_put_pages_list()
117 __iommu_free_desc(iopt); in iommu_put_pages_list()
A Diommu-pages.h39 static inline struct folio *ioptdesc_folio(struct ioptdesc *iopt) in ioptdesc_folio() argument
41 return (struct folio *)iopt; in ioptdesc_folio()
/drivers/dma/ppc4xx/
A Ddma.h217 u32 iopt; member

Completed in 39 milliseconds