| /linux-6.15/drivers/media/platform/nvidia/tegra-vde/ |
| H A D | iommu.c | 24 struct iova *iova; in tegra_vde_iommu_map() local 34 if (!iova) in tegra_vde_iommu_map() 37 addr = iova_dma_addr(&vde->iova, iova); in tegra_vde_iommu_map() 42 __free_iova(&vde->iova, iova); in tegra_vde_iommu_map() 46 *iovap = iova; in tegra_vde_iommu_map() 55 dma_addr_t addr = iova_dma_addr(&vde->iova, iova); in tegra_vde_iommu_unmap() 58 __free_iova(&vde->iova, iova); in tegra_vde_iommu_unmap() 64 struct iova *iova; in tegra_vde_iommu_init() local 104 iova = reserve_iova(&vde->iova, 0x60000000 >> shift, in tegra_vde_iommu_init() 106 if (!iova) { in tegra_vde_iommu_init() [all …]
|
| H A D | dmabuf-cache.c | 28 struct iova *iova; member 39 tegra_vde_iommu_unmap(entry->vde, entry->iova); in tegra_vde_release_entry() 73 struct iova *iova; in tegra_vde_dmabuf_cache_map() local 91 *addrp = iova_dma_addr(&vde->iova, entry->iova); in tegra_vde_dmabuf_cache_map() 125 err = tegra_vde_iommu_map(vde, sgt, &iova, dmabuf->size); in tegra_vde_dmabuf_cache_map() 129 *addrp = iova_dma_addr(&vde->iova, iova); in tegra_vde_dmabuf_cache_map() 132 iova = NULL; in tegra_vde_dmabuf_cache_map() 139 entry->iova = iova; in tegra_vde_dmabuf_cache_map()
|
| /linux-6.15/include/linux/ |
| H A D | iova.h | 18 struct iova { struct 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() 60 return iova & iova_mask(iovad); in iova_offset() 73 static inline dma_addr_t iova_dma_addr(struct iova_domain *iovad, struct iova *iova) in iova_dma_addr() argument 75 return (dma_addr_t)iova->pfn_lo << iova_shift(iovad); in iova_dma_addr() 80 return iova >> iova_shift(iovad); in iova_pfn() 90 void __free_iova(struct iova_domain *iovad, struct iova *iova); 119 static inline void __free_iova(struct iova_domain *iovad, struct iova *iova) in __free_iova() argument [all …]
|
| H A D | io-pgtable.h | 43 void (*tlb_flush_walk)(unsigned long iova, size_t size, size_t granule, 46 unsigned long iova, size_t granule, void *cookie); 204 int (*map_pages)(struct io_pgtable_ops *ops, unsigned long iova, 207 size_t (*unmap_pages)(struct io_pgtable_ops *ops, unsigned long iova, 211 unsigned long iova); 212 int (*pgtable_walk)(struct io_pgtable_ops *ops, unsigned long iova, void *wd); 214 unsigned long iova, size_t size, 272 io_pgtable_tlb_flush_walk(struct io_pgtable *iop, unsigned long iova, in io_pgtable_tlb_flush_walk() argument 276 iop->cfg.tlb->tlb_flush_walk(iova, size, granule, iop->cookie); in io_pgtable_tlb_flush_walk() 281 struct iommu_iotlb_gather * gather, unsigned long iova, in io_pgtable_tlb_add_page() argument [all …]
|
| /linux-6.15/drivers/iommu/ |
| H A D | iova.c | 234 static void free_iova_mem(struct iova *iova) in free_iova_mem() argument 283 struct iova *iova = to_iova(node); in private_find_iova() local 313 struct iova *iova; in find_iova() local 352 struct iova *iova; in free_iova() local 448 struct iova *iova, *tmp; in put_iova_domain() local 462 struct iova *iova = to_iova(node); in __is_range_overlap() local 472 struct iova *iova; in alloc_and_init_iova() local 487 struct iova *iova; in __insert_new_range() local 490 if (iova) in __insert_new_range() 497 __adjust_overlap_range(struct iova *iova, in __adjust_overlap_range() argument [all …]
|
| H A D | io-pgtable-dart.c | 119 unsigned long iova, phys_addr_t paddr, in dart_init_pte() argument 190 int tbl = dart_get_table(data, iova); in dart_get_l2() 196 ptep += dart_get_l1_index(data, iova); in dart_get_l2() 251 tbl = dart_get_table(data, iova); in dart_map_pages() 254 ptep += dart_get_l1_index(data, iova); in dart_map_pages() 304 ptep = dart_get_l2(data, iova); in dart_unmap_pages() 326 iova + i * pgsize, pgsize); in dart_unmap_pages() 336 unsigned long iova) in dart_iova_to_phys() argument 341 ptep = dart_get_l2(data, iova); in dart_iova_to_phys() 347 ptep += dart_get_l2_index(data, iova); in dart_iova_to_phys() [all …]
|
| H A D | io-pgtable-arm-v7s.c | 527 iova += pgsize; in arm_v7s_map_pages() 638 iova += pgsize; in arm_v7s_unmap_pages() 852 iova = 0; in arm_v7s_do_selftests() 855 if (ops->map_pages(ops, iova, iova, size, 1, in arm_v7s_do_selftests() 862 if (!ops->map_pages(ops, iova, iova + size, size, 1, in arm_v7s_do_selftests() 867 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_v7s_do_selftests() 870 iova += SZ_16M; in arm_v7s_do_selftests() 874 iova = 0; in arm_v7s_do_selftests() 885 if (ops->map_pages(ops, iova, iova, size, 1, IOMMU_WRITE, in arm_v7s_do_selftests() 889 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_v7s_do_selftests() [all …]
|
| H A D | sun50i-iommu.c | 302 unsigned long iova) in sun50i_iommu_zap_iova() argument 319 unsigned long iova) in sun50i_iommu_zap_ptw_cache() argument 341 sun50i_iommu_zap_iova(iommu, iova); in sun50i_iommu_zap_range() 625 &iova, &page_phys, &paddr, prot); in sun50i_iommu_map() 663 dma_addr_t iova) in sun50i_iommu_iova_to_phys() argument 681 sun50i_iova_get_page_offset(iova); in sun50i_iommu_iova_to_phys() 881 phys_addr_t iova; in sun50i_iommu_handle_pt_irq() local 887 iova = iommu_read(iommu, addr_reg); in sun50i_iommu_handle_pt_irq() 898 return iova; in sun50i_iommu_handle_pt_irq() 904 phys_addr_t iova; in sun50i_iommu_handle_perm_irq() local [all …]
|
| H A D | io-pgtable-arm.c | 744 .addr = iova, in arm_lpae_iova_to_phys() 772 .addr = iova, in arm_lpae_pgtable_walk() 859 .addr = iova, in arm_lpae_read_and_clear_dirty() 1355 iova = 0; in arm_lpae_run_tests() 1359 if (ops->map_pages(ops, iova, iova, size, 1, in arm_lpae_run_tests() 1366 if (!ops->map_pages(ops, iova, iova + size, size, 1, in arm_lpae_run_tests() 1371 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_lpae_run_tests() 1378 iova = 0; in arm_lpae_run_tests() 1389 if (ops->map_pages(ops, iova, iova, size, 1, in arm_lpae_run_tests() 1393 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_lpae_run_tests() [all …]
|
| /linux-6.15/drivers/fpga/ |
| H A D | dfl-afu-dma-region.c | 125 u64 iova, u64 size) in dma_region_check_iova() argument 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() 150 (unsigned long long)region->iova); in afu_dma_region_add() 164 if (region->iova < this->iova) in afu_dma_region_add() 166 else if (region->iova > this->iova) in afu_dma_region_add() 217 if (region->iova) in afu_dma_region_destroy() 262 if (iova < region->iova) in afu_dma_region_find() 264 else if (iova > region->iova) in afu_dma_region_find() [all …]
|
| /linux-6.15/drivers/iommu/iommufd/ |
| H A D | iova_bitmap.c | 36 unsigned long iova; member 115 unsigned long iova; member 131 unsigned long iova) in iova_bitmap_offset_to_index() 260 bitmap->iova = iova; in iova_bitmap_alloc() 262 mapped->iova = iova; in iova_bitmap_alloc() 347 (iova >= mapped->iova && in iova_bitmap_mapped_range() 348 (iova + length - 1) <= (mapped->iova + mapped->length - 1)); in iova_bitmap_mapped_range() 357 unsigned long iova) in iova_bitmap_advance_to() argument 361 index = iova_bitmap_offset_to_index(bitmap, iova - bitmap->iova); in iova_bitmap_advance_to() 421 cur_bit = ((iova - mapped->iova) >> in iova_bitmap_set() [all …]
|
| /linux-6.15/include/trace/events/ |
| H A D | iommu.h | 83 TP_ARGS(iova, paddr, size), 86 __field(u64, iova) 92 __entry->iova = iova; 98 __entry->iova, __entry->iova + __entry->size, __entry->paddr, 110 __field(u64, iova) 116 __entry->iova = iova; 122 __entry->iova, __entry->iova + __entry->size, 131 TP_ARGS(dev, iova, flags), 136 __field(u64, iova) 143 __entry->iova = iova; [all …]
|
| /linux-6.15/drivers/gpu/drm/ci/xfails/ |
| H A D | msm-sm8350-hdk-skips.txt | 23 # [ 200.895243] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=PERMISS… 24 # [ 200.906885] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… 25 # [ 200.917625] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… 26 # [ 200.928353] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… 27 # [ 200.939084] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… 28 # [ 200.949815] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… 30 # [ 200.960467] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… 31 # [ 200.960500] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… 32 # [ 200.995966] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… 33 # [ 201.006702] *** gpu fault: ttbr0=00000001160d6000 iova=0001000000001000 dir=WRITE type=UNKNOWN… [all …]
|
| /linux-6.15/drivers/staging/media/ipu3/ |
| H A D | ipu3-dmamap.c | 102 struct iova *iova; in imgu_dmamap_alloc() local 109 if (!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 155 iova = find_iova(&imgu->iova_domain, in imgu_dmamap_unmap() 157 if (WARN_ON(!iova)) in imgu_dmamap_unmap() 163 __free_iova(&imgu->iova_domain, iova); in imgu_dmamap_unmap() 189 struct iova *iova; in imgu_dmamap_map_sg() local 209 if (!iova) in imgu_dmamap_map_sg() 213 iova->pfn_lo, iova->pfn_hi); in imgu_dmamap_map_sg() [all …]
|
| H A D | ipu3-mmu.c | 157 iova >>= IPU3_PAGE_SHIFT; in address_to_pte_idx() 160 *l2pt_idx = iova & IPU3_L2PT_MASK; in address_to_pte_idx() 162 iova >>= IPU3_L2PT_SHIFT; in address_to_pte_idx() 165 *l1pt_idx = iova & IPU3_L1PT_MASK; in address_to_pte_idx() 264 iova, &paddr, size); in imgu_mmu_map() 269 iova, &paddr, size); in imgu_mmu_map() 278 iova += IPU3_PAGE_SIZE; in imgu_mmu_map() 333 imgu_mmu_unmap(info, iova, mapped); in imgu_mmu_map_sg() 392 iova, size); in imgu_mmu_unmap() 408 iova, unmapped_page); in imgu_mmu_unmap() [all …]
|
| /linux-6.15/drivers/media/pci/intel/ipu6/ |
| H A D | ipu6-dma.c | 163 struct iova *iova; in ipu6_dma_alloc() local 176 if (!iova) in ipu6_dma_alloc() 184 size, iova->pfn_lo, iova->pfn_hi); in ipu6_dma_alloc() 185 for (i = 0; iova->pfn_lo + i <= iova->pfn_hi; i++) { in ipu6_dma_alloc() 255 if (WARN_ON(!iova)) in ipu6_dma_free() 336 struct iova *iova = find_iova(&mmu->dmap->iovad, in ipu6_dma_unmap_sg() local 345 if (WARN_ON(!iova)) in ipu6_dma_unmap_sg() 365 iova->pfn_lo, iova->pfn_hi); in ipu6_dma_unmap_sg() 381 struct iova *iova; in ipu6_dma_map_sg() local 402 if (!iova) in ipu6_dma_map_sg() [all …]
|
| H A D | ipu6-mmu.c | 108 l1_idx, iova, iova + ISP_PAGE_SIZE, &l2_phys); in page_table_dump() 271 l1_idx, iova); in l2_unmap() 276 iova, l1_idx); in l2_unmap() 291 iova += ISP_PAGE_SIZE; in l2_unmap() 327 l1_idx, (u32)iova); in l2_map() 417 struct iova *iova; in allocate_trash_buffer() local 426 if (!iova) { in allocate_trash_buffer() 637 dma_addr_t iova) in ipu6_mmu_iova_to_phys() argument 700 iova, &paddr, size); in ipu6_mmu_map() 709 struct iova *iova; in ipu6_mmu_destroy() local [all …]
|
| /linux-6.15/drivers/vfio/ |
| H A D | vfio_iommu_type1.c | 330 if (iova < vpfn->iova) in vfio_find_vpfn() 332 else if (iova > vpfn->iova) in vfio_find_vpfn() 351 if (new->iova < vpfn->iova) in vfio_link_pfn() 375 vpfn->iova = iova; in vfio_add_to_pfn_list() 1010 entry->iova = *iova; in unmap_unpin_fast() 1054 dma_addr_t iova = dma->iova, end = dma->iova + dma->size; in vfio_unmap_unpin() local 1234 if (dma->iova < iova) in vfio_iova_dirty_bitmap() 1474 dma_addr_t iova = dma->iova; in vfio_pin_map_dma() local 1650 dma->iova = iova; in vfio_dma_do_map() 1714 iova = dma->iova; in vfio_iommu_replay() [all …]
|
| /linux-6.15/drivers/infiniband/sw/rxe/ |
| H A D | rxe_odp.c | 80 u64 iova, int access_flags, struct rxe_mr *mr) in rxe_odp_mr_init_user() argument 91 if (iova != 0) in rxe_odp_mr_init_user() 112 mr->ibmr.iova = iova; in rxe_odp_mr_init_user() 128 u64 iova, int length, u32 perm) in rxe_check_pagefault() argument 134 addr = iova & (~(BIT(umem_odp->page_shift) - 1)); in rxe_check_pagefault() 137 while (addr < iova + length) { in rxe_check_pagefault() 171 err = rxe_odp_do_pagefault_and_lock(mr, iova, length, in rxe_odp_map_range_and_lock() 194 offset = iova & (BIT(umem_odp->page_shift) - 1); in __rxe_odp_mr_copy() 251 err = __rxe_odp_mr_copy(mr, iova, addr, length, dir); in rxe_odp_mr_copy() 274 err = mr_check_range(mr, iova, sizeof(value)); in rxe_odp_do_atomic_op() [all …]
|
| H A D | rxe_mr.c | 35 if (iova < mr->ibmr.iova || in mr_check_range() 36 iova + length > mr->ibmr.iova + mr->ibmr.length) { in mr_check_range() 77 return (iova >> mr->page_shift) - (mr->ibmr.iova >> mr->page_shift); in rxe_mr_iova_to_index() 82 return iova & (mr_page_size(mr) - 1); in rxe_mr_iova_to_page_offset() 348 u64 iova; in copy_data() local 400 iova = sge->addr + offset; in copy_data() 464 iova += bytes; in rxe_flush_pmem_iova() 488 page_offset = iova & (PAGE_SIZE - 1); in rxe_mr_do_atomic_op() 489 page = ib_virt_dma_to_page(iova); in rxe_mr_do_atomic_op() 550 page = ib_virt_dma_to_page(iova); in rxe_mr_do_atomic_write() [all …]
|
| /linux-6.15/drivers/gpu/drm/msm/ |
| H A D | msm_iommu.c | 37 unsigned long iova, phys_addr_t paddr, in calc_pgsize() argument 43 unsigned long addr_merge = paddr | iova; in calc_pgsize() 73 if ((iova ^ paddr) & (pgsize_next - 1)) in calc_pgsize() 100 pgsize = calc_pgsize(pagetable, iova, iova, size, &count); in msm_iommu_pagetable_unmap() 106 iova += unmapped; in msm_iommu_pagetable_unmap() 121 u64 addr = iova; in msm_iommu_pagetable_map() 145 msm_iommu_pagetable_unmap(mmu, iova, addr - iova); in msm_iommu_pagetable_map() 401 if (iova & BIT_ULL(48)) in msm_iommu_map() 402 iova |= GENMASK_ULL(63, 49); in msm_iommu_map() 414 if (iova & BIT_ULL(48)) in msm_iommu_unmap() [all …]
|
| /linux-6.15/drivers/vdpa/vdpa_user/ |
| H A D | iova_domain.c | 109 while (iova <= last) { in vduse_domain_map_bounce_page() 118 iova += PAGE_SIZE; in vduse_domain_map_bounce_page() 129 while (iova <= last) { in vduse_domain_unmap_bounce_page() 132 iova += PAGE_SIZE; in vduse_domain_unmap_bounce_page() 189 iova += sz; in vduse_domain_bounce() 409 if (!iova) in vduse_domain_map_page() 425 return iova; in vduse_domain_map_page() 457 if (!iova || !orig) in vduse_domain_alloc_coherent() 461 if (vduse_iotlb_add_range(domain, (u64)iova, (u64)iova + size - 1, in vduse_domain_alloc_coherent() 469 *dma_addr = iova; in vduse_domain_alloc_coherent() [all …]
|
| /linux-6.15/drivers/iommu/amd/ |
| H A D | io_pgtable_v2.c | 139 pte = &pgd[PM_LEVEL_INDEX(level, iova)]; in v2_alloc_pte() 140 iova = PAGE_SIZE_ALIGN(iova, PAGE_SIZE); in v2_alloc_pte() 171 pte = &pte[PM_LEVEL_INDEX(level, iova)]; in v2_alloc_pte() 212 pte = &pte[PM_LEVEL_INDEX(level - 1, iova)]; in fetch_pte() 241 unsigned long o_iova = iova; in iommu_v2_map_pages() 255 iova, map_size, gfp, &updated); in iommu_v2_map_pages() 263 iova += map_size; in iommu_v2_map_pages() 285 unsigned long iova, in iommu_v2_unmap_pages() argument 300 pte = fetch_pte(pgtable, iova, &unmap_size); in iommu_v2_unmap_pages() 306 iova = (iova & ~(unmap_size - 1)) + unmap_size; in iommu_v2_unmap_pages() [all …]
|
| /linux-6.15/tools/testing/selftests/iommu/ |
| H A D | iommufd_fail_nth.c | 243 __u64 iova; in TEST_FAIL_NTH() local 313 __u64 iova; in TEST_FAIL_NTH() local 349 __u64 iova; in TEST_FAIL_NTH() local 386 __u64 iova; in TEST_FAIL_NTH() local 431 __u64 iova; in TEST_FAIL_NTH() local 458 .access_rw = { .iova = iova, in TEST_FAIL_NTH() 489 .access_rw = { .iova = iova, in TEST_FAIL_NTH() 510 __u64 iova; in TEST_FAIL_NTH() local 538 .access_pages = { .iova = iova, in TEST_FAIL_NTH() 566 __u64 iova; in TEST_FAIL_NTH() local [all …]
|
| /linux-6.15/drivers/gpu/drm/etnaviv/ |
| H A D | etnaviv_mmu.c | 17 unsigned long iova, size_t size) in etnaviv_context_unmap() argument 28 iova += unmapped_page; in etnaviv_context_unmap() 37 unsigned long orig_iova = iova; in etnaviv_context_map() 48 iova += pgsize; in etnaviv_context_map() 65 unsigned int da = iova; in etnaviv_iommu_map() 82 iova, &pa, bytes); in etnaviv_iommu_map() 100 etnaviv_context_unmap(context, iova, da - iova); in etnaviv_iommu_map() 279 u32 iova; in etnaviv_iommu_map_gem() local 283 mapping->iova = iova; in etnaviv_iommu_map_gem() 300 mapping->iova = node->start; in etnaviv_iommu_map_gem() [all …]
|