| /linux/drivers/iommu/iommufd/ |
| A D | io_pagetable.c | 158 &used_span, &iopt->reserved_itree, &iopt->area_itree, in iopt_alloc_iova() 228 area->iopt = iopt; in iopt_insert_area() 271 iopt, dst_iova, in iopt_alloc_area_pages() 308 if (area->iopt) { in iopt_abort_area() 496 arg.iopt = iopt; in iommu_read_and_clear_dirty() 1074 rc = xa_reserve(&iopt->domains, iopt->next_domain_id, GFP_KERNEL); in iopt_table_add_domain() 1083 xa_store(&iopt->domains, iopt->next_domain_id, domain, GFP_KERNEL); in iopt_table_add_domain() 1084 iopt->next_domain_id++; in iopt_table_add_domain() 1089 xa_release(&iopt->domains, iopt->next_domain_id); in iopt_table_add_domain() 1154 iter_domain = xa_erase(&iopt->domains, iopt->next_domain_id); in iopt_table_remove_domain() [all …]
|
| A D | iommufd_private.h | 60 void iopt_init_table(struct io_pagetable *iopt); 61 void iopt_destroy_table(struct io_pagetable *iopt); 83 int iopt_set_dirty_tracking(struct io_pagetable *iopt, 88 int iopt_table_add_domain(struct io_pagetable *iopt, 90 void iopt_table_remove_domain(struct io_pagetable *iopt, 95 int iopt_set_allow_iova(struct io_pagetable *iopt, 102 void iopt_enable_large_pages(struct io_pagetable *iopt); 103 int iopt_disable_large_pages(struct io_pagetable *iopt); 260 struct io_pagetable iopt; member 286 int iommufd_check_iova_range(struct io_pagetable *iopt, [all …]
|
| A D | ioas.c | 17 rc = iopt_unmap_all(&ioas->iopt, NULL); in iommufd_ioas_destroy() 19 iopt_destroy_table(&ioas->iopt); in iommufd_ioas_destroy() 31 iopt_init_table(&ioas->iopt); in iommufd_ioas_alloc() 78 down_read(&ioas->iopt.iova_rwsem); in iommufd_ioas_iova_ranges() 107 up_read(&ioas->iopt.iova_rwsem); in iommufd_ioas_iova_ranges() 148 struct io_pagetable *iopt; in iommufd_ioas_allow_iovas() local 157 iopt = &ioas->iopt; in iommufd_ioas_allow_iovas() 172 rc = iopt_set_allow_iova(iopt, &allowed_iova); in iommufd_ioas_allow_iovas() 308 rc = iopt_unmap_all(&ioas->iopt, &unmapped); in iommufd_ioas_unmap() 368 cmd->val64 = !ioas->iopt.disable_large_pages; in iommufd_ioas_option_huge_pages() [all …]
|
| A D | device.c | 933 container_of(iopt, struct iommufd_ioas, iopt); in iommufd_access_notify_unmap() 964 struct io_pagetable *iopt; in iommufd_access_unpin_pages() local 981 iopt = &access->ioas_unpin->iopt; in iommufd_access_unpin_pages() 991 up_read(&iopt->iova_rwsem); in iommufd_access_unpin_pages() 1039 struct io_pagetable *iopt; in iommufd_access_pin_pages() local 1059 iopt = &access->ioas->iopt; in iommufd_access_pin_pages() 1090 up_read(&iopt->iova_rwsem); in iommufd_access_pin_pages() 1105 up_read(&iopt->iova_rwsem); in iommufd_access_pin_pages() 1127 struct io_pagetable *iopt; in iommufd_access_rw() local 1142 iopt = &access->ioas->iopt; in iommufd_access_rw() [all …]
|
| A D | vfio_compat.c | 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() 351 rc = iopt_disable_large_pages(&ioas->iopt); in iommufd_vfio_set_iommu() 358 struct io_pagetable *iopt = &ioas->iopt; in iommufd_get_pagesizes() local 363 down_read(&iopt->domains_rwsem); in iommufd_get_pagesizes() 364 xa_for_each(&iopt->domains, index, domain) in iommufd_get_pagesizes() 373 up_read(&iopt->domains_rwsem); in iommufd_get_pagesizes() 472 down_read(&ioas->iopt.iova_rwsem); in iommufd_vfio_iommu_get_info() [all …]
|
| A D | io_pagetable.h | 42 struct io_pagetable *iopt; member 119 struct io_pagetable *iopt, unsigned long start, \ 124 lockdep_assert_held(&iopt->iova_rwsem); \ 125 node = interval_tree_iter_first(&iopt->name##_itree, start, \ 153 struct io_pagetable *iopt, 168 #define iopt_for_each_contig_area(iter, area, iopt, iova, last_iova) \ argument 169 for (area = iopt_area_contig_init(iter, iopt, iova, last_iova); area; \
|
| A D | hw_pagetable.c | 30 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() 188 rc = iopt_table_add_domain(&ioas->iopt, hwpt->domain); in iommufd_hwpt_paging_alloc() 376 rc = iopt_set_dirty_tracking(&ioas->iopt, hwpt_paging->common.domain, in iommufd_hwpt_set_dirty_tracking() 400 &ioas->iopt, hwpt_paging->common.domain, cmd->flags, cmd); in iommufd_hwpt_get_dirty_bitmap()
|
| A D | pages.c | 478 bool disable_large_pages = area->iopt->disable_large_pages; in batch_to_domain() 1419 lockdep_assert_held(&area->iopt->domains_rwsem); in iopt_area_fill_domains() 1421 if (xa_empty(&area->iopt->domains)) in iopt_area_fill_domains() 1433 xa_for_each(&area->iopt->domains, index, domain) { in iopt_area_fill_domains() 1449 area->storage_domain = xa_load(&area->iopt->domains, 0); in iopt_area_fill_domains() 1455 xa_for_each(&area->iopt->domains, unmap_index, domain) { in iopt_area_fill_domains() 1468 if (unmap_index != area->iopt->next_domain_id - 1) { in iopt_area_fill_domains() 1495 struct io_pagetable *iopt = area->iopt; in iopt_area_unfill_domains() local 1499 lockdep_assert_held(&iopt->domains_rwsem); in iopt_area_unfill_domains() 1505 xa_for_each(&iopt->domains, index, domain) in iopt_area_unfill_domains()
|
| A D | selftest.c | 67 static unsigned long __iommufd_test_syz_conv_iova(struct io_pagetable *iopt, in __iommufd_test_syz_conv_iova() argument 78 down_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova() 79 for (area = iopt_area_iter_first(iopt, 0, ULONG_MAX); area; in __iommufd_test_syz_conv_iova() 82 up_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova() 87 up_read(&iopt->iova_rwsem); in __iommufd_test_syz_conv_iova() 102 ret = __iommufd_test_syz_conv_iova(&access->ioas->iopt, iova); in iommufd_test_syz_conv_iova() 119 *iova = __iommufd_test_syz_conv_iova(&ioas->iopt, iova); in iommufd_test_syz_conv_iova_id() 845 down_write(&ioas->iopt.iova_rwsem); in iommufd_test_add_reserved() 846 rc = iopt_reserve_iova(&ioas->iopt, start, start + length - 1, NULL); in iommufd_test_add_reserved() 847 up_write(&ioas->iopt.iova_rwsem); in iommufd_test_add_reserved()
|
| /linux/drivers/dma/ppc4xx/ |
| A D | dma.h | 217 u32 iopt; member
|