Home
last modified time | relevance | path

Searched refs:iova (Results 1 - 25 of 449) sorted by relevance

12345678910>>...18

/kernel/linux/linux-5.10/drivers/staging/media/tegra-vde/
H A Diommu.c9 #include <linux/iova.h>
21 struct iova **iovap, in tegra_vde_iommu_map()
24 struct iova *iova; in tegra_vde_iommu_map() local
30 size = iova_align(&vde->iova, size); in tegra_vde_iommu_map()
31 shift = iova_shift(&vde->iova); in tegra_vde_iommu_map()
33 iova = alloc_iova(&vde->iova, size >> shift, end >> shift, true); in tegra_vde_iommu_map()
34 if (!iova) in tegra_vde_iommu_map()
37 addr = iova_dma_addr(&vde->iova, iov in tegra_vde_iommu_map()
51 tegra_vde_iommu_unmap(struct tegra_vde *vde, struct iova *iova) tegra_vde_iommu_unmap() argument
64 struct iova *iova; tegra_vde_iommu_init() local
[all...]
/kernel/linux/linux-6.6/drivers/media/platform/nvidia/tegra-vde/
H A Diommu.c9 #include <linux/iova.h>
21 struct iova **iovap, in tegra_vde_iommu_map()
24 struct iova *iova; in tegra_vde_iommu_map() local
30 size = iova_align(&vde->iova, size); in tegra_vde_iommu_map()
31 shift = iova_shift(&vde->iova); in tegra_vde_iommu_map()
33 iova = alloc_iova(&vde->iova, size >> shift, end >> shift, true); in tegra_vde_iommu_map()
34 if (!iova) in tegra_vde_iommu_map()
37 addr = iova_dma_addr(&vde->iova, iov in tegra_vde_iommu_map()
51 tegra_vde_iommu_unmap(struct tegra_vde *vde, struct iova *iova) tegra_vde_iommu_unmap() argument
64 struct iova *iova; tegra_vde_iommu_init() local
[all...]
/kernel/linux/linux-5.10/include/linux/
H A Diova.h18 /* iova structure */
19 struct iova { struct
67 /* holds all the iova translations for a domain */
70 struct rb_root rbroot; /* iova domain rbtree root */
85 struct iova anchor; /* rbtree lookup anchor */
92 iova entry */
100 static inline unsigned long iova_size(struct iova *iova) in iova_size() argument
102 return iova->pfn_hi - iova in iova_size()
115 iova_offset(struct iova_domain *iovad, dma_addr_t iova) iova_offset() argument
125 iova_dma_addr(struct iova_domain *iovad, struct iova *iova) iova_dma_addr() argument
130 iova_pfn(struct iova_domain *iovad, dma_addr_t iova) iova_pfn() argument
181 free_iova_mem(struct iova *iova) free_iova_mem() argument
189 __free_iova(struct iova_domain *iovad, struct iova *iova) __free_iova() argument
261 split_and_remove_iova(struct iova_domain *iovad, struct iova *iova, unsigned long pfn_lo, unsigned long pfn_hi) split_and_remove_iova() argument
[all...]
H A Dio-pgtable.h41 void (*tlb_flush_walk)(unsigned long iova, size_t size, size_t granule,
43 void (*tlb_flush_leaf)(unsigned long iova, size_t size, size_t granule,
46 unsigned long iova, size_t granule, void *cookie);
56 * @ias: Input address (iova) size, in bits.
151 * @iova_to_phys: Translate iova to physical address.
157 int (*map)(struct io_pgtable_ops *ops, unsigned long iova,
159 size_t (*unmap)(struct io_pgtable_ops *ops, unsigned long iova,
162 unsigned long iova);
217 io_pgtable_tlb_flush_walk(struct io_pgtable *iop, unsigned long iova, in io_pgtable_tlb_flush_walk() argument
220 iop->cfg.tlb->tlb_flush_walk(iova, siz in io_pgtable_tlb_flush_walk()
224 io_pgtable_tlb_flush_leaf(struct io_pgtable *iop, unsigned long iova, size_t size, size_t granule) io_pgtable_tlb_flush_leaf() argument
231 io_pgtable_tlb_add_page(struct io_pgtable *iop, struct iommu_iotlb_gather * gather, unsigned long iova, size_t granule) io_pgtable_tlb_add_page() argument
[all...]
/kernel/linux/linux-5.10/drivers/iommu/
H A Diova.c8 #include <linux/iova.h>
125 __cached_rbnode_insert_update(struct iova_domain *iovad, struct iova *new) in __cached_rbnode_insert_update()
134 __cached_rbnode_delete_update(struct iova_domain *iovad, struct iova *free) in __cached_rbnode_delete_update()
136 struct iova *cached_iova; in __cached_rbnode_delete_update()
138 cached_iova = rb_entry(iovad->cached32_node, struct iova, node); in __cached_rbnode_delete_update()
147 cached_iova = rb_entry(iovad->cached_node, struct iova, node); in __cached_rbnode_delete_update()
152 /* Insert the iova into domain rbtree by holding writer lock */
154 iova_insert_rbtree(struct rb_root *root, struct iova *iova, in iova_insert_rbtree() argument
162 struct iova *thi in iova_insert_rbtree()
240 free_iova_mem(struct iova *iova) free_iova_mem() argument
325 struct iova *iova = rb_entry(node, struct iova, node); private_find_iova() local
338 private_free_iova(struct iova_domain *iovad, struct iova *iova) private_free_iova() argument
356 struct iova *iova; find_iova() local
373 __free_iova(struct iova_domain *iovad, struct iova *iova) __free_iova() argument
393 struct iova *iova = find_iova(iovad, pfn); free_iova() local
595 struct iova *iova, *tmp; put_iova_domain() local
608 struct iova *iova = rb_entry(node, struct iova, node); __is_range_overlap() local
618 struct iova *iova; alloc_and_init_iova() local
633 struct iova *iova; __insert_new_range() local
643 __adjust_overlap_range(struct iova *iova, unsigned long *pfn_lo, unsigned long *pfn_hi) __adjust_overlap_range() argument
666 struct iova *iova; reserve_iova() local
713 struct iova *iova = rb_entry(node, struct iova, node); copy_reserved_iova() local
729 split_and_remove_iova(struct iova_domain *iovad, struct iova *iova, unsigned long pfn_lo, unsigned long pfn_hi) split_and_remove_iova() argument
812 struct iova *iova = private_find_iova(iovad, mag->pfns[i]); iova_magazine_free_pfns() local
[all...]
H A Dtegra-gart.c60 #define for_each_gart_pte(gart, iova) \
61 for (iova = gart->iovmm_base; \
62 iova < gart->iovmm_end; \
63 iova += GART_PAGE_SIZE)
66 unsigned long iova, unsigned long pte) in gart_set_pte()
68 writel_relaxed(iova, gart->regs + GART_ENTRY_ADDR); in gart_set_pte()
73 unsigned long iova) in gart_read_pte()
77 writel_relaxed(iova, gart->regs + GART_ENTRY_ADDR); in gart_read_pte()
85 unsigned long iova; in do_gart_setup() local
87 for_each_gart_pte(gart, iova) in do_gart_setup()
65 gart_set_pte(struct gart_device *gart, unsigned long iova, unsigned long pte) gart_set_pte() argument
72 gart_read_pte(struct gart_device *gart, unsigned long iova) gart_read_pte() argument
94 gart_iova_range_invalid(struct gart_device *gart, unsigned long iova, size_t bytes) gart_iova_range_invalid() argument
101 gart_pte_valid(struct gart_device *gart, unsigned long iova) gart_pte_valid() argument
167 __gart_iommu_map(struct gart_device *gart, unsigned long iova, unsigned long pa) __gart_iommu_map() argument
180 gart_iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t pa, size_t bytes, int prot, gfp_t gfp) gart_iommu_map() argument
196 __gart_iommu_unmap(struct gart_device *gart, unsigned long iova) __gart_iommu_unmap() argument
209 gart_iommu_unmap(struct iommu_domain *domain, unsigned long iova, size_t bytes, struct iommu_iotlb_gather *gather) gart_iommu_unmap() argument
225 gart_iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) gart_iommu_iova_to_phys() argument
296 unsigned long iova; tegra_gart_suspend() local
[all...]
H A Dio-pgtable-arm-v7s.c415 unsigned long iova, phys_addr_t paddr, int prot, in arm_v7s_init_pte()
431 tblp = ptep - ARM_V7S_LVL_IDX(iova, lvl); in arm_v7s_init_pte()
432 if (WARN_ON(__arm_v7s_unmap(data, NULL, iova + i * sz, in arm_v7s_init_pte()
475 static int __arm_v7s_map(struct arm_v7s_io_pgtable *data, unsigned long iova, in __arm_v7s_map() argument
484 ptep += ARM_V7S_LVL_IDX(iova, lvl); in __arm_v7s_map()
488 return arm_v7s_init_pte(data, iova, paddr, prot, in __arm_v7s_map()
519 return __arm_v7s_map(data, iova, paddr, size, prot, lvl + 1, cptep, gfp); in __arm_v7s_map()
522 static int arm_v7s_map(struct io_pgtable_ops *ops, unsigned long iova, in arm_v7s_map() argument
533 if (WARN_ON(iova >= (1ULL << data->iop.cfg.ias) || in arm_v7s_map()
537 ret = __arm_v7s_map(data, iova, padd in arm_v7s_map()
414 arm_v7s_init_pte(struct arm_v7s_io_pgtable *data, unsigned long iova, phys_addr_t paddr, int prot, int lvl, int num_entries, arm_v7s_iopte *ptep) arm_v7s_init_pte() argument
569 arm_v7s_split_cont(struct arm_v7s_io_pgtable *data, unsigned long iova, int idx, int lvl, arm_v7s_iopte *ptep) arm_v7s_split_cont() argument
595 arm_v7s_split_blk_unmap(struct arm_v7s_io_pgtable *data, struct iommu_iotlb_gather *gather, unsigned long iova, size_t size, arm_v7s_iopte blk_pte, arm_v7s_iopte *ptep) arm_v7s_split_blk_unmap() argument
640 __arm_v7s_unmap(struct arm_v7s_io_pgtable *data, struct iommu_iotlb_gather *gather, unsigned long iova, size_t size, int lvl, arm_v7s_iopte *ptep) __arm_v7s_unmap() argument
719 arm_v7s_unmap(struct io_pgtable_ops *ops, unsigned long iova, size_t size, struct iommu_iotlb_gather *gather) arm_v7s_unmap() argument
730 arm_v7s_iova_to_phys(struct io_pgtable_ops *ops, unsigned long iova) arm_v7s_iova_to_phys() argument
856 dummy_tlb_flush(unsigned long iova, size_t size, size_t granule, void *cookie) dummy_tlb_flush() argument
863 dummy_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) dummy_tlb_add_page() argument
894 unsigned int iova, size, iova_start; arm_v7s_do_selftests() local
[all...]
/kernel/linux/linux-6.6/include/linux/
H A Diova.h17 /* iova structure */
18 struct iova { struct
27 /* holds all the iova translations for a domain */
30 struct rb_root rbroot; /* iova domain rbtree root */
37 struct iova anchor; /* rbtree lookup anchor */
43 static inline unsigned long iova_size(struct iova *iova) in iova_size() argument
45 return iova->pfn_hi - iova->pfn_lo + 1; in iova_size()
58 static inline size_t iova_offset(struct iova_domain *iovad, dma_addr_t iova) in iova_offset() argument
68 iova_dma_addr(struct iova_domain *iovad, struct iova *iova) iova_dma_addr() argument
73 iova_pfn(struct iova_domain *iovad, dma_addr_t iova) iova_pfn() argument
114 __free_iova(struct iova_domain *iovad, struct iova *iova) __free_iova() argument
[all...]
/kernel/linux/linux-6.6/drivers/iommu/
H A Diova.c8 #include <linux/iova.h>
46 static struct iova *to_iova(struct rb_node *node) in to_iova()
48 return rb_entry(node, struct iova, node); in to_iova()
86 __cached_rbnode_insert_update(struct iova_domain *iovad, struct iova *new) in __cached_rbnode_insert_update()
95 __cached_rbnode_delete_update(struct iova_domain *iovad, struct iova *free) in __cached_rbnode_delete_update()
97 struct iova *cached_iova; in __cached_rbnode_delete_update()
150 /* Insert the iova into domain rbtree by holding writer lock */
152 iova_insert_rbtree(struct rb_root *root, struct iova *iova, in iova_insert_rbtree() argument
160 struct iova *thi in iova_insert_rbtree()
248 free_iova_mem(struct iova *iova) free_iova_mem() argument
345 struct iova *iova = to_iova(node); private_find_iova() local
358 remove_iova(struct iova_domain *iovad, struct iova *iova) remove_iova() argument
375 struct iova *iova; find_iova() local
392 __free_iova(struct iova_domain *iovad, struct iova *iova) __free_iova() argument
414 struct iova *iova; free_iova() local
510 struct iova *iova, *tmp; put_iova_domain() local
524 struct iova *iova = to_iova(node); __is_range_overlap() local
534 struct iova *iova; alloc_and_init_iova() local
549 struct iova *iova; __insert_new_range() local
559 __adjust_overlap_range(struct iova *iova, unsigned long *pfn_lo, unsigned long *pfn_hi) __adjust_overlap_range() argument
582 struct iova *iova; reserve_iova() local
673 struct iova *iova = private_find_iova(iovad, mag->pfns[i]); iova_magazine_free_pfns() local
[all...]
H A Dtegra-gart.c60 #define for_each_gart_pte(gart, iova) \
61 for (iova = gart->iovmm_base; \
62 iova < gart->iovmm_end; \
63 iova += GART_PAGE_SIZE)
66 unsigned long iova, unsigned long pte) in gart_set_pte()
68 writel_relaxed(iova, gart->regs + GART_ENTRY_ADDR); in gart_set_pte()
73 unsigned long iova) in gart_read_pte()
77 writel_relaxed(iova, gart->regs + GART_ENTRY_ADDR); in gart_read_pte()
85 unsigned long iova; in do_gart_setup() local
87 for_each_gart_pte(gart, iova) in do_gart_setup()
65 gart_set_pte(struct gart_device *gart, unsigned long iova, unsigned long pte) gart_set_pte() argument
72 gart_read_pte(struct gart_device *gart, unsigned long iova) gart_read_pte() argument
94 gart_iova_range_invalid(struct gart_device *gart, unsigned long iova, size_t bytes) gart_iova_range_invalid() argument
101 gart_pte_valid(struct gart_device *gart, unsigned long iova) gart_pte_valid() argument
167 __gart_iommu_map(struct gart_device *gart, unsigned long iova, unsigned long pa) __gart_iommu_map() argument
180 gart_iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t pa, size_t bytes, int prot, gfp_t gfp) gart_iommu_map() argument
196 __gart_iommu_unmap(struct gart_device *gart, unsigned long iova) __gart_iommu_unmap() argument
209 gart_iommu_unmap(struct iommu_domain *domain, unsigned long iova, size_t bytes, struct iommu_iotlb_gather *gather) gart_iommu_unmap() argument
225 gart_iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) gart_iommu_iova_to_phys() argument
255 gart_iommu_sync_map(struct iommu_domain *domain, unsigned long iova, size_t size) gart_iommu_sync_map() argument
290 unsigned long iova; tegra_gart_suspend() local
[all...]
H A Dio-pgtable-arm-v7s.c432 unsigned long iova, phys_addr_t paddr, int prot, in arm_v7s_init_pte()
448 tblp = ptep - ARM_V7S_LVL_IDX(iova, lvl, cfg); in arm_v7s_init_pte()
449 if (WARN_ON(__arm_v7s_unmap(data, NULL, iova + i * sz, in arm_v7s_init_pte()
497 static int __arm_v7s_map(struct arm_v7s_io_pgtable *data, unsigned long iova, in __arm_v7s_map() argument
506 ptep += ARM_V7S_LVL_IDX(iova, lvl, cfg); in __arm_v7s_map()
510 return arm_v7s_init_pte(data, iova, paddr, prot, in __arm_v7s_map()
541 return __arm_v7s_map(data, iova, paddr, size, prot, lvl + 1, cptep, gfp); in __arm_v7s_map()
544 static int arm_v7s_map_pages(struct io_pgtable_ops *ops, unsigned long iova, in arm_v7s_map_pages() argument
551 if (WARN_ON(iova >= (1ULL << data->iop.cfg.ias) || in arm_v7s_map_pages()
560 ret = __arm_v7s_map(data, iova, padd in arm_v7s_map_pages()
431 arm_v7s_init_pte(struct arm_v7s_io_pgtable *data, unsigned long iova, phys_addr_t paddr, int prot, int lvl, int num_entries, arm_v7s_iopte *ptep) arm_v7s_init_pte() argument
595 arm_v7s_split_cont(struct arm_v7s_io_pgtable *data, unsigned long iova, int idx, int lvl, arm_v7s_iopte *ptep) arm_v7s_split_cont() argument
621 arm_v7s_split_blk_unmap(struct arm_v7s_io_pgtable *data, struct iommu_iotlb_gather *gather, unsigned long iova, size_t size, arm_v7s_iopte blk_pte, arm_v7s_iopte *ptep) arm_v7s_split_blk_unmap() argument
666 __arm_v7s_unmap(struct arm_v7s_io_pgtable *data, struct iommu_iotlb_gather *gather, unsigned long iova, size_t size, int lvl, arm_v7s_iopte *ptep) __arm_v7s_unmap() argument
738 arm_v7s_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova, size_t pgsize, size_t pgcount, struct iommu_iotlb_gather *gather) arm_v7s_unmap_pages() argument
760 arm_v7s_iova_to_phys(struct io_pgtable_ops *ops, unsigned long iova) arm_v7s_iova_to_phys() argument
903 dummy_tlb_flush(unsigned long iova, size_t size, size_t granule, void *cookie) dummy_tlb_flush() argument
910 dummy_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) dummy_tlb_add_page() argument
940 unsigned int iova, size, iova_start; arm_v7s_do_selftests() local
[all...]
H A Dsun50i-iommu.c165 static u32 sun50i_iova_get_dte_index(dma_addr_t iova) in sun50i_iova_get_dte_index() argument
167 return FIELD_GET(SUN50I_IOVA_DTE_MASK, iova); in sun50i_iova_get_dte_index()
170 static u32 sun50i_iova_get_pte_index(dma_addr_t iova) in sun50i_iova_get_pte_index() argument
172 return FIELD_GET(SUN50I_IOVA_PTE_MASK, iova); in sun50i_iova_get_pte_index()
175 static u32 sun50i_iova_get_page_offset(dma_addr_t iova) in sun50i_iova_get_page_offset() argument
177 return FIELD_GET(SUN50I_IOVA_PAGE_MASK, iova); in sun50i_iova_get_page_offset()
301 unsigned long iova) in sun50i_iommu_zap_iova()
306 iommu_write(iommu, IOMMU_TLB_IVLD_ADDR_REG, iova); in sun50i_iommu_zap_iova()
318 unsigned long iova) in sun50i_iommu_zap_ptw_cache()
323 iommu_write(iommu, IOMMU_PC_IVLD_ADDR_REG, iova); in sun50i_iommu_zap_ptw_cache()
300 sun50i_iommu_zap_iova(struct sun50i_iommu *iommu, unsigned long iova) sun50i_iommu_zap_iova() argument
317 sun50i_iommu_zap_ptw_cache(struct sun50i_iommu *iommu, unsigned long iova) sun50i_iommu_zap_ptw_cache() argument
333 sun50i_iommu_zap_range(struct sun50i_iommu *iommu, unsigned long iova, size_t size) sun50i_iommu_zap_range() argument
405 sun50i_iommu_iotlb_sync_map(struct iommu_domain *domain, unsigned long iova, size_t size) sun50i_iommu_iotlb_sync_map() argument
552 sun50i_dte_get_page_table(struct sun50i_iommu_domain *sun50i_domain, dma_addr_t iova, gfp_t gfp) sun50i_dte_get_page_table() argument
591 sun50i_iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot, gfp_t gfp) sun50i_iommu_map() argument
624 sun50i_iommu_unmap(struct iommu_domain *domain, unsigned long iova, size_t size, struct iommu_iotlb_gather *gather) sun50i_iommu_unmap() argument
648 sun50i_iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) sun50i_iommu_iova_to_phys() argument
847 sun50i_iommu_report_fault(struct sun50i_iommu *iommu, unsigned master, phys_addr_t iova, unsigned prot) sun50i_iommu_report_fault() argument
866 phys_addr_t iova; sun50i_iommu_handle_pt_irq() local
889 phys_addr_t iova; sun50i_iommu_handle_perm_irq() local
[all...]
/kernel/linux/linux-6.6/include/trace/events/
H A Diommu.h81 TP_PROTO(unsigned long iova, phys_addr_t paddr, size_t size),
83 TP_ARGS(iova, paddr, size),
86 __field(u64, iova)
92 __entry->iova = iova;
97 TP_printk("IOMMU: iova=0x%016llx - 0x%016llx paddr=0x%016llx size=%zu",
98 __entry->iova, __entry->iova + __entry->size, __entry->paddr,
105 TP_PROTO(unsigned long iova, size_t size, size_t unmapped_size),
107 TP_ARGS(iova, siz
[all...]
/kernel/linux/linux-5.10/drivers/fpga/
H A Ddfl-afu-dma-region.c118 * @iova: address of the dma memory area
121 * Compare the dma memory area defined by @iova and @size with given dma region.
125 u64 iova, u64 size) in dma_region_check_iova()
127 if (!size && region->iova != iova) in dma_region_check_iova()
130 return (region->iova <= iova) && in dma_region_check_iova()
131 (region->length + region->iova >= iova + size); in dma_region_check_iova()
149 dev_dbg(&pdata->dev->dev, "add region (iova in afu_dma_region_add()
124 dma_region_check_iova(struct dfl_afu_dma_region *region, u64 iova, u64 size) dma_region_check_iova() argument
245 afu_dma_region_find(struct dfl_feature_platform_data *pdata, u64 iova, u64 size) afu_dma_region_find() argument
285 afu_dma_region_find_iova(struct dfl_feature_platform_data *pdata, u64 iova) afu_dma_region_find_iova() argument
301 afu_dma_map_region(struct dfl_feature_platform_data *pdata, u64 user_addr, u64 length, u64 *iova) afu_dma_map_region() argument
380 afu_dma_unmap_region(struct dfl_feature_platform_data *pdata, u64 iova) afu_dma_unmap_region() argument
[all...]
/kernel/linux/linux-6.6/drivers/fpga/
H A Ddfl-afu-dma-region.c118 * @iova: address of the dma memory area
121 * Compare the dma memory area defined by @iova and @size with given dma region.
125 u64 iova, u64 size) in dma_region_check_iova()
127 if (!size && region->iova != iova) in dma_region_check_iova()
130 return (region->iova <= iova) && in dma_region_check_iova()
131 (region->length + region->iova >= iova + size); in dma_region_check_iova()
149 dev_dbg(&pdata->dev->dev, "add region (iova in afu_dma_region_add()
124 dma_region_check_iova(struct dfl_afu_dma_region *region, u64 iova, u64 size) dma_region_check_iova() argument
245 afu_dma_region_find(struct dfl_feature_platform_data *pdata, u64 iova, u64 size) afu_dma_region_find() argument
285 afu_dma_region_find_iova(struct dfl_feature_platform_data *pdata, u64 iova) afu_dma_region_find_iova() argument
301 afu_dma_map_region(struct dfl_feature_platform_data *pdata, u64 user_addr, u64 length, u64 *iova) afu_dma_map_region() argument
380 afu_dma_unmap_region(struct dfl_feature_platform_data *pdata, u64 iova) afu_dma_unmap_region() argument
[all...]
/kernel/linux/linux-5.10/include/trace/events/
H A Diommu.h88 TP_PROTO(unsigned long iova, phys_addr_t paddr, size_t size),
90 TP_ARGS(iova, paddr, size),
93 __field(u64, iova)
99 __entry->iova = iova;
104 TP_printk("IOMMU: iova=0x%016llx paddr=0x%016llx size=%zu",
105 __entry->iova, __entry->paddr, __entry->size
111 TP_PROTO(unsigned long iova, size_t size, size_t unmapped_size),
113 TP_ARGS(iova, size, unmapped_size),
116 __field(u64, iova)
[all...]
/kernel/linux/linux-5.10/drivers/staging/media/ipu3/
H A Dipu3-dmamap.c102 struct iova *iova; in imgu_dmamap_alloc() local
107 iova = alloc_iova(&imgu->iova_domain, size >> shift, in imgu_dmamap_alloc()
109 if (!iova) in imgu_dmamap_alloc()
117 iovaddr = iova_dma_addr(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
133 map->daddr = iova_dma_addr(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
142 imgu_mmu_unmap(imgu->mmu, iova_dma_addr(&imgu->iova_domain, iova), in imgu_dmamap_alloc()
146 __free_iova(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
153 struct iova *iova; in imgu_dmamap_unmap() local
189 struct iova *iova; imgu_dmamap_map_sg() local
[all...]
/kernel/linux/linux-6.6/drivers/staging/media/ipu3/
H A Dipu3-dmamap.c102 struct iova *iova; in imgu_dmamap_alloc() local
107 iova = alloc_iova(&imgu->iova_domain, size >> shift, in imgu_dmamap_alloc()
109 if (!iova) in imgu_dmamap_alloc()
117 iovaddr = iova_dma_addr(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
133 map->daddr = iova_dma_addr(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
142 imgu_mmu_unmap(imgu->mmu, iova_dma_addr(&imgu->iova_domain, iova), in imgu_dmamap_alloc()
146 __free_iova(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
153 struct iova *iova; in imgu_dmamap_unmap() local
189 struct iova *iova; imgu_dmamap_map_sg() local
[all...]
/kernel/linux/linux-6.6/drivers/vfio/
H A Dvfio_iommu_type1.c90 dma_addr_t iova; /* Device address */ member
129 dma_addr_t iova; /* Device address */ member
136 dma_addr_t iova; member
173 if (start + size <= dma->iova) in vfio_find_dma()
175 else if (start >= dma->iova + dma->size) in vfio_find_dma()
194 if (start < dma->iova + dma->size) { in vfio_find_dma_first_node()
197 if (start >= dma->iova) in vfio_find_dma_first_node()
204 if (res && size && dma_res->iova >= start + size) in vfio_find_dma_first_node()
218 if (new->iova + new->size <= dma->iova) in vfio_link_dma()
323 vfio_find_vpfn(struct vfio_dma *dma, dma_addr_t iova) vfio_find_vpfn() argument
367 vfio_add_to_pfn_list(struct vfio_dma *dma, dma_addr_t iova, unsigned long pfn) vfio_add_to_pfn_list() argument
390 vfio_iova_get_vfio_pfn(struct vfio_dma *dma, unsigned long iova) vfio_iova_get_vfio_pfn() argument
621 dma_addr_t iova = vaddr - dma->vaddr + dma->iova; vfio_pin_pages_remote() local
724 vfio_unpin_pages_remote(struct vfio_dma *dma, dma_addr_t iova, unsigned long pfn, long npage, bool do_accounting) vfio_unpin_pages_remote() argument
779 vfio_unpin_page_external(struct vfio_dma *dma, dma_addr_t iova, bool do_accounting) vfio_unpin_page_external() argument
839 dma_addr_t iova; vfio_iommu_type1_pin_pages() local
904 dma_addr_t iova; vfio_iommu_type1_pin_pages() local
931 dma_addr_t iova = user_iova + PAGE_SIZE * i; vfio_iommu_type1_unpin_pages() local
979 unmap_unpin_fast(struct vfio_domain *domain, struct vfio_dma *dma, dma_addr_t *iova, size_t len, phys_addr_t phys, long *unlocked, struct list_head *unmapped_list, int *unmapped_cnt, struct iommu_iotlb_gather *iotlb_gather) unmap_unpin_fast() argument
1019 unmap_unpin_slow(struct vfio_domain *domain, struct vfio_dma *dma, dma_addr_t *iova, size_t len, phys_addr_t phys, long *unlocked) unmap_unpin_slow() argument
1040 dma_addr_t iova = dma->iova, end = dma->iova + dma->size; vfio_unmap_unpin() local
1195 vfio_iova_dirty_bitmap(u64 __user *bitmap, struct vfio_iommu *iommu, dma_addr_t iova, size_t size, size_t pgsize) vfio_iova_dirty_bitmap() argument
1287 dma_addr_t iova = unmap->iova; vfio_dma_do_unmap() local
1430 vfio_iommu_map(struct vfio_iommu *iommu, dma_addr_t iova, unsigned long pfn, long npage, int prot) vfio_iommu_map() argument
1460 dma_addr_t iova = dma->iova; vfio_pin_map_dma() local
1510 struct list_head *iova = &iommu->iova_list; vfio_iommu_iova_dma_valid() local
1561 dma_addr_t iova = map->iova; vfio_dma_do_map() local
1697 dma_addr_t iova; vfio_iommu_replay() local
1782 dma_addr_t iova; vfio_iommu_replay() local
1955 struct list_head *iova = &iommu->iova_list; vfio_iommu_aper_conflict() local
1985 vfio_iommu_aper_resize(struct list_head *iova, dma_addr_t start, dma_addr_t end) vfio_iommu_aper_resize() argument
2046 vfio_iommu_resv_exclude(struct list_head *iova, struct list_head *resv_regions) vfio_iommu_resv_exclude() argument
2104 vfio_iommu_iova_free(struct list_head *iova) vfio_iommu_iova_free() argument
2117 struct list_head *iova = &iommu->iova_list; vfio_iommu_iova_get_copy() local
2137 struct list_head *iova = &iommu->iova_list; vfio_iommu_iova_insert_copy() local
2697 struct vfio_iova *iova; vfio_iommu_iova_build_caps() local
[all...]
H A Diova_bitmap.c32 * data[(iova / page_size) / 64] & (1ULL << (iova % 64))
36 unsigned long iova; member
74 * bitmap = iova_bitmap_alloc(iova, length, page_size, data);
82 * Each iteration of the @dirty_reporter_fn is called with a unique @iova
87 * iova_bitmap_set(bitmap, iova, iova_length);
112 unsigned long iova; member
123 * (stored in mapped::iova). All computations in this file are done using
124 * relative IOVAs and thus avoid an extra subtraction against mapped::iova.
128 unsigned long iova) in iova_bitmap_offset_to_index()
127 iova_bitmap_offset_to_index(struct iova_bitmap *bitmap, unsigned long iova) iova_bitmap_offset_to_index() argument
238 iova_bitmap_alloc(unsigned long iova, size_t length, unsigned long page_size, u64 __user *data) iova_bitmap_alloc() argument
317 unsigned long iova = iova_bitmap_mapped_iova(bitmap); iova_bitmap_mapped_length() local
350 unsigned long iova = iova_bitmap_mapped_length(bitmap) - 1; iova_bitmap_advance() local
402 iova_bitmap_set(struct iova_bitmap *bitmap, unsigned long iova, size_t length) iova_bitmap_set() argument
[all...]
/kernel/linux/linux-5.10/drivers/vfio/
H A Dvfio_iommu_type1.c90 dma_addr_t iova; /* Device address */ member
126 dma_addr_t iova; /* Device address */ member
133 dma_addr_t iova; member
173 if (start + size <= dma->iova) in vfio_find_dma()
175 else if (start >= dma->iova + dma->size) in vfio_find_dma()
193 if (new->iova + new->size <= dma->iova) in vfio_link_dma()
243 bitmap_set(dma->bitmap, (vpfn->iova - dma->iova) >> pgshift, 1); in vfio_dma_populate_bitmap()
296 * Helper Functions for host iova
298 vfio_find_vpfn(struct vfio_dma *dma, dma_addr_t iova) vfio_find_vpfn() argument
342 vfio_add_to_pfn_list(struct vfio_dma *dma, dma_addr_t iova, unsigned long pfn) vfio_add_to_pfn_list() argument
365 vfio_iova_get_vfio_pfn(struct vfio_dma *dma, unsigned long iova) vfio_iova_get_vfio_pfn() argument
568 dma_addr_t iova = vaddr - dma->vaddr + dma->iova; vfio_pin_pages_remote() local
642 vfio_unpin_pages_remote(struct vfio_dma *dma, dma_addr_t iova, unsigned long pfn, long npage, bool do_accounting) vfio_unpin_pages_remote() argument
697 vfio_unpin_page_external(struct vfio_dma *dma, dma_addr_t iova, bool do_accounting) vfio_unpin_page_external() argument
750 dma_addr_t iova; vfio_iommu_type1_pin_pages() local
808 dma_addr_t iova; vfio_iommu_type1_pin_pages() local
840 dma_addr_t iova; vfio_iommu_type1_unpin_pages() local
887 unmap_unpin_fast(struct vfio_domain *domain, struct vfio_dma *dma, dma_addr_t *iova, size_t len, phys_addr_t phys, long *unlocked, struct list_head *unmapped_list, int *unmapped_cnt, struct iommu_iotlb_gather *iotlb_gather) unmap_unpin_fast() argument
927 unmap_unpin_slow(struct vfio_domain *domain, struct vfio_dma *dma, dma_addr_t *iova, size_t len, phys_addr_t phys, long *unlocked) unmap_unpin_slow() argument
948 dma_addr_t iova = dma->iova, end = dma->iova + dma->size; vfio_unmap_unpin() local
1101 vfio_iova_dirty_bitmap(u64 __user *bitmap, struct vfio_iommu *iommu, dma_addr_t iova, size_t size, size_t pgsize) vfio_iova_dirty_bitmap() argument
1296 vfio_iommu_map(struct vfio_iommu *iommu, dma_addr_t iova, unsigned long pfn, long npage, int prot) vfio_iommu_map() argument
1325 dma_addr_t iova = dma->iova; vfio_pin_map_dma() local
1374 struct list_head *iova = &iommu->iova_list; vfio_iommu_iova_dma_valid() local
1392 dma_addr_t iova = map->iova; vfio_dma_do_map() local
1521 dma_addr_t iova; vfio_iommu_replay() local
1604 dma_addr_t iova; vfio_iommu_replay() local
1890 struct list_head *iova = &iommu->iova_list; vfio_iommu_aper_conflict() local
1920 vfio_iommu_aper_resize(struct list_head *iova, dma_addr_t start, dma_addr_t end) vfio_iommu_aper_resize() argument
1981 vfio_iommu_resv_exclude(struct list_head *iova, struct list_head *resv_regions) vfio_iommu_resv_exclude() argument
2039 vfio_iommu_iova_free(struct list_head *iova) vfio_iommu_iova_free() argument
2052 struct list_head *iova = &iommu->iova_list; vfio_iommu_iova_get_copy() local
2072 struct list_head *iova = &iommu->iova_list; vfio_iommu_iova_insert_copy() local
2624 struct vfio_iova *iova; vfio_iommu_iova_build_caps() local
[all...]
/kernel/linux/linux-6.6/drivers/infiniband/sw/rxe/
H A Drxe_mr.c27 int mr_check_range(struct rxe_mr *mr, u64 iova, size_t length) in mr_check_range() argument
35 if (iova < mr->ibmr.iova || in mr_check_range()
36 iova + length > mr->ibmr.iova + mr->ibmr.length) { in mr_check_range()
37 rxe_dbg_mr(mr, "iova/length out of range"); in mr_check_range()
75 static unsigned long rxe_mr_iova_to_index(struct rxe_mr *mr, u64 iova) in rxe_mr_iova_to_index() argument
77 return (iova >> mr->page_shift) - (mr->ibmr.iova >> mr->page_shift); in rxe_mr_iova_to_index()
80 static unsigned long rxe_mr_iova_to_page_offset(struct rxe_mr *mr, u64 iova) in rxe_mr_iova_to_page_offset() argument
129 rxe_mr_init_user(struct rxe_dev *rxe, u64 start, u64 length, u64 iova, int access, struct rxe_mr *mr) rxe_mr_init_user() argument
245 rxe_mr_copy_xarray(struct rxe_mr *mr, u64 iova, void *addr, unsigned int length, enum rxe_mr_copy_dir dir) rxe_mr_copy_xarray() argument
304 rxe_mr_copy(struct rxe_mr *mr, u64 iova, void *addr, unsigned int length, enum rxe_mr_copy_dir dir) rxe_mr_copy() argument
345 u64 iova; copy_data() local
424 rxe_flush_pmem_iova(struct rxe_mr *mr, u64 iova, unsigned int length) rxe_flush_pmem_iova() argument
471 rxe_mr_do_atomic_op(struct rxe_mr *mr, u64 iova, int opcode, u64 compare, u64 swap_add, u64 *orig_val) rxe_mr_do_atomic_op() argument
529 rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value) rxe_mr_do_atomic_write() argument
577 rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value) rxe_mr_do_atomic_write() argument
[all...]
/kernel/linux/linux-6.6/drivers/vdpa/vdpa_user/
H A Diova_domain.c104 u64 iova, u64 size, u64 paddr) in vduse_domain_map_bounce_page()
107 u64 last = iova + size - 1; in vduse_domain_map_bounce_page()
109 while (iova <= last) { in vduse_domain_map_bounce_page()
110 map = &domain->bounce_maps[iova >> PAGE_SHIFT]; in vduse_domain_map_bounce_page()
118 iova += PAGE_SIZE; in vduse_domain_map_bounce_page()
124 u64 iova, u64 size) in vduse_domain_unmap_bounce_page()
127 u64 last = iova + size - 1; in vduse_domain_unmap_bounce_page()
129 while (iova <= last) { in vduse_domain_unmap_bounce_page()
130 map = &domain->bounce_maps[iova >> PAGE_SHIFT]; in vduse_domain_unmap_bounce_page()
132 iova in vduse_domain_unmap_bounce_page()
103 vduse_domain_map_bounce_page(struct vduse_iova_domain *domain, u64 iova, u64 size, u64 paddr) vduse_domain_map_bounce_page() argument
123 vduse_domain_unmap_bounce_page(struct vduse_iova_domain *domain, u64 iova, u64 size) vduse_domain_unmap_bounce_page() argument
160 vduse_domain_bounce(struct vduse_iova_domain *domain, dma_addr_t iova, size_t size, enum dma_data_direction dir) vduse_domain_bounce() argument
190 vduse_domain_get_coherent_page(struct vduse_iova_domain *domain, u64 iova) vduse_domain_get_coherent_page() argument
211 vduse_domain_get_bounce_page(struct vduse_iova_domain *domain, u64 iova) vduse_domain_get_bounce_page() argument
367 vduse_domain_free_iova(struct iova_domain *iovad, dma_addr_t iova, size_t size) vduse_domain_free_iova() argument
384 dma_addr_t iova = vduse_domain_alloc_iova(iovad, size, limit); vduse_domain_map_page() local
430 dma_addr_t iova = vduse_domain_alloc_iova(iovad, size, limit); vduse_domain_alloc_coherent() local
488 unsigned long iova = vmf->pgoff << PAGE_SHIFT; vduse_domain_mmap_fault() local
[all...]
/kernel/linux/linux-6.6/drivers/iommu/iommufd/
H A Dselftest.c42 * Syzkaller has trouble randomizing the correct iova to use since it is linked
48 u64 *iova) in iommufd_test_syz_conv_iova()
54 struct syz_layout *syz = (void *)iova; in iommufd_test_syz_conv_iova()
73 unsigned int ioas_id, u64 *iova, u32 *flags) in iommufd_test_syz_conv_iova_id()
84 *iova = iommufd_test_syz_conv_iova(&ioas->iopt, iova); in iommufd_test_syz_conv_iova_id()
179 unsigned long iova, phys_addr_t paddr, in mock_domain_map_pages()
186 unsigned long start_iova = iova; in mock_domain_map_pages()
195 WARN_ON(iova % MOCK_IO_PAGE_SIZE); in mock_domain_map_pages()
205 old = xa_store(&mock->pfns, iova / MOCK_IO_PAGE_SIZ in mock_domain_map_pages()
47 iommufd_test_syz_conv_iova(struct io_pagetable *iopt, u64 *iova) iommufd_test_syz_conv_iova() argument
72 iommufd_test_syz_conv_iova_id(struct iommufd_ucmd *ucmd, unsigned int ioas_id, u64 *iova, u32 *flags) iommufd_test_syz_conv_iova_id() argument
178 mock_domain_map_pages(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t pgsize, size_t pgcount, int prot, gfp_t gfp, size_t *mapped) mock_domain_map_pages() argument
227 mock_domain_unmap_pages(struct iommu_domain *domain, unsigned long iova, size_t pgsize, size_t pgcount, struct iommu_iotlb_gather *iotlb_gather) mock_domain_unmap_pages() argument
271 mock_domain_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) mock_domain_iova_to_phys() argument
514 iommufd_test_md_check_pa(struct iommufd_ucmd *ucmd, unsigned int mockpt_id, unsigned long iova, size_t length, void __user *uptr) iommufd_test_md_check_pa() argument
614 unsigned long iova; global() member
636 iommufd_test_access_unmap(void *data, unsigned long iova, unsigned long length) iommufd_test_access_unmap() argument
826 iommufd_test_access_pages(struct iommufd_ucmd *ucmd, unsigned int access_id, unsigned long iova, size_t length, void __user *uptr, u32 flags) iommufd_test_access_pages() argument
921 iommufd_test_access_rw(struct iommufd_ucmd *ucmd, unsigned int access_id, unsigned long iova, size_t length, void __user *ubuf, unsigned int flags) iommufd_test_access_rw() argument
[all...]
/kernel/linux/linux-6.6/drivers/iommu/amd/
H A Dio_pgtable_v2.c135 static u64 *v2_alloc_pte(int nid, u64 *pgd, unsigned long iova, in v2_alloc_pte() argument
143 pte = &pgd[PM_LEVEL_INDEX(level, iova)]; in v2_alloc_pte()
144 iova = PAGE_SIZE_ALIGN(iova, PAGE_SIZE); in v2_alloc_pte()
175 pte = &pte[PM_LEVEL_INDEX(level, iova)]; in v2_alloc_pte()
199 unsigned long iova, unsigned long *page_size) in fetch_pte()
205 pte = &pgtable->pgd[PM_LEVEL_INDEX(level, iova)]; in fetch_pte()
216 pte = &pte[PM_LEVEL_INDEX(level - 1, iova)]; in fetch_pte()
236 static int iommu_v2_map_pages(struct io_pgtable_ops *ops, unsigned long iova, in iommu_v2_map_pages() argument
245 unsigned long o_iova = iova; in iommu_v2_map_pages()
198 fetch_pte(struct amd_io_pgtable *pgtable, unsigned long iova, unsigned long *page_size) fetch_pte() argument
288 iommu_v2_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova, size_t pgsize, size_t pgcount, struct iommu_iotlb_gather *gather) iommu_v2_unmap_pages() argument
317 iommu_v2_iova_to_phys(struct io_pgtable_ops *ops, unsigned long iova) iommu_v2_iova_to_phys() argument
340 v2_tlb_flush_walk(unsigned long iova, size_t size, size_t granule, void *cookie) v2_tlb_flush_walk() argument
345 v2_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) v2_tlb_add_page() argument
[all...]

Completed in 27 milliseconds

12345678910>>...18