Home
last modified time | relevance | path

Searched refs:iopt (Results 1 - 11 of 11) sorted by relevance

/kernel/linux/linux-6.6/drivers/iommu/iommufd/
H A Dio_pagetable.c31 struct io_pagetable *iopt, in iopt_area_contig_init()
35 lockdep_assert_held(&iopt->iova_rwsem); in iopt_area_contig_init()
39 iter->area = iopt_area_iter_first(iopt, iova, iova); in iopt_area_contig_init()
108 static int iopt_alloc_iova(struct io_pagetable *iopt, unsigned long *iova, in iopt_alloc_iova() argument
116 lockdep_assert_held(&iopt->iova_rwsem); in iopt_alloc_iova()
133 if (iova_alignment < iopt->iova_alignment) in iopt_alloc_iova()
136 interval_tree_for_each_span(&allowed_span, &iopt->allowed_itree, in iopt_alloc_iova()
138 if (RB_EMPTY_ROOT(&iopt->allowed_itree.rb_root)) { in iopt_alloc_iova()
149 &used_span, &iopt->reserved_itree, &iopt in iopt_alloc_iova()
30 iopt_area_contig_init(struct iopt_area_contig_iter *iter, struct io_pagetable *iopt, unsigned long iova, unsigned long last_iova) iopt_area_contig_init() argument
163 iopt_check_iova(struct io_pagetable *iopt, unsigned long iova, unsigned long length) iopt_check_iova() argument
189 iopt_insert_area(struct io_pagetable *iopt, struct iopt_area *area, struct iopt_pages *pages, unsigned long iova, unsigned long start_byte, unsigned long length, int iommu_prot) iopt_insert_area() argument
236 iopt_alloc_area_pages(struct io_pagetable *iopt, struct list_head *pages_list, unsigned long length, unsigned long *dst_iova, int iommu_prot, unsigned int flags) iopt_alloc_area_pages() argument
344 iopt_map_pages(struct io_pagetable *iopt, struct list_head *pages_list, unsigned long length, unsigned long *dst_iova, int iommu_prot, unsigned int flags) iopt_map_pages() argument
397 iopt_map_user_pages(struct iommufd_ctx *ictx, struct io_pagetable *iopt, unsigned long *iova, void __user *uptr, unsigned long length, int iommu_prot, unsigned int flags) iopt_map_user_pages() argument
427 iopt_get_pages(struct io_pagetable *iopt, unsigned long iova, unsigned long length, struct list_head *pages_list) iopt_get_pages() argument
468 iopt_unmap_iova_range(struct io_pagetable *iopt, unsigned long start, unsigned long last, unsigned long *unmapped) iopt_unmap_iova_range() argument
557 iopt_unmap_iova(struct io_pagetable *iopt, unsigned long iova, unsigned long length, unsigned long *unmapped) iopt_unmap_iova() argument
571 iopt_unmap_all(struct io_pagetable *iopt, unsigned long *unmapped) iopt_unmap_all() argument
583 iopt_set_allow_iova(struct io_pagetable *iopt, struct rb_root_cached *allowed_iova) iopt_set_allow_iova() argument
604 iopt_reserve_iova(struct io_pagetable *iopt, unsigned long start, unsigned long last, void *owner) iopt_reserve_iova() argument
625 __iopt_remove_reserved_iova(struct io_pagetable *iopt, void *owner) __iopt_remove_reserved_iova() argument
643 iopt_remove_reserved_iova(struct io_pagetable *iopt, void *owner) iopt_remove_reserved_iova() argument
650 iopt_init_table(struct io_pagetable *iopt) iopt_init_table() argument
668 iopt_destroy_table(struct io_pagetable *iopt) iopt_destroy_table() argument
696 iopt_unfill_domain(struct io_pagetable *iopt, struct iommu_domain *domain) iopt_unfill_domain() argument
756 iopt_fill_domain(struct io_pagetable *iopt, struct iommu_domain *domain) iopt_fill_domain() argument
812 iopt_check_iova_alignment(struct io_pagetable *iopt, unsigned long new_iova_alignment) iopt_check_iova_alignment() argument
840 iopt_table_add_domain(struct io_pagetable *iopt, struct iommu_domain *domain) iopt_table_add_domain() argument
918 iopt_calculate_iova_alignment(struct io_pagetable *iopt) iopt_calculate_iova_alignment() argument
954 iopt_table_remove_domain(struct io_pagetable *iopt, struct iommu_domain *domain) iopt_table_remove_domain() argument
1002 struct io_pagetable *iopt = area->iopt; iopt_area_split() local
1099 iopt_cut_iova(struct io_pagetable *iopt, unsigned long *iovas, size_t num_iovas) iopt_cut_iova() argument
1120 iopt_enable_large_pages(struct io_pagetable *iopt) iopt_enable_large_pages() argument
1133 iopt_disable_large_pages(struct io_pagetable *iopt) iopt_disable_large_pages() argument
1159 iopt_add_access(struct io_pagetable *iopt, struct iommufd_access *access) iopt_add_access() argument
1185 iopt_remove_access(struct io_pagetable *iopt, struct iommufd_access *access, u32 iopt_access_list_id) iopt_remove_access() argument
1198 iopt_table_enforce_dev_resv_regions(struct io_pagetable *iopt, struct device *dev, phys_addr_t *sw_msi_start) iopt_table_enforce_dev_resv_regions() argument
[all...]
H A Diommufd_private.h54 void iopt_init_table(struct io_pagetable *iopt);
55 void iopt_destroy_table(struct io_pagetable *iopt);
56 int iopt_get_pages(struct io_pagetable *iopt, unsigned long iova,
62 int iopt_map_user_pages(struct iommufd_ctx *ictx, struct io_pagetable *iopt,
66 int iopt_map_pages(struct io_pagetable *iopt, struct list_head *pages_list,
69 int iopt_unmap_iova(struct io_pagetable *iopt, unsigned long iova,
71 int iopt_unmap_all(struct io_pagetable *iopt, unsigned long *unmapped);
73 void iommufd_access_notify_unmap(struct io_pagetable *iopt, unsigned long iova,
75 int iopt_table_add_domain(struct io_pagetable *iopt,
77 void iopt_table_remove_domain(struct io_pagetable *iopt,
199 struct io_pagetable iopt; global() member
[all...]
H A Ddevice.c347 rc = iopt_table_enforce_dev_resv_regions(&hwpt->ioas->iopt, idev->dev, in iommufd_hw_pagetable_attach()
374 iopt_remove_reserved_iova(&hwpt->ioas->iopt, idev->dev); in iommufd_hw_pagetable_attach()
391 iopt_remove_reserved_iova(&hwpt->ioas->iopt, idev->dev); in iommufd_hw_pagetable_detach()
446 &hwpt->ioas->iopt, cur->dev, NULL); in iommufd_device_do_replace()
462 iopt_remove_reserved_iova(&old_hwpt->ioas->iopt, in iommufd_device_do_replace()
482 iopt_remove_reserved_iova(&hwpt->ioas->iopt, cur->dev); in iommufd_device_do_replace()
493 * the iopt and if one is found use it, otherwise create a new domain.
713 rc = iopt_add_access(&new_ioas->iopt, access); in iommufd_access_change_ioas()
727 iopt_remove_access(&cur_ioas->iopt, access, iopt_access_list_id); in iommufd_access_change_ioas()
863 * iommufd_access_notify_unmap - Notify users of an iopt t
878 iommufd_access_notify_unmap(struct io_pagetable *iopt, unsigned long iova, unsigned long length) iommufd_access_notify_unmap() argument
913 struct io_pagetable *iopt; iommufd_access_unpin_pages() local
988 struct io_pagetable *iopt; iommufd_access_pin_pages() local
1076 struct io_pagetable *iopt; iommufd_access_rw() local
[all...]
H A Dioas.c17 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()
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()
148 struct io_pagetable *iopt; in iommufd_ioas_allow_iovas() local
157 iopt = &ioas->iopt; in iommufd_ioas_allow_iovas()
[all...]
H A Dio_pagetable.h22 * iovas are in byte units, but must be iopt->iova_alignment aligned.
32 * iopt->domains_rwsem.
36 * iopt and iommu_prot are immutable
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) \
169 for (area = iopt_area_contig_init(iter, iopt, iov
[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()
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 in iommufd_get_pagesizes()
[all...]
H A Dselftest.c47 static unsigned long iommufd_test_syz_conv_iova(struct io_pagetable *iopt, in iommufd_test_syz_conv_iova() argument
58 down_read(&iopt->iova_rwsem); in iommufd_test_syz_conv_iova()
59 for (area = iopt_area_iter_first(iopt, 0, ULONG_MAX); area; in iommufd_test_syz_conv_iova()
62 up_read(&iopt->iova_rwsem); in iommufd_test_syz_conv_iova()
67 up_read(&iopt->iova_rwsem); in iommufd_test_syz_conv_iova()
84 *iova = iommufd_test_syz_conv_iova(&ioas->iopt, iova); in iommufd_test_syz_conv_iova_id()
506 down_write(&ioas->iopt.iova_rwsem); in iommufd_test_add_reserved()
507 rc = iopt_reserve_iova(&ioas->iopt, start, start + length - 1, NULL); in iommufd_test_add_reserved()
508 up_write(&ioas->iopt.iova_rwsem); in iommufd_test_add_reserved()
855 iova = iommufd_test_syz_conv_iova(&staccess->access->ioas->iopt, in iommufd_test_access_pages()
[all...]
H A Dhw_pagetable.c20 iopt_table_remove_domain(&hwpt->ioas->iopt, hwpt->domain); in iommufd_hw_pagetable_destroy()
39 iopt_table_remove_domain(&hwpt->ioas->iopt, hwpt->domain); in iommufd_hw_pagetable_abort()
122 rc = iopt_table_add_domain(&hwpt->ioas->iopt, hwpt->domain); in iommufd_hw_pagetable_alloc()
H A Dpages.c478 bool disable_large_pages = area->iopt->disable_large_pages; in batch_to_domain()
1324 * are other domains in the iopt.
1418 lockdep_assert_held(&area->iopt->domains_rwsem); in iopt_area_fill_domains()
1420 if (xa_empty(&area->iopt->domains)) in iopt_area_fill_domains()
1432 xa_for_each(&area->iopt->domains, index, domain) { in iopt_area_fill_domains()
1448 area->storage_domain = xa_load(&area->iopt->domains, 0); in iopt_area_fill_domains()
1454 xa_for_each(&area->iopt->domains, unmap_index, domain) { in iopt_area_fill_domains()
1467 if (unmap_index != area->iopt->next_domain_id - 1) { in iopt_area_fill_domains()
1494 struct io_pagetable *iopt = area->iopt; in iopt_area_unfill_domains() local
[all...]
/kernel/linux/linux-5.10/drivers/dma/ppc4xx/
H A Ddma.h220 u32 iopt; member
/kernel/linux/linux-6.6/drivers/dma/ppc4xx/
H A Ddma.h217 u32 iopt; member

Completed in 10 milliseconds