/kernel/linux/linux-6.6/drivers/iommu/ |
H A D | sun50i-iommu.c | 165 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...] |
H A D | exynos-iommu.c | 97 #define section_offs(iova) (iova & (SECT_SIZE - 1)) 99 #define lpage_offs(iova) (iova & (LPAGE_SIZE - 1)) 101 #define spage_offs(iova) (iova & (SPAGE_SIZE - 1)) 106 static u32 lv1ent_offset(sysmmu_iova_t iova) in lv1ent_offset() argument 108 return iova >> SECT_ORDER; in lv1ent_offset() 111 static u32 lv2ent_offset(sysmmu_iova_t iova) in lv2ent_offset() argument 113 return (iova >> SPAGE_ORDE in lv2ent_offset() 177 section_entry(sysmmu_pte_t *pgtable, sysmmu_iova_t iova) section_entry() argument 182 page_entry(sysmmu_pte_t *sent, sysmmu_iova_t iova) page_entry() argument 450 __sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data, sysmmu_iova_t iova, unsigned int num_inv) __sysmmu_tlb_invalidate_entry() argument 668 sysmmu_tlb_invalidate_flpdcache(struct sysmmu_drvdata *data, sysmmu_iova_t iova) sysmmu_tlb_invalidate_flpdcache() argument 688 sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data, sysmmu_iova_t iova, size_t size) sysmmu_tlb_invalidate_entry() argument 1064 alloc_lv2entry(struct exynos_iommu_domain *domain, sysmmu_pte_t *sent, sysmmu_iova_t iova, short *pgcounter) alloc_lv2entry() argument 1122 lv1set_section(struct exynos_iommu_domain *domain, sysmmu_pte_t *sent, sysmmu_iova_t iova, phys_addr_t paddr, int prot, short *pgcnt) lv1set_section() argument 1226 sysmmu_iova_t iova = (sysmmu_iova_t)l_iova; exynos_iommu_map() local 1262 exynos_iommu_tlb_invalidate_entry(struct exynos_iommu_domain *domain, sysmmu_iova_t iova, size_t size) exynos_iommu_tlb_invalidate_entry() argument 1281 sysmmu_iova_t iova = (sysmmu_iova_t)l_iova; exynos_iommu_unmap() local 1356 exynos_iommu_iova_to_phys(struct iommu_domain *iommu_domain, dma_addr_t iova) exynos_iommu_iova_to_phys() argument [all...] |
H A D | io-pgtable-dart.c | 124 unsigned long iova, phys_addr_t paddr, in dart_init_pte() 173 static int dart_get_table(struct dart_io_pgtable *data, unsigned long iova) in dart_get_table() argument 175 return (iova >> (3 * data->bits_per_level + ilog2(sizeof(dart_iopte)))) & in dart_get_table() 179 static int dart_get_l1_index(struct dart_io_pgtable *data, unsigned long iova) in dart_get_l1_index() argument 182 return (iova >> (2 * data->bits_per_level + ilog2(sizeof(dart_iopte)))) & in dart_get_l1_index() 186 static int dart_get_l2_index(struct dart_io_pgtable *data, unsigned long iova) in dart_get_l2_index() argument 189 return (iova >> (data->bits_per_level + ilog2(sizeof(dart_iopte)))) & in dart_get_l2_index() 193 static dart_iopte *dart_get_l2(struct dart_io_pgtable *data, unsigned long iova) in dart_get_l2() argument 196 int tbl = dart_get_table(data, iova); in dart_get_l2() 202 ptep += dart_get_l1_index(data, iova); in dart_get_l2() 123 dart_init_pte(struct dart_io_pgtable *data, unsigned long iova, phys_addr_t paddr, dart_iopte prot, int num_entries, dart_iopte *ptep) dart_init_pte() argument 236 dart_map_pages(struct io_pgtable_ops *ops, unsigned long iova, phys_addr_t paddr, size_t pgsize, size_t pgcount, int iommu_prot, gfp_t gfp, size_t *mapped) dart_map_pages() argument 298 dart_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova, size_t pgsize, size_t pgcount, struct iommu_iotlb_gather *gather) dart_unmap_pages() argument 341 dart_iova_to_phys(struct io_pgtable_ops *ops, unsigned long iova) dart_iova_to_phys() argument [all...] |
H A D | io-pgtable-arm.c | 255 unsigned long iova, size_t size, size_t pgcount, 280 unsigned long iova, phys_addr_t paddr, in arm_lpae_init_pte() 299 tblp = ptep - ARM_LPAE_LVL_IDX(iova, lvl, data); in arm_lpae_init_pte() 300 if (__arm_lpae_unmap(data, NULL, iova + i * sz, sz, 1, in arm_lpae_init_pte() 343 static int __arm_lpae_map(struct arm_lpae_io_pgtable *data, unsigned long iova, in __arm_lpae_map() argument 355 map_idx_start = ARM_LPAE_LVL_IDX(iova, lvl, data); in __arm_lpae_map() 362 ret = arm_lpae_init_pte(data, iova, paddr, prot, lvl, num_entries, ptep); in __arm_lpae_map() 396 return __arm_lpae_map(data, iova, paddr, size, pgcount, prot, lvl + 1, in __arm_lpae_map() 464 static int arm_lpae_map_pages(struct io_pgtable_ops *ops, unsigned long iova, in arm_lpae_map_pages() argument 473 long iaext = (s64)iova >> cf in arm_lpae_map_pages() 279 arm_lpae_init_pte(struct arm_lpae_io_pgtable *data, unsigned long iova, phys_addr_t paddr, arm_lpae_iopte prot, int lvl, int num_entries, arm_lpae_iopte *ptep) arm_lpae_init_pte() argument 538 arm_lpae_split_blk_unmap(struct arm_lpae_io_pgtable *data, struct iommu_iotlb_gather *gather, unsigned long iova, size_t size, arm_lpae_iopte blk_pte, int lvl, arm_lpae_iopte *ptep, size_t pgcount) arm_lpae_split_blk_unmap() argument 598 __arm_lpae_unmap(struct arm_lpae_io_pgtable *data, struct iommu_iotlb_gather *gather, unsigned long iova, size_t size, size_t pgcount, int lvl, arm_lpae_iopte *ptep) __arm_lpae_unmap() argument 657 arm_lpae_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova, size_t pgsize, size_t pgcount, struct iommu_iotlb_gather *gather) arm_lpae_unmap_pages() argument 678 arm_lpae_iova_to_phys(struct io_pgtable_ops *ops, unsigned long iova) arm_lpae_iova_to_phys() argument 1116 dummy_tlb_flush(unsigned long iova, size_t size, size_t granule, void *cookie) dummy_tlb_flush() argument 1123 dummy_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) dummy_tlb_add_page() argument 1163 unsigned long iova; arm_lpae_run_tests() local [all...] |
H A D | rockchip-iommu.c | 304 * rk3288 iova (IOMMU Virtual Address) format 320 static u32 rk_iova_dte_index(dma_addr_t iova) in rk_iova_dte_index() argument 322 return (u32)(iova & RK_IOVA_DTE_MASK) >> RK_IOVA_DTE_SHIFT; in rk_iova_dte_index() 325 static u32 rk_iova_pte_index(dma_addr_t iova) in rk_iova_pte_index() argument 327 return (u32)(iova & RK_IOVA_PTE_MASK) >> RK_IOVA_PTE_SHIFT; in rk_iova_pte_index() 330 static u32 rk_iova_page_offset(dma_addr_t iova) in rk_iova_page_offset() argument 332 return (u32)(iova & RK_IOVA_PAGE_MASK) >> RK_IOVA_PAGE_SHIFT; in rk_iova_page_offset() 367 dma_addr_t iova; in rk_iommu_zap_lines() local 369 for (iova = iova_start; iova < iova_en in rk_iommu_zap_lines() 533 log_iova(struct rk_iommu *iommu, int index, dma_addr_t iova) log_iova() argument 585 dma_addr_t iova; rk_iommu_irq() local 649 rk_iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) rk_iommu_iova_to_phys() argument 677 rk_iommu_zap_iova(struct rk_iommu_domain *rk_domain, dma_addr_t iova, size_t size) rk_iommu_zap_iova() argument 706 rk_iommu_zap_iova_first_last(struct rk_iommu_domain *rk_domain, dma_addr_t iova, size_t size) rk_iommu_zap_iova_first_last() argument 715 rk_dte_get_page_table(struct rk_iommu_domain *rk_domain, dma_addr_t iova) rk_dte_get_page_table() argument 774 rk_iommu_map_iova(struct rk_iommu_domain *rk_domain, u32 *pte_addr, dma_addr_t pte_dma, dma_addr_t iova, phys_addr_t paddr, size_t size, int prot) rk_iommu_map_iova() argument 824 dma_addr_t pte_dma, iova = (dma_addr_t)_iova; rk_iommu_map() local 862 dma_addr_t pte_dma, iova = (dma_addr_t)_iova; rk_iommu_unmap() local [all...] |
/kernel/linux/linux-5.10/drivers/gpu/drm/etnaviv/ |
H A D | etnaviv_mmu.c | 17 unsigned long iova, size_t size) in etnaviv_context_unmap() 22 if (!IS_ALIGNED(iova | size, pgsize)) { in etnaviv_context_unmap() 23 pr_err("unaligned: iova 0x%lx size 0x%zx min_pagesz 0x%zx\n", in etnaviv_context_unmap() 24 iova, size, pgsize); in etnaviv_context_unmap() 29 unmapped_page = context->global->ops->unmap(context, iova, in etnaviv_context_unmap() 34 iova += unmapped_page; in etnaviv_context_unmap() 40 unsigned long iova, phys_addr_t paddr, in etnaviv_context_map() 43 unsigned long orig_iova = iova; in etnaviv_context_map() 48 if (!IS_ALIGNED(iova | paddr | size, pgsize)) { in etnaviv_context_map() 49 pr_err("unaligned: iova in etnaviv_context_map() 16 etnaviv_context_unmap(struct etnaviv_iommu_context *context, unsigned long iova, size_t size) etnaviv_context_unmap() argument 39 etnaviv_context_map(struct etnaviv_iommu_context *context, unsigned long iova, phys_addr_t paddr, size_t size, int prot) etnaviv_context_map() argument 72 etnaviv_iommu_map(struct etnaviv_iommu_context *context, u32 iova, struct sg_table *sgt, unsigned len, int prot) etnaviv_iommu_map() argument 102 etnaviv_iommu_unmap(struct etnaviv_iommu_context *context, u32 iova, struct sg_table *sgt, unsigned len) etnaviv_iommu_unmap() argument 239 u32 iova; etnaviv_iommu_map_gem() local [all...] |
/kernel/linux/linux-6.6/drivers/gpu/drm/etnaviv/ |
H A D | etnaviv_mmu.c | 17 unsigned long iova, size_t size) in etnaviv_context_unmap() 22 if (!IS_ALIGNED(iova | size, pgsize)) { in etnaviv_context_unmap() 23 pr_err("unaligned: iova 0x%lx size 0x%zx min_pagesz 0x%zx\n", in etnaviv_context_unmap() 24 iova, size, pgsize); in etnaviv_context_unmap() 29 unmapped_page = context->global->ops->unmap(context, iova, in etnaviv_context_unmap() 34 iova += unmapped_page; in etnaviv_context_unmap() 40 unsigned long iova, phys_addr_t paddr, in etnaviv_context_map() 43 unsigned long orig_iova = iova; in etnaviv_context_map() 48 if (!IS_ALIGNED(iova | paddr | size, pgsize)) { in etnaviv_context_map() 49 pr_err("unaligned: iova in etnaviv_context_map() 16 etnaviv_context_unmap(struct etnaviv_iommu_context *context, unsigned long iova, size_t size) etnaviv_context_unmap() argument 39 etnaviv_context_map(struct etnaviv_iommu_context *context, unsigned long iova, phys_addr_t paddr, size_t size, int prot) etnaviv_context_map() argument 72 etnaviv_iommu_map(struct etnaviv_iommu_context *context, u32 iova, struct sg_table *sgt, unsigned len, int prot) etnaviv_iommu_map() argument 104 etnaviv_iommu_unmap(struct etnaviv_iommu_context *context, u32 iova, struct sg_table *sgt, unsigned len) etnaviv_iommu_unmap() argument 293 u32 iova; etnaviv_iommu_map_gem() local [all...] |
/device/soc/rockchip/rk3588/kernel/include/trace/hooks/ |
H A D | iommu.h | 20 TP_PROTO(struct device *dev, dma_addr_t iova, size_t size), 21 TP_ARGS(dev, iova, size)); 26 TP_PROTO(struct device *dev, struct iova_domain *iovad, dma_addr_t iova, size_t size), 27 TP_ARGS(dev, iovad, iova, size)); 30 TP_PROTO(dma_addr_t iova, size_t size), 31 TP_ARGS(iova, size)); 34 TP_PROTO(struct iova_domain *iovad, dma_addr_t iova, size_t size), 35 TP_ARGS(iovad, iova, size));
|
/device/soc/rockchip/common/vendor/drivers/video/rockchip/mpp/hack/ |
H A D | mpp_rkvdec2_link_hack_rk3568.c | 191 u32 iova = fix->iova;
in rkvdec2_link_hack_data_setup() local 195 rkvdec2_3568_hack_link[0x48] = iova;
in rkvdec2_link_hack_data_setup() 197 rkvdec2_3568_hack_link[0x49] = iova + RKDEC_HACK_DATA_RLC_OFFSET;
in rkvdec2_link_hack_data_setup() 199 rkvdec2_3568_hack_link[0x4a] = iova + RKDEC_HACK_DATA_OUT_OFFSET;
in rkvdec2_link_hack_data_setup() 201 rkvdec2_3568_hack_link[0x4b] = iova + 0x80 * 0x6;
in rkvdec2_link_hack_data_setup() 203 rkvdec2_3568_hack_link[0x4c] = iova + 0x80 * 0x4;
in rkvdec2_link_hack_data_setup() 205 rkvdec2_3568_hack_link[0x59] = iova + RKDEC_HACK_DATA_PPS_OFFSET;
in rkvdec2_link_hack_data_setup() 207 rkvdec2_3568_hack_link[0x5b] = iova + RKDEC_HACK_DATA_RPS_OFFSET;
in rkvdec2_link_hack_data_setup() 209 rkvdec2_3568_hack_link[0x5c + i] = iova in rkvdec2_link_hack_data_setup() [all...] |
/device/soc/rockchip/rk3588/kernel/drivers/video/rockchip/mpp/ |
H A D | mpp_rkvdec2_link_hack_rk3568.c | 191 u32 iova = fix->iova; in rkvdec2_link_hack_data_setup() local 195 rkvdec2_3568_hack_link[72] = iova; in rkvdec2_link_hack_data_setup() 197 rkvdec2_3568_hack_link[73] = iova + RKDEC_HACK_DATA_RLC_OFFSET; in rkvdec2_link_hack_data_setup() 199 rkvdec2_3568_hack_link[74] = iova + RKDEC_HACK_DATA_OUT_OFFSET; in rkvdec2_link_hack_data_setup() 201 rkvdec2_3568_hack_link[75] = iova + 128 * 6; in rkvdec2_link_hack_data_setup() 203 rkvdec2_3568_hack_link[76] = iova + 128 * 4; in rkvdec2_link_hack_data_setup() 206 rkvdec2_3568_hack_link[89] = iova + RKDEC_HACK_DATA_PPS_OFFSET; in rkvdec2_link_hack_data_setup() 208 rkvdec2_3568_hack_link[91] = iova + RKDEC_HACK_DATA_RPS_OFFSET; in rkvdec2_link_hack_data_setup() 210 rkvdec2_3568_hack_link[92 + i] = iova in rkvdec2_link_hack_data_setup() [all...] |
/device/soc/rockchip/rk3588/kernel/drivers/video/rockchip/mpp/hack/ |
H A D | mpp_rkvdec2_link_hack_rk3568.c | 191 u32 iova = fix->iova; in rkvdec2_link_hack_data_setup() local 195 rkvdec2_3568_hack_link[72] = iova; in rkvdec2_link_hack_data_setup() 197 rkvdec2_3568_hack_link[73] = iova + RKDEC_HACK_DATA_RLC_OFFSET; in rkvdec2_link_hack_data_setup() 199 rkvdec2_3568_hack_link[74] = iova + RKDEC_HACK_DATA_OUT_OFFSET; in rkvdec2_link_hack_data_setup() 201 rkvdec2_3568_hack_link[75] = iova + 128 * 6; in rkvdec2_link_hack_data_setup() 203 rkvdec2_3568_hack_link[76] = iova + 128 * 4; in rkvdec2_link_hack_data_setup() 206 rkvdec2_3568_hack_link[89] = iova + RKDEC_HACK_DATA_PPS_OFFSET; in rkvdec2_link_hack_data_setup() 208 rkvdec2_3568_hack_link[91] = iova + RKDEC_HACK_DATA_RPS_OFFSET; in rkvdec2_link_hack_data_setup() 210 rkvdec2_3568_hack_link[92 + i] = iova in rkvdec2_link_hack_data_setup() [all...] |
/kernel/linux/linux-6.6/drivers/gpu/drm/msm/ |
H A D | msm_iommu.c | 37 unsigned long iova, phys_addr_t paddr, in calc_pgsize() 43 unsigned long addr_merge = paddr | iova; in calc_pgsize() 73 if ((iova ^ paddr) & (pgsize_next - 1)) in calc_pgsize() 91 static int msm_iommu_pagetable_unmap(struct msm_mmu *mmu, u64 iova, in msm_iommu_pagetable_unmap() argument 100 pgsize = calc_pgsize(pagetable, iova, iova, size, &count); in msm_iommu_pagetable_unmap() 102 unmapped = ops->unmap_pages(ops, iova, pgsize, count, NULL); in msm_iommu_pagetable_unmap() 106 iova += unmapped; in msm_iommu_pagetable_unmap() 115 static int msm_iommu_pagetable_map(struct msm_mmu *mmu, u64 iova, in msm_iommu_pagetable_map() argument 121 u64 addr = iova; in msm_iommu_pagetable_map() 36 calc_pgsize(struct msm_iommu_pagetable *pagetable, unsigned long iova, phys_addr_t paddr, size_t size, size_t *count) calc_pgsize() argument 219 msm_iommu_tlb_flush_walk(unsigned long iova, size_t size, size_t granule, void *cookie) msm_iommu_tlb_flush_walk() argument 235 msm_iommu_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) msm_iommu_tlb_add_page() argument 322 msm_fault_handler(struct iommu_domain *domain, struct device *dev, unsigned long iova, int flags, void *arg) msm_fault_handler() argument 361 msm_iommu_map(struct msm_mmu *mmu, uint64_t iova, struct sg_table *sgt, size_t len, int prot) msm_iommu_map() argument 377 msm_iommu_unmap(struct msm_mmu *mmu, uint64_t iova, size_t len) msm_iommu_unmap() argument [all...] |
/kernel/linux/linux-6.6/tools/testing/selftests/iommu/ |
H A D | iommufd_fail_nth.c | 234 __u64 iova; in TEST_FAIL_NTH() local 270 if (_test_ioctl_ioas_map(self->fd, ioas_id, buffer, BUFFER_SIZE, &iova, in TEST_FAIL_NTH() 282 .src_iova = iova, in TEST_FAIL_NTH() 290 if (_test_ioctl_ioas_unmap(self->fd, ioas_id, iova, BUFFER_SIZE, in TEST_FAIL_NTH() 294 _test_ioctl_ioas_unmap(self->fd, ioas_id, iova, BUFFER_SIZE, NULL); in TEST_FAIL_NTH() 304 __u64 iova; in TEST_FAIL_NTH() local 321 if (_test_ioctl_ioas_map(self->fd, ioas_id, buffer, 262144, &iova, in TEST_FAIL_NTH() 341 __u64 iova; in TEST_FAIL_NTH() local 362 if (_test_ioctl_ioas_map(self->fd, ioas_id, buffer, 262144, &iova, in TEST_FAIL_NTH() 386 __u64 iova; in TEST_FAIL_NTH() local 465 __u64 iova; TEST_FAIL_NTH() local 521 __u64 iova; TEST_FAIL_NTH() local 585 __u64 iova; TEST_FAIL_NTH() local [all...] |
H A D | iommufd.c | 635 .access_pages = { .iova = self->base_iova + PAGE_SIZE, in TEST_F() 669 .access_pages = { .iova = MOCK_APERTURE_START, in TEST_F() 676 .check_map = { .iova = MOCK_APERTURE_START, in TEST_F() 741 .access_pages = { .iova = MOCK_APERTURE_START, in TEST_F() 763 unsigned int access_id, uint64_t iova, in check_access_rw() 780 for (access_cmd.access_rw.iova = iova + PAGE_SIZE - 50; in check_access_rw() 781 access_cmd.access_rw.iova < iova + PAGE_SIZE + 50; in check_access_rw() 782 access_cmd.access_rw.iova in check_access_rw() 762 check_access_rw(struct __test_metadata *_metadata, int fd, unsigned int access_id, uint64_t iova, unsigned int def_flags) check_access_rw() argument 827 __u64 iova; TEST_F() local 841 __u64 iova; TEST_F() local 907 __u64 iova; TEST_F() local 967 __u64 iova; TEST_F() local 1034 uint64_t iova; TEST_F() local 1168 __u64 iova; TEST_F() local 1190 __u64 iova; TEST_F() local 1239 __u64 iova; TEST_F() local 1282 __u64 iova; TEST_F() local [all...] |
/kernel/linux/linux-5.10/drivers/gpu/drm/msm/ |
H A D | msm_iommu.c | 32 static int msm_iommu_pagetable_unmap(struct msm_mmu *mmu, u64 iova, in msm_iommu_pagetable_unmap() argument 41 unmapped += ops->unmap(ops, iova, 4096, NULL); in msm_iommu_pagetable_unmap() 42 iova += 4096; in msm_iommu_pagetable_unmap() 51 static int msm_iommu_pagetable_map(struct msm_mmu *mmu, u64 iova, in msm_iommu_pagetable_map() argument 58 u64 addr = iova; in msm_iommu_pagetable_map() 68 msm_iommu_pagetable_unmap(mmu, iova, mapped); in msm_iommu_pagetable_map() 129 static void msm_iommu_tlb_flush_walk(unsigned long iova, size_t size, in msm_iommu_tlb_flush_walk() argument 135 unsigned long iova, size_t granule, void *cookie) in msm_iommu_tlb_add_page() 217 unsigned long iova, int flags, void *arg) in msm_fault_handler() 221 return iommu->base.handler(iommu->base.arg, iova, flag in msm_fault_handler() 134 msm_iommu_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) msm_iommu_tlb_add_page() argument 216 msm_fault_handler(struct iommu_domain *domain, struct device *dev, unsigned long iova, int flags, void *arg) msm_fault_handler() argument 233 msm_iommu_map(struct msm_mmu *mmu, uint64_t iova, struct sg_table *sgt, size_t len, int prot) msm_iommu_map() argument 249 msm_iommu_unmap(struct msm_mmu *mmu, uint64_t iova, size_t len) msm_iommu_unmap() argument [all...] |
/kernel/linux/linux-5.10/drivers/staging/media/ipu3/ |
H A D | ipu3-mmu.c | 150 * @iova: IOVA to split. 154 static inline void address_to_pte_idx(unsigned long iova, u32 *l1pt_idx, in address_to_pte_idx() argument 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() 210 static int __imgu_mmu_map(struct imgu_mmu *mmu, unsigned long iova, in __imgu_mmu_map() argument 220 address_to_pte_idx(iova, &l1pt_idx, &l2pt_idx); in __imgu_mmu_map() 244 * @iova: the virtual address 251 int imgu_mmu_map(struct imgu_mmu_info *info, unsigned long iova, in imgu_mmu_map() argument 299 imgu_mmu_map_sg(struct imgu_mmu_info *info, unsigned long iova, struct scatterlist *sg, unsigned int nents) imgu_mmu_map_sg() argument 338 __imgu_mmu_unmap(struct imgu_mmu *mmu, unsigned long iova, size_t size) __imgu_mmu_unmap() argument 379 imgu_mmu_unmap(struct imgu_mmu_info *info, unsigned long iova, size_t size) imgu_mmu_unmap() argument [all...] |
/kernel/linux/linux-6.6/drivers/staging/media/ipu3/ |
H A D | ipu3-mmu.c | 150 * @iova: IOVA to split. 154 static inline void address_to_pte_idx(unsigned long iova, u32 *l1pt_idx, in address_to_pte_idx() argument 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() 210 static int __imgu_mmu_map(struct imgu_mmu *mmu, unsigned long iova, in __imgu_mmu_map() argument 220 address_to_pte_idx(iova, &l1pt_idx, &l2pt_idx); in __imgu_mmu_map() 244 * @iova: the virtual address 251 int imgu_mmu_map(struct imgu_mmu_info *info, unsigned long iova, in imgu_mmu_map() argument 299 imgu_mmu_map_sg(struct imgu_mmu_info *info, unsigned long iova, struct scatterlist *sg, unsigned int nents) imgu_mmu_map_sg() argument 338 __imgu_mmu_unmap(struct imgu_mmu *mmu, unsigned long iova, size_t size) __imgu_mmu_unmap() argument 379 imgu_mmu_unmap(struct imgu_mmu_info *info, unsigned long iova, size_t size) imgu_mmu_unmap() argument [all...] |
/third_party/mesa3d/src/freedreno/drm/virtio/ |
H A D | virtio_bo.c | 148 /* The shmem bo is allowed to have no iova, as it is only used for in virtio_bo_iova() 151 assert(bo->iova || (to_virtio_bo(bo)->blob_id == 0)); in virtio_bo_iova() 152 return bo->iova; in virtio_bo_iova() 163 * an iova is a convenient way to detect this case: in virtio_bo_set_name() 165 if (!bo->iova) in virtio_bo_set_name() 218 set_iova(struct fd_bo *bo, uint64_t iova) in set_iova() argument 223 .iova = iova, in set_iova() 234 /* Release iova by setting to zero: */ in virtio_bo_destroy() 235 if (bo->iova) { in virtio_bo_destroy() [all...] |
/kernel/linux/linux-5.10/drivers/staging/media/tegra-vde/ |
H A D | dmabuf-cache.c | 9 #include <linux/iova.h> 25 struct iova *iova; member 36 tegra_vde_iommu_unmap(entry->vde, entry->iova); in tegra_vde_release_entry() 70 struct iova *iova; in tegra_vde_dmabuf_cache_map() local 88 *addrp = iova_dma_addr(&vde->iova, entry->iova); in tegra_vde_dmabuf_cache_map() 122 err = tegra_vde_iommu_map(vde, sgt, &iova, dmabuf->size); in tegra_vde_dmabuf_cache_map() 126 *addrp = iova_dma_addr(&vde->iova, iov in tegra_vde_dmabuf_cache_map() [all...] |
H A D | vde.h | 13 #include <linux/iova.h> 48 struct iova_domain iova; member 49 struct iova *iova_resv_static_addresses; 50 struct iova *iova_resv_last_page; 59 struct iova **iovap, 61 void tegra_vde_iommu_unmap(struct tegra_vde *vde, struct iova *iova);
|
/kernel/linux/linux-6.6/drivers/media/platform/nvidia/tegra-vde/ |
H A D | dmabuf-cache.c | 9 #include <linux/iova.h> 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, iov in tegra_vde_dmabuf_cache_map() [all...] |
/kernel/linux/linux-5.10/drivers/iommu/ |
H A D | exynos-iommu.c | 99 #define section_offs(iova) (iova & (SECT_SIZE - 1)) 101 #define lpage_offs(iova) (iova & (LPAGE_SIZE - 1)) 103 #define spage_offs(iova) (iova & (SPAGE_SIZE - 1)) 108 static u32 lv1ent_offset(sysmmu_iova_t iova) in lv1ent_offset() argument 110 return iova >> SECT_ORDER; in lv1ent_offset() 113 static u32 lv2ent_offset(sysmmu_iova_t iova) in lv2ent_offset() argument 115 return (iova >> SPAGE_ORDE in lv2ent_offset() 183 section_entry(sysmmu_pte_t *pgtable, sysmmu_iova_t iova) section_entry() argument 188 page_entry(sysmmu_pte_t *sent, sysmmu_iova_t iova) page_entry() argument 315 __sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data, sysmmu_iova_t iova, unsigned int num_inv) __sysmmu_tlb_invalidate_entry() argument 514 sysmmu_tlb_invalidate_flpdcache(struct sysmmu_drvdata *data, sysmmu_iova_t iova) sysmmu_tlb_invalidate_flpdcache() argument 534 sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data, sysmmu_iova_t iova, size_t size) sysmmu_tlb_invalidate_entry() argument 922 alloc_lv2entry(struct exynos_iommu_domain *domain, sysmmu_pte_t *sent, sysmmu_iova_t iova, short *pgcounter) alloc_lv2entry() argument 980 lv1set_section(struct exynos_iommu_domain *domain, sysmmu_pte_t *sent, sysmmu_iova_t iova, phys_addr_t paddr, int prot, short *pgcnt) lv1set_section() argument 1084 sysmmu_iova_t iova = (sysmmu_iova_t)l_iova; exynos_iommu_map() local 1120 exynos_iommu_tlb_invalidate_entry(struct exynos_iommu_domain *domain, sysmmu_iova_t iova, size_t size) exynos_iommu_tlb_invalidate_entry() argument 1139 sysmmu_iova_t iova = (sysmmu_iova_t)l_iova; exynos_iommu_unmap() local 1214 exynos_iommu_iova_to_phys(struct iommu_domain *iommu_domain, dma_addr_t iova) exynos_iommu_iova_to_phys() argument [all...] |
H A D | io-pgtable-arm.c | 253 unsigned long iova, size_t size, int lvl, 273 unsigned long iova, phys_addr_t paddr, in arm_lpae_init_pte() 291 tblp = ptep - ARM_LPAE_LVL_IDX(iova, lvl, data); in arm_lpae_init_pte() 292 if (__arm_lpae_unmap(data, NULL, iova, sz, lvl, tblp) != sz) { in arm_lpae_init_pte() 334 static int __arm_lpae_map(struct arm_lpae_io_pgtable *data, unsigned long iova, in __arm_lpae_map() argument 344 ptep += ARM_LPAE_LVL_IDX(iova, lvl, data); in __arm_lpae_map() 348 return arm_lpae_init_pte(data, iova, paddr, prot, lvl, ptep); in __arm_lpae_map() 377 return __arm_lpae_map(data, iova, paddr, size, prot, lvl + 1, cptep, gfp); in __arm_lpae_map() 444 static int arm_lpae_map(struct io_pgtable_ops *ops, unsigned long iova, in arm_lpae_map() argument 452 long iaext = (s64)iova >> cf in arm_lpae_map() 272 arm_lpae_init_pte(struct arm_lpae_io_pgtable *data, unsigned long iova, phys_addr_t paddr, arm_lpae_iopte prot, int lvl, arm_lpae_iopte *ptep) arm_lpae_init_pte() argument 516 arm_lpae_split_blk_unmap(struct arm_lpae_io_pgtable *data, struct iommu_iotlb_gather *gather, unsigned long iova, size_t size, arm_lpae_iopte blk_pte, int lvl, arm_lpae_iopte *ptep) arm_lpae_split_blk_unmap() argument 570 __arm_lpae_unmap(struct arm_lpae_io_pgtable *data, struct iommu_iotlb_gather *gather, unsigned long iova, size_t size, int lvl, arm_lpae_iopte *ptep) __arm_lpae_unmap() argument 623 arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova, size_t size, struct iommu_iotlb_gather *gather) arm_lpae_unmap() argument 642 arm_lpae_iova_to_phys(struct io_pgtable_ops *ops, unsigned long iova) arm_lpae_iova_to_phys() argument 1075 dummy_tlb_flush(unsigned long iova, size_t size, size_t granule, void *cookie) dummy_tlb_flush() argument 1082 dummy_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) dummy_tlb_add_page() argument 1123 unsigned long iova; arm_lpae_run_tests() local [all...] |
H A D | rockchip-iommu.c | 244 * rk3288 iova (IOMMU Virtual Address) format 260 static u32 rk_iova_dte_index(dma_addr_t iova) in rk_iova_dte_index() argument 262 return (u32)(iova & RK_IOVA_DTE_MASK) >> RK_IOVA_DTE_SHIFT; in rk_iova_dte_index() 265 static u32 rk_iova_pte_index(dma_addr_t iova) in rk_iova_pte_index() argument 267 return (u32)(iova & RK_IOVA_PTE_MASK) >> RK_IOVA_PTE_SHIFT; in rk_iova_pte_index() 270 static u32 rk_iova_page_offset(dma_addr_t iova) in rk_iova_page_offset() argument 272 return (u32)(iova & RK_IOVA_PAGE_MASK) >> RK_IOVA_PAGE_SHIFT; in rk_iova_page_offset() 307 dma_addr_t iova; in rk_iommu_zap_lines() local 309 for (iova = iova_start; iova < iova_en in rk_iommu_zap_lines() 473 log_iova(struct rk_iommu *iommu, int index, dma_addr_t iova) log_iova() argument 525 dma_addr_t iova; rk_iommu_irq() local 589 rk_iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) rk_iommu_iova_to_phys() argument 617 rk_iommu_zap_iova(struct rk_iommu_domain *rk_domain, dma_addr_t iova, size_t size) rk_iommu_zap_iova() argument 646 rk_iommu_zap_iova_first_last(struct rk_iommu_domain *rk_domain, dma_addr_t iova, size_t size) rk_iommu_zap_iova_first_last() argument 655 rk_dte_get_page_table(struct rk_iommu_domain *rk_domain, dma_addr_t iova) rk_dte_get_page_table() argument 715 rk_iommu_map_iova(struct rk_iommu_domain *rk_domain, u32 *pte_addr, dma_addr_t pte_dma, dma_addr_t iova, phys_addr_t paddr, size_t size, int prot) rk_iommu_map_iova() argument 765 dma_addr_t pte_dma, iova = (dma_addr_t)_iova; rk_iommu_map() local 802 dma_addr_t pte_dma, iova = (dma_addr_t)_iova; rk_iommu_unmap() local [all...] |
/kernel/linux/linux-5.10/drivers/infiniband/sw/rxe/ |
H A D | rxe_mr.c | 27 int mem_check_range(struct rxe_mem *mem, u64 iova, size_t length) in mem_check_range() argument 35 if (iova < mem->iova || in mem_check_range() 37 iova > mem->iova + mem->length - length) in mem_check_range() 127 u64 length, u64 iova, int access, struct ib_udata *udata, in rxe_mem_init_user() 193 mem->iova = iova; in rxe_mem_init_user() 232 u64 iova, in lookup_iova() 237 size_t offset = iova in lookup_iova() 126 rxe_mem_init_user(struct rxe_pd *pd, u64 start, u64 length, u64 iova, int access, struct ib_udata *udata, struct rxe_mem *mem) rxe_mem_init_user() argument 230 lookup_iova( struct rxe_mem *mem, u64 iova, int *m_out, int *n_out, size_t *offset_out) lookup_iova() argument 270 iova_to_vaddr(struct rxe_mem *mem, u64 iova, int length) iova_to_vaddr() argument 311 rxe_mem_copy(struct rxe_mem *mem, u64 iova, void *addr, int length, enum copy_direction dir, u32 *crcp) rxe_mem_copy() argument 416 u64 iova; copy_data() local [all...] |