]> git.baikalelectronics.ru Git - kernel.git/commitdiff
KVM: x86/mmu: Consolidate reset_rsvds_bits_mask() calls
authorSean Christopherson <seanjc@google.com>
Tue, 22 Jun 2021 17:57:26 +0000 (10:57 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 24 Jun 2021 22:00:45 +0000 (18:00 -0400)
Move calls to reset_rsvds_bits_mask() out of the various mode statements
and under a more generic CR0.PG=1 check.  This will allow for additional
code consolidation in the future.

No functional change intended.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210622175739.3610207-42-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/mmu.c

index b5e63c4ed7d1a0aa56344453e9c8e59ae46aea58..9a06003811fdea47ba5c7dce54f5c78314dd2012 100644 (file)
@@ -4637,18 +4637,18 @@ static void init_kvm_tdp_mmu(struct kvm_vcpu *vcpu)
        } else if (is_long_mode(vcpu)) {
                context->root_level = ____is_cr4_la57(&regs) ?
                                PT64_ROOT_5LEVEL : PT64_ROOT_4LEVEL;
-               reset_rsvds_bits_mask(vcpu, context);
                context->gva_to_gpa = paging64_gva_to_gpa;
        } else if (is_pae(vcpu)) {
                context->root_level = PT32E_ROOT_LEVEL;
-               reset_rsvds_bits_mask(vcpu, context);
                context->gva_to_gpa = paging64_gva_to_gpa;
        } else {
                context->root_level = PT32_ROOT_LEVEL;
-               reset_rsvds_bits_mask(vcpu, context);
                context->gva_to_gpa = paging32_gva_to_gpa;
        }
 
+       if (is_cr0_pg(context))
+               reset_rsvds_bits_mask(vcpu, context);
+
        update_permission_bitmask(context, false);
        update_pkru_bitmask(context);
        update_last_nonleaf_level(context);
@@ -4890,18 +4890,17 @@ static void init_kvm_nested_mmu(struct kvm_vcpu *vcpu)
         * nested page tables as the second level of translation. Basically
         * the gva_to_gpa functions between mmu and nested_mmu are swapped.
         */
-       if (!is_paging(vcpu)) {
+       if (!is_paging(vcpu))
                g_context->gva_to_gpa = nonpaging_gva_to_gpa_nested;
-       } else if (is_long_mode(vcpu)) {
-               reset_rsvds_bits_mask(vcpu, g_context);
+       else if (is_long_mode(vcpu))
                g_context->gva_to_gpa = paging64_gva_to_gpa_nested;
-       } else if (is_pae(vcpu)) {
-               reset_rsvds_bits_mask(vcpu, g_context);
+       else if (is_pae(vcpu))
                g_context->gva_to_gpa = paging64_gva_to_gpa_nested;
-       } else {
-               reset_rsvds_bits_mask(vcpu, g_context);
+       else
                g_context->gva_to_gpa = paging32_gva_to_gpa_nested;
-       }
+
+       if (is_cr0_pg(g_context))
+               reset_rsvds_bits_mask(vcpu, g_context);
 
        update_permission_bitmask(g_context, false);
        update_pkru_bitmask(g_context);