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()
306 unsigned int level, unsigned int gpte) in FNAME()
323 gpte &= level - (PT32_ROOT_LEVEL + mmu->mmu_role.ext.cr4_pse); in FNAME()
330 gpte |= level - PG_LEVEL_4K - 1; in FNAME()
361 walker->level = mmu->root_level; in FNAME()
367 if (walker->level == PT32E_ROOT_LEVEL) { in FNAME()
369 trace_kvm_mmu_paging_element(pte, walker->level); in FNAME()
372 --walker->level; in FNAME()
375 walker->max_level = walker->level; in FNAME()
386 ++walker->level; in FNAME()
392 --walker->level; in FNAME()
394 index = PT_INDEX(addr, walker->level); in FNAME()
399 BUG_ON(walker->level < 1); in FNAME()
400 walker->table_gfn[walker->level - 1] = table_gfn; in FNAME()
401 walker->pte_gpa[walker->level - 1] = pte_gpa; in FNAME()
421 &walker->pte_writable[walker->level - 1]); in FNAME()
428 walker->ptep_user[walker->level - 1] = ptep_user; in FNAME()
430 trace_kvm_mmu_paging_element(pte, walker->level); in FNAME()
441 if (unlikely(FNAME(is_rsvd_bits_set)(mmu, pte, walker->level))) { in FNAME()
446 walker->ptes[walker->level - 1] = pte; in FNAME()
449 walker->pt_access[walker->level - 1] = FNAME(gpte_access)(pt_access ^ walk_nx_mask); in FNAME()
450 } while (!FNAME(is_last_gpte)(mmu, walker->level, pte)); in FNAME()
461 gfn = gpte_to_gfn_lvl(pte, walker->level); in FNAME()
462 gfn += (addr & PT_LVL_OFFSET_MASK(walker->level)) >> PAGE_SHIFT; in FNAME()
464 if (PTTYPE == 32 && walker->level > PG_LEVEL_4K && is_cpuid_PSE36()) in FNAME()
495 walker->pt_access[walker->level - 1]); in FNAME()
598 struct guest_walker *gw, int level) in FNAME()
601 gpa_t base_gpa, pte_gpa = gw->pte_gpa[level - 1]; in FNAME()
605 if (level == PG_LEVEL_4K) { in FNAME()
617 return r || curr_pte != gw->ptes[level - 1]; in FNAME()
630 if (sp->role.level > PG_LEVEL_4K) in FNAME()
675 int top_level, level, req_level, ret; in FNAME() local
696 shadow_walk_okay(&it) && it.level > gw->level; in FNAME()
705 table_gfn = gw->table_gfn[it.level - 2]; in FNAME()
706 access = gw->pt_access[it.level - 2]; in FNAME()
708 it.level-1, false, access); in FNAME()
734 if (FNAME(gpte_changed)(vcpu, gw, it.level - 1)) in FNAME()
741 level = kvm_mmu_hugepage_adjust(vcpu, gw->gfn, max_level, &pfn, in FNAME()
744 trace_kvm_mmu_spte_requested(addr, gw->level, pfn); in FNAME()
754 disallowed_hugepage_adjust(*it.sptep, gw->gfn, it.level, in FNAME()
755 &pfn, &level); in FNAME()
757 base_gfn = gw->gfn & ~(KVM_PAGES_PER_HPAGE(it.level) - 1); in FNAME()
758 if (it.level == level) in FNAME()
767 it.level - 1, true, direct_access); in FNAME()
769 if (huge_page_disallowed && req_level >= it.level) in FNAME()
775 it.level, base_gfn, pfn, prefault, map_writable); in FNAME()
809 int level; in FNAME() local
810 gfn_t mask = ~(KVM_PAGES_PER_HPAGE(walker->level) - 1); in FNAME()
817 for (level = walker->level; level <= walker->max_level; level++) { in FNAME()
818 gfn_t gfn = walker->gfn ^ walker->table_gfn[level - 1]; in FNAME()
895 max_level = walker.level; in FNAME()
949 WARN_ON(sp->role.level != PG_LEVEL_4K); in FNAME()
962 int level; in FNAME() local
980 level = iterator.level; in FNAME()
985 if (is_last_spte(old_spte, level)) { in FNAME()
998 sp->gfn, KVM_PAGES_PER_HPAGE(sp->role.level)); in FNAME()
1085 .level = 0xf, in FNAME()