Lines Matching refs:iova
369 unsigned long iova, phys_addr_t paddr, int prot, in arm_v7s_init_pte() argument
385 tblp = ptep - ARM_V7S_LVL_IDX(iova, lvl); in arm_v7s_init_pte()
386 if (WARN_ON(__arm_v7s_unmap(data, iova + i * sz, in arm_v7s_init_pte()
429 static int __arm_v7s_map(struct arm_v7s_io_pgtable *data, unsigned long iova, in __arm_v7s_map() argument
438 ptep += ARM_V7S_LVL_IDX(iova, lvl); in __arm_v7s_map()
442 return arm_v7s_init_pte(data, iova, paddr, prot, in __arm_v7s_map()
473 return __arm_v7s_map(data, iova, paddr, size, prot, lvl + 1, cptep); in __arm_v7s_map()
476 static int arm_v7s_map(struct io_pgtable_ops *ops, unsigned long iova, in arm_v7s_map() argument
487 if (WARN_ON(upper_32_bits(iova) || upper_32_bits(paddr))) in arm_v7s_map()
490 ret = __arm_v7s_map(data, iova, paddr, size, prot, 1, data->pgd); in arm_v7s_map()
496 io_pgtable_tlb_add_flush(iop, iova, size, in arm_v7s_map()
523 unsigned long iova, int idx, int lvl, in arm_v7s_split_cont() argument
544 io_pgtable_tlb_add_flush(iop, iova, size, size, true); in arm_v7s_split_cont()
550 unsigned long iova, size_t size, in arm_v7s_split_blk_unmap() argument
564 unmap_idx = ARM_V7S_LVL_IDX(iova, 2); in arm_v7s_split_blk_unmap()
586 return __arm_v7s_unmap(data, iova, size, 2, tablep); in arm_v7s_split_blk_unmap()
589 io_pgtable_tlb_add_flush(&data->iop, iova, size, size, true); in arm_v7s_split_blk_unmap()
594 unsigned long iova, size_t size, int lvl, in __arm_v7s_unmap() argument
605 idx = ARM_V7S_LVL_IDX(iova, lvl); in __arm_v7s_unmap()
627 pte[0] = arm_v7s_split_cont(data, iova, idx, lvl, ptep); in __arm_v7s_unmap()
640 io_pgtable_tlb_add_flush(iop, iova, blk_size, in __arm_v7s_unmap()
646 io_pgtable_tlb_add_flush(iop, iova, blk_size, in __arm_v7s_unmap()
649 iova += blk_size; in __arm_v7s_unmap()
657 return arm_v7s_split_blk_unmap(data, iova, size, pte[0], ptep); in __arm_v7s_unmap()
662 return __arm_v7s_unmap(data, iova, size, lvl + 1, ptep); in __arm_v7s_unmap()
665 static size_t arm_v7s_unmap(struct io_pgtable_ops *ops, unsigned long iova, in arm_v7s_unmap() argument
670 if (WARN_ON(upper_32_bits(iova))) in arm_v7s_unmap()
673 return __arm_v7s_unmap(data, iova, size, 1, data->pgd); in arm_v7s_unmap()
677 unsigned long iova) in arm_v7s_iova_to_phys() argument
685 ptep += ARM_V7S_LVL_IDX(iova, ++lvl); in arm_v7s_iova_to_phys()
696 return (pte & mask) | (iova & ~mask); in arm_v7s_iova_to_phys()
802 static void dummy_tlb_add_flush(unsigned long iova, size_t size, in dummy_tlb_add_flush() argument
836 unsigned int iova, size, iova_start; in arm_v7s_do_selftests() local
865 iova = 0; in arm_v7s_do_selftests()
868 if (ops->map(ops, iova, iova, size, IOMMU_READ | in arm_v7s_do_selftests()
875 if (!ops->map(ops, iova, iova + size, size, in arm_v7s_do_selftests()
879 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_v7s_do_selftests()
882 iova += SZ_16M; in arm_v7s_do_selftests()
905 iova = 0; in arm_v7s_do_selftests()
909 if (ops->unmap(ops, iova, size) != size) in arm_v7s_do_selftests()
912 if (ops->iova_to_phys(ops, iova + 42)) in arm_v7s_do_selftests()
916 if (ops->map(ops, iova, iova, size, IOMMU_WRITE)) in arm_v7s_do_selftests()
919 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_v7s_do_selftests()
922 iova += SZ_16M; in arm_v7s_do_selftests()