Lines Matching refs:level

57 static struct xe_lmtt_pt *lmtt_pt_alloc(struct xe_lmtt *lmtt, unsigned int level)  in lmtt_pt_alloc()  argument
59 unsigned int num_entries = level ? lmtt->ops->lmtt_pte_num(level) : 0; in lmtt_pt_alloc()
71 PAGE_ALIGN(lmtt->ops->lmtt_pte_size(level) * in lmtt_pt_alloc()
72 lmtt->ops->lmtt_pte_num(level)), in lmtt_pt_alloc()
82 lmtt_debug(lmtt, "level=%u addr=%#llx\n", level, (u64)xe_bo_main_addr(bo, XE_PAGE_SIZE)); in lmtt_pt_alloc()
86 pt->level = level; in lmtt_pt_alloc()
99 pt->level, (u64)xe_bo_main_addr(pt->bo, XE_PAGE_SIZE)); in lmtt_pt_free()
123 unsigned int num_entries = lmtt->ops->lmtt_pte_num(pd->level); in lmtt_fini_pd()
284 unsigned int level = pt->level; in lmtt_write_pte() local
286 lmtt_assert(lmtt, idx <= lmtt->ops->lmtt_pte_num(level)); in lmtt_write_pte()
287 lmtt_debug(lmtt, "WRITE level=%u index=%u pte=%#llx\n", level, idx, pte); in lmtt_write_pte()
289 switch (lmtt->ops->lmtt_pte_size(level)) { in lmtt_write_pte()
308 unsigned int num_entries = pd->level ? lmtt->ops->lmtt_pte_num(pd->level) : 0; in lmtt_destroy_pt()
337 lmtt_assert(lmtt, pd->level > 0); in lmtt_drop_pages()
338 lmtt_assert(lmtt, pt->level == pd->level - 1); in lmtt_drop_pages()
345 u64 pte_addr_shift = BIT_ULL(lmtt->ops->lmtt_pte_shift(pd->level)); in __lmtt_alloc_range()
349 lmtt_assert(lmtt, pd->level > 0); in __lmtt_alloc_range()
357 pt = lmtt_pt_alloc(lmtt, pd->level - 1); in __lmtt_alloc_range()
363 idx = lmtt->ops->lmtt_pte_index(offset, pd->level); in __lmtt_alloc_range()
364 pde = lmtt->ops->lmtt_pte_encode(pt_addr, pd->level); in __lmtt_alloc_range()
372 if (pt->level != 0) { in __lmtt_alloc_range()
392 lmtt_assert(lmtt, pd->level > 0); in lmtt_alloc_range()
393 lmtt_assert(lmtt, vfid <= lmtt->ops->lmtt_pte_num(pd->level)); in lmtt_alloc_range()
400 pt = lmtt_pt_alloc(lmtt, pd->level - 1); in lmtt_alloc_range()
406 pde = lmtt->ops->lmtt_pte_encode(pt_addr, pd->level); in lmtt_alloc_range()
412 if (pt->level != 0) { in lmtt_alloc_range()
430 lmtt_assert(lmtt, vfid <= lmtt->ops->lmtt_pte_num(pd->level)); in lmtt_leaf_pt()
433 while (pt->level) { in lmtt_leaf_pt()
434 lmtt_assert(lmtt, lmtt->ops->lmtt_pte_index(addr, pt->level) <= in lmtt_leaf_pt()
435 lmtt->ops->lmtt_pte_num(pt->level)); in lmtt_leaf_pt()
437 pt = pt->entries[lmtt->ops->lmtt_pte_index(addr, pt->level)]; in lmtt_leaf_pt()
439 addr >>= lmtt->ops->lmtt_pte_shift(pt->level); in lmtt_leaf_pt()
442 lmtt_assert(lmtt, lmtt->ops->lmtt_pte_index(addr, pt->level) <= in lmtt_leaf_pt()
443 lmtt->ops->lmtt_pte_num(pt->level)); in lmtt_leaf_pt()
444 lmtt_assert(lmtt, pt->level != pd->level); in lmtt_leaf_pt()
445 lmtt_assert(lmtt, pt->level == 0); in lmtt_leaf_pt()
553 unsigned int level = 0; in xe_lmtt_estimate_pt_size() local
560 pt_size = PAGE_ALIGN(lmtt->ops->lmtt_pte_size(level) * in xe_lmtt_estimate_pt_size()
561 lmtt->ops->lmtt_pte_num(level)); in xe_lmtt_estimate_pt_size()
563 while (++level < lmtt->ops->lmtt_root_pd_level()) { in xe_lmtt_estimate_pt_size()
564 pt_size *= lmtt->ops->lmtt_pte_index(size, level) + 1; in xe_lmtt_estimate_pt_size()
565 pt_size += PAGE_ALIGN(lmtt->ops->lmtt_pte_size(level) * in xe_lmtt_estimate_pt_size()
566 lmtt->ops->lmtt_pte_num(level)); in xe_lmtt_estimate_pt_size()