Lines Matching refs:lvl

153 static inline bool iopte_leaf(arm_lpae_iopte pte, int lvl,
156 if (lvl == (ARM_LPAE_MAX_LEVELS - 1) && fmt != ARM_MALI_LPAE)
256 int lvl, arm_lpae_iopte *ptep);
260 int lvl, int num_entries, arm_lpae_iopte *ptep)
264 size_t sz = ARM_LPAE_BLOCK_SIZE(lvl, data);
267 if (data->iop.fmt != ARM_MALI_LPAE && lvl == ARM_LPAE_MAX_LEVELS - 1)
281 arm_lpae_iopte prot, int lvl, int num_entries,
287 if (iopte_leaf(ptep[i], lvl, data->iop.fmt)) {
297 size_t sz = ARM_LPAE_BLOCK_SIZE(lvl, data);
299 tblp = ptep - ARM_LPAE_LVL_IDX(iova, lvl, data);
301 lvl, tblp) != sz) {
307 __arm_lpae_init_pte(data, paddr, prot, lvl, num_entries, ptep);
345 arm_lpae_iopte prot, int lvl, arm_lpae_iopte *ptep,
349 size_t block_size = ARM_LPAE_BLOCK_SIZE(lvl, data);
355 map_idx_start = ARM_LPAE_LVL_IDX(iova, lvl, data);
362 ret = arm_lpae_init_pte(data, iova, paddr, prot, lvl, num_entries, ptep);
370 if (WARN_ON(lvl >= ARM_LPAE_MAX_LEVELS - 1))
387 if (pte && !iopte_leaf(pte, lvl, data->iop.fmt)) {
396 return __arm_lpae_map(data, iova, paddr, size, pgcount, prot, lvl + 1,
471 int ret, lvl = data->start_level;
488 ret = __arm_lpae_map(data, iova, paddr, pgsize, pgcount, prot, lvl,
499 static void __arm_lpae_free_pgtable(struct arm_lpae_io_pgtable *data, int lvl,
505 if (lvl == data->start_level)
513 if (lvl == ARM_LPAE_MAX_LEVELS - 1)
521 if (!pte || iopte_leaf(pte, lvl, data->iop.fmt))
524 __arm_lpae_free_pgtable(data, lvl + 1, iopte_deref(pte, data));
541 arm_lpae_iopte blk_pte, int lvl,
548 size_t split_sz = ARM_LPAE_BLOCK_SIZE(lvl, data);
552 if (WARN_ON(lvl == ARM_LPAE_MAX_LEVELS))
560 unmap_idx_start = ARM_LPAE_LVL_IDX(iova, lvl, data);
573 __arm_lpae_init_pte(data, blk_paddr, pte, lvl, 1, &tablep[i]);
595 return __arm_lpae_unmap(data, gather, iova, size, pgcount, lvl, tablep);
601 int lvl, arm_lpae_iopte *ptep)
608 if (WARN_ON(lvl == ARM_LPAE_MAX_LEVELS))
611 unmap_idx_start = ARM_LPAE_LVL_IDX(iova, lvl, data);
618 if (size == ARM_LPAE_BLOCK_SIZE(lvl, data)) {
629 if (!iopte_leaf(pte, lvl, iop->fmt)) {
633 __arm_lpae_free_pgtable(data, lvl + 1, iopte_deref(pte, data));
643 } else if (iopte_leaf(pte, lvl, iop->fmt)) {
649 lvl + 1, ptep, pgcount);
654 return __arm_lpae_unmap(data, gather, iova, size, pgcount, lvl + 1, ptep);
683 int lvl = data->start_level;
691 ptep += ARM_LPAE_LVL_IDX(iova, lvl, data);
699 if (iopte_leaf(pte, lvl, data->iop.fmt))
704 } while (++lvl < ARM_LPAE_MAX_LEVELS);
710 iova &= (ARM_LPAE_BLOCK_SIZE(lvl, data) - 1);