Lines Matching refs:iova

204 			    unsigned long iova, size_t size, int lvl,
208 unsigned long iova, phys_addr_t paddr, in arm_lpae_init_pte() argument
226 tblp = ptep - ARM_LPAE_LVL_IDX(iova, lvl, data); in arm_lpae_init_pte()
227 if (WARN_ON(__arm_lpae_unmap(data, iova, sz, lvl, tblp) != sz)) in arm_lpae_init_pte()
247 static int __arm_lpae_map(struct arm_lpae_io_pgtable *data, unsigned long iova, in __arm_lpae_map() argument
256 ptep += ARM_LPAE_LVL_IDX(iova, lvl, data); in __arm_lpae_map()
260 return arm_lpae_init_pte(data, iova, paddr, prot, lvl, ptep); in __arm_lpae_map()
286 return __arm_lpae_map(data, iova, paddr, size, prot, lvl + 1, cptep); in __arm_lpae_map()
322 static int arm_lpae_map(struct io_pgtable_ops *ops, unsigned long iova, in arm_lpae_map() argument
335 return __arm_lpae_map(data, iova, paddr, size, prot, lvl, ptep); in arm_lpae_map()
378 unsigned long iova, size_t size, in arm_lpae_split_blk_unmap() argument
388 blk_start = iova & ~(blk_size - 1); in arm_lpae_split_blk_unmap()
396 if (blk_start == iova) in arm_lpae_split_blk_unmap()
414 iova &= ~(blk_size - 1); in arm_lpae_split_blk_unmap()
415 tlb->tlb_add_flush(iova, blk_size, true, cookie); in arm_lpae_split_blk_unmap()
420 unsigned long iova, size_t size, int lvl, in __arm_lpae_unmap() argument
428 ptep += ARM_LPAE_LVL_IDX(iova, lvl, data); in __arm_lpae_unmap()
442 tlb->tlb_add_flush(iova, size, false, cookie); in __arm_lpae_unmap()
447 tlb->tlb_add_flush(iova, size, true, cookie); in __arm_lpae_unmap()
456 return arm_lpae_split_blk_unmap(data, iova, size, in __arm_lpae_unmap()
463 return __arm_lpae_unmap(data, iova, size, lvl + 1, ptep); in __arm_lpae_unmap()
466 static int arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova, in arm_lpae_unmap() argument
475 unmapped = __arm_lpae_unmap(data, iova, size, lvl, ptep); in arm_lpae_unmap()
483 unsigned long iova) in arm_lpae_iova_to_phys() argument
495 pte = *(ptep + ARM_LPAE_LVL_IDX(iova, lvl, data)); in arm_lpae_iova_to_phys()
513 iova &= ((1 << data->pg_shift) - 1); in arm_lpae_iova_to_phys()
514 return ((phys_addr_t)iopte_to_pfn(pte,data) << data->pg_shift) | iova; in arm_lpae_iova_to_phys()
825 static void dummy_tlb_add_flush(unsigned long iova, size_t size, bool leaf, in dummy_tlb_add_flush() argument
876 unsigned long iova; in arm_lpae_run_tests() local
906 iova = 0; in arm_lpae_run_tests()
911 if (ops->map(ops, iova, iova, size, IOMMU_READ | in arm_lpae_run_tests()
918 if (!ops->map(ops, iova, iova + size, size, in arm_lpae_run_tests()
922 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_lpae_run_tests()
925 iova += SZ_1G; in arm_lpae_run_tests()
943 iova = 0; in arm_lpae_run_tests()
948 if (ops->unmap(ops, iova, size) != size) in arm_lpae_run_tests()
951 if (ops->iova_to_phys(ops, iova + 42)) in arm_lpae_run_tests()
955 if (ops->map(ops, iova, iova, size, IOMMU_WRITE)) in arm_lpae_run_tests()
958 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_lpae_run_tests()
961 iova += SZ_1G; in arm_lpae_run_tests()