Lines Matching refs:iova
124 unsigned long iova, phys_addr_t paddr,
173 static int dart_get_table(struct dart_io_pgtable *data, unsigned long iova)
175 return (iova >> (3 * data->bits_per_level + ilog2(sizeof(dart_iopte)))) &
179 static int dart_get_l1_index(struct dart_io_pgtable *data, unsigned long iova)
182 return (iova >> (2 * data->bits_per_level + ilog2(sizeof(dart_iopte)))) &
186 static int dart_get_l2_index(struct dart_io_pgtable *data, unsigned long iova)
189 return (iova >> (data->bits_per_level + ilog2(sizeof(dart_iopte)))) &
193 static dart_iopte *dart_get_l2(struct dart_io_pgtable *data, unsigned long iova)
196 int tbl = dart_get_table(data, iova);
202 ptep += dart_get_l1_index(data, iova);
236 static int dart_map_pages(struct io_pgtable_ops *ops, unsigned long iova,
257 tbl = dart_get_table(data, iova);
260 ptep += dart_get_l1_index(data, iova);
281 map_idx_start = dart_get_l2_index(data, iova);
285 ret = dart_init_pte(data, iova, paddr, prot, num_entries, ptep);
291 * a chance for anything to kick off a table walk for the new iova.
298 static size_t dart_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova,
310 ptep = dart_get_l2(data, iova);
316 unmap_idx_start = dart_get_l2_index(data, iova);
332 iova + i * pgsize, pgsize);
342 unsigned long iova)
347 ptep = dart_get_l2(data, iova);
353 ptep += dart_get_l2_index(data, iova);
358 iova &= (data->iop.cfg.pgsize_bitmap - 1);
359 return iopte_to_paddr(pte, data) | iova;