diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kvm/paging_tmpl.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index debe7703536..e4ad3dc84df 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h | |||
@@ -132,7 +132,7 @@ walk: | |||
132 | walker->level = vcpu->arch.mmu.root_level; | 132 | walker->level = vcpu->arch.mmu.root_level; |
133 | pte = vcpu->arch.cr3; | 133 | pte = vcpu->arch.cr3; |
134 | #if PTTYPE == 64 | 134 | #if PTTYPE == 64 |
135 | if (!is_long_mode(vcpu)) { | 135 | if (vcpu->arch.mmu.root_level == PT32E_ROOT_LEVEL) { |
136 | pte = kvm_pdptr_read(vcpu, (addr >> 30) & 3); | 136 | pte = kvm_pdptr_read(vcpu, (addr >> 30) & 3); |
137 | trace_kvm_mmu_paging_element(pte, walker->level); | 137 | trace_kvm_mmu_paging_element(pte, walker->level); |
138 | if (!is_present_gpte(pte)) { | 138 | if (!is_present_gpte(pte)) { |
@@ -205,7 +205,7 @@ walk: | |||
205 | (PTTYPE == 64 || is_pse(vcpu))) || | 205 | (PTTYPE == 64 || is_pse(vcpu))) || |
206 | ((walker->level == PT_PDPE_LEVEL) && | 206 | ((walker->level == PT_PDPE_LEVEL) && |
207 | is_large_pte(pte) && | 207 | is_large_pte(pte) && |
208 | is_long_mode(vcpu))) { | 208 | vcpu->arch.mmu.root_level == PT64_ROOT_LEVEL)) { |
209 | int lvl = walker->level; | 209 | int lvl = walker->level; |
210 | 210 | ||
211 | walker->gfn = gpte_to_gfn_lvl(pte, lvl); | 211 | walker->gfn = gpte_to_gfn_lvl(pte, lvl); |