Lines Matching refs:iova
432 unsigned long iova, phys_addr_t paddr, int prot,
448 tblp = ptep - ARM_V7S_LVL_IDX(iova, lvl, cfg);
449 if (WARN_ON(__arm_v7s_unmap(data, NULL, iova + i * sz,
497 static int __arm_v7s_map(struct arm_v7s_io_pgtable *data, unsigned long iova,
506 ptep += ARM_V7S_LVL_IDX(iova, lvl, cfg);
510 return arm_v7s_init_pte(data, iova, paddr, prot,
541 return __arm_v7s_map(data, iova, paddr, size, prot, lvl + 1, cptep, gfp);
544 static int arm_v7s_map_pages(struct io_pgtable_ops *ops, unsigned long iova,
551 if (WARN_ON(iova >= (1ULL << data->iop.cfg.ias) ||
560 ret = __arm_v7s_map(data, iova, paddr, pgsize, prot, 1, data->pgd,
565 iova += pgsize;
571 * a chance for anything to kick off a table walk for the new iova.
596 unsigned long iova, int idx, int lvl,
617 io_pgtable_tlb_flush_walk(iop, iova, size, size);
623 unsigned long iova, size_t size,
637 unmap_idx = ARM_V7S_LVL_IDX(iova, 2, cfg);
659 return __arm_v7s_unmap(data, gather, iova, size, 2, tablep);
662 io_pgtable_tlb_add_page(&data->iop, gather, iova, size);
668 unsigned long iova, size_t size, int lvl,
679 idx = ARM_V7S_LVL_IDX(iova, lvl, &iop->cfg);
701 pte[0] = arm_v7s_split_cont(data, iova, idx, lvl, ptep);
714 io_pgtable_tlb_flush_walk(iop, iova, blk_size,
719 io_pgtable_tlb_add_page(iop, gather, iova, blk_size);
721 iova += blk_size;
729 return arm_v7s_split_blk_unmap(data, gather, iova, size, pte[0],
735 return __arm_v7s_unmap(data, gather, iova, size, lvl + 1, ptep);
738 static size_t arm_v7s_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova,
745 if (WARN_ON(iova >= (1ULL << data->iop.cfg.ias)))
749 ret = __arm_v7s_unmap(data, gather, iova, pgsize, 1, data->pgd);
754 iova += pgsize;
761 unsigned long iova)
769 ptep += ARM_V7S_LVL_IDX(iova, ++lvl, &data->iop.cfg);
780 return iopte_to_paddr(pte, lvl, &data->iop.cfg) | (iova & ~mask);
903 static void __init dummy_tlb_flush(unsigned long iova, size_t size,
911 unsigned long iova, size_t granule,
914 dummy_tlb_flush(iova, granule, granule, cookie);
940 unsigned int iova, size, iova_start;
970 iova = 0;
973 if (ops->map_pages(ops, iova, iova, size, 1,
980 if (!ops->map_pages(ops, iova, iova + size, size, 1,
985 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42))
988 iova += SZ_16M;
1012 iova = 0;
1016 if (ops->unmap_pages(ops, iova, size, 1, NULL) != size)
1019 if (ops->iova_to_phys(ops, iova + 42))
1023 if (ops->map_pages(ops, iova, iova, size, 1, IOMMU_WRITE,
1027 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42))
1030 iova += SZ_16M;