Lines Matching refs:level
30 #define PT_INDEX(addr, level) PT64_INDEX(addr, level) argument
48 #define PT_INDEX(addr, level) PT32_INDEX(addr, level) argument
62 #define PT_INDEX(addr, level) PT64_INDEX(addr, level) argument
86 int level; member
141 static bool FNAME(is_rsvd_bits_set)(struct kvm_mmu *mmu, u64 gpte, int level) in FNAME()
143 return __is_rsvd_bits_set(&mmu->guest_rsvd_check, gpte, level) || in FNAME()
237 unsigned level, index; in FNAME() local
247 for (level = walker->max_level; level >= walker->level; --level) { in FNAME()
248 pte = orig_pte = walker->ptes[level - 1]; in FNAME()
249 table_gfn = walker->table_gfn[level - 1]; in FNAME()
250 ptep_user = walker->ptep_user[level - 1]; in FNAME()
256 if (level == walker->level && write_fault && in FNAME()
281 if (unlikely(!walker->pte_writable[level - 1])) in FNAME()
289 walker->ptes[level - 1] = pte; in FNAME()
332 walker->level = mmu->root_level; in FNAME()
338 if (walker->level == PT32E_ROOT_LEVEL) { in FNAME()
340 trace_kvm_mmu_paging_element(pte, walker->level); in FNAME()
343 --walker->level; in FNAME()
346 walker->max_level = walker->level; in FNAME()
357 ++walker->level; in FNAME()
363 --walker->level; in FNAME()
365 index = PT_INDEX(addr, walker->level); in FNAME()
370 BUG_ON(walker->level < 1); in FNAME()
371 walker->table_gfn[walker->level - 1] = table_gfn; in FNAME()
372 walker->pte_gpa[walker->level - 1] = pte_gpa; in FNAME()
392 &walker->pte_writable[walker->level - 1]); in FNAME()
399 walker->ptep_user[walker->level - 1] = ptep_user; in FNAME()
401 trace_kvm_mmu_paging_element(pte, walker->level); in FNAME()
412 if (unlikely(FNAME(is_rsvd_bits_set)(mmu, pte, walker->level))) { in FNAME()
417 walker->ptes[walker->level - 1] = pte; in FNAME()
420 walker->pt_access[walker->level - 1] = FNAME(gpte_access)(pt_access ^ walk_nx_mask); in FNAME()
421 } while (!is_last_gpte(mmu, walker->level, pte)); in FNAME()
432 gfn = gpte_to_gfn_lvl(pte, walker->level); in FNAME()
433 gfn += (addr & PT_LVL_OFFSET_MASK(walker->level)) >> PAGE_SHIFT; in FNAME()
435 if (PTTYPE == 32 && walker->level > PG_LEVEL_4K && is_cpuid_PSE36()) in FNAME()
466 walker->pt_access[walker->level - 1]); in FNAME()
568 struct guest_walker *gw, int level) in FNAME()
571 gpa_t base_gpa, pte_gpa = gw->pte_gpa[level - 1]; in FNAME()
575 if (level == PG_LEVEL_4K) { in FNAME()
587 return r || curr_pte != gw->ptes[level - 1]; in FNAME()
600 if (sp->role.level > PG_LEVEL_4K) in FNAME()
638 int top_level, level, req_level, ret; in FNAME() local
659 shadow_walk_okay(&it) && it.level > gw->level; in FNAME()
668 table_gfn = gw->table_gfn[it.level - 2]; in FNAME()
669 access = gw->pt_access[it.level - 2]; in FNAME()
670 sp = kvm_mmu_get_page(vcpu, table_gfn, addr, it.level-1, in FNAME()
678 if (FNAME(gpte_changed)(vcpu, gw, it.level - 1)) in FNAME()
685 level = kvm_mmu_hugepage_adjust(vcpu, gw->gfn, max_level, &pfn, in FNAME()
688 trace_kvm_mmu_spte_requested(addr, gw->level, pfn); in FNAME()
698 disallowed_hugepage_adjust(*it.sptep, gw->gfn, it.level, in FNAME()
699 &pfn, &level); in FNAME()
701 base_gfn = gw->gfn & ~(KVM_PAGES_PER_HPAGE(it.level) - 1); in FNAME()
702 if (it.level == level) in FNAME()
711 it.level - 1, true, direct_access); in FNAME()
713 if (huge_page_disallowed && req_level >= it.level) in FNAME()
719 it.level, base_gfn, pfn, prefault, map_writable); in FNAME()
753 int level; in FNAME() local
754 gfn_t mask = ~(KVM_PAGES_PER_HPAGE(walker->level) - 1); in FNAME()
761 for (level = walker->level; level <= walker->max_level; level++) { in FNAME()
762 gfn_t gfn = walker->gfn ^ walker->table_gfn[level - 1]; in FNAME()
838 max_level = walker.level; in FNAME()
893 WARN_ON(sp->role.level != PG_LEVEL_4K); in FNAME()
906 int level; in FNAME() local
924 level = iterator.level; in FNAME()
929 if (is_last_spte(old_spte, level)) { in FNAME()
942 sp->gfn, KVM_PAGES_PER_HPAGE(sp->role.level)); in FNAME()