Lines Matching refs:iova

419 			    unsigned long iova, phys_addr_t paddr, int prot,  in arm_v7s_init_pte()  argument
435 tblp = ptep - ARM_V7S_LVL_IDX(iova, lvl, cfg); in arm_v7s_init_pte()
436 if (WARN_ON(__arm_v7s_unmap(data, NULL, iova + i * sz, in arm_v7s_init_pte()
479 static int __arm_v7s_map(struct arm_v7s_io_pgtable *data, unsigned long iova, in __arm_v7s_map() argument
488 ptep += ARM_V7S_LVL_IDX(iova, lvl, cfg); in __arm_v7s_map()
492 return arm_v7s_init_pte(data, iova, paddr, prot, in __arm_v7s_map()
523 return __arm_v7s_map(data, iova, paddr, size, prot, lvl + 1, cptep, gfp); in __arm_v7s_map()
526 static int arm_v7s_map_pages(struct io_pgtable_ops *ops, unsigned long iova, in arm_v7s_map_pages() argument
537 if (WARN_ON(iova >= (1ULL << data->iop.cfg.ias) || in arm_v7s_map_pages()
542 ret = __arm_v7s_map(data, iova, paddr, pgsize, prot, 1, data->pgd, in arm_v7s_map_pages()
547 iova += pgsize; in arm_v7s_map_pages()
561 static int arm_v7s_map(struct io_pgtable_ops *ops, unsigned long iova, in arm_v7s_map() argument
564 return arm_v7s_map_pages(ops, iova, paddr, size, 1, prot, gfp, NULL); in arm_v7s_map()
585 unsigned long iova, int idx, int lvl, in arm_v7s_split_cont() argument
606 io_pgtable_tlb_flush_walk(iop, iova, size, size); in arm_v7s_split_cont()
612 unsigned long iova, size_t size, in arm_v7s_split_blk_unmap() argument
626 unmap_idx = ARM_V7S_LVL_IDX(iova, 2, cfg); in arm_v7s_split_blk_unmap()
648 return __arm_v7s_unmap(data, gather, iova, size, 2, tablep); in arm_v7s_split_blk_unmap()
651 io_pgtable_tlb_add_page(&data->iop, gather, iova, size); in arm_v7s_split_blk_unmap()
657 unsigned long iova, size_t size, int lvl, in __arm_v7s_unmap() argument
668 idx = ARM_V7S_LVL_IDX(iova, lvl, &iop->cfg); in __arm_v7s_unmap()
690 pte[0] = arm_v7s_split_cont(data, iova, idx, lvl, ptep); in __arm_v7s_unmap()
703 io_pgtable_tlb_flush_walk(iop, iova, blk_size, in __arm_v7s_unmap()
715 io_pgtable_tlb_add_page(iop, gather, iova, blk_size); in __arm_v7s_unmap()
717 iova += blk_size; in __arm_v7s_unmap()
725 return arm_v7s_split_blk_unmap(data, gather, iova, size, pte[0], in __arm_v7s_unmap()
731 return __arm_v7s_unmap(data, gather, iova, size, lvl + 1, ptep); in __arm_v7s_unmap()
734 static size_t arm_v7s_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova, in arm_v7s_unmap_pages() argument
741 if (WARN_ON(iova >= (1ULL << data->iop.cfg.ias))) in arm_v7s_unmap_pages()
745 ret = __arm_v7s_unmap(data, gather, iova, pgsize, 1, data->pgd); in arm_v7s_unmap_pages()
750 iova += pgsize; in arm_v7s_unmap_pages()
756 static size_t arm_v7s_unmap(struct io_pgtable_ops *ops, unsigned long iova, in arm_v7s_unmap() argument
759 return arm_v7s_unmap_pages(ops, iova, size, 1, gather); in arm_v7s_unmap()
763 unsigned long iova) in arm_v7s_iova_to_phys() argument
771 ptep += ARM_V7S_LVL_IDX(iova, ++lvl, &data->iop.cfg); in arm_v7s_iova_to_phys()
782 return iopte_to_paddr(pte, lvl, &data->iop.cfg) | (iova & ~mask); in arm_v7s_iova_to_phys()
889 static void __init dummy_tlb_flush(unsigned long iova, size_t size, in dummy_tlb_flush() argument
897 unsigned long iova, size_t granule, in dummy_tlb_add_page() argument
900 dummy_tlb_flush(iova, granule, granule, cookie); in dummy_tlb_add_page()
926 unsigned int iova, size, iova_start; in arm_v7s_do_selftests() local
955 iova = 0; in arm_v7s_do_selftests()
958 if (ops->map(ops, iova, iova, size, IOMMU_READ | in arm_v7s_do_selftests()
965 if (!ops->map(ops, iova, iova + size, size, in arm_v7s_do_selftests()
969 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_v7s_do_selftests()
972 iova += SZ_16M; in arm_v7s_do_selftests()
995 iova = 0; in arm_v7s_do_selftests()
999 if (ops->unmap(ops, iova, size, NULL) != size) in arm_v7s_do_selftests()
1002 if (ops->iova_to_phys(ops, iova + 42)) in arm_v7s_do_selftests()
1006 if (ops->map(ops, iova, iova, size, IOMMU_WRITE, GFP_KERNEL)) in arm_v7s_do_selftests()
1009 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_v7s_do_selftests()
1012 iova += SZ_16M; in arm_v7s_do_selftests()