KVM: x86: introduce kvm_register_clear_available
authorMaxim Levitsky <mlevitsk@redhat.com>
Mon, 7 Jun 2021 09:02:01 +0000 (12:02 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 17 Jun 2021 17:09:47 +0000 (13:09 -0400)
Small refactoring that will be used in the next patch.

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Message-Id: <20210607090203.133058-7-mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/kvm_cache_regs.h
arch/x86/kvm/svm/svm.c

index ebddbd3..296d67f 100644 (file)
@@ -55,6 +55,13 @@ static inline void kvm_register_mark_available(struct kvm_vcpu *vcpu,
        __set_bit(reg, (unsigned long *)&vcpu->arch.regs_avail);
 }
 
+static inline void kvm_register_clear_available(struct kvm_vcpu *vcpu,
+                                              enum kvm_reg reg)
+{
+       __clear_bit(reg, (unsigned long *)&vcpu->arch.regs_avail);
+       __clear_bit(reg, (unsigned long *)&vcpu->arch.regs_dirty);
+}
+
 static inline void kvm_register_mark_dirty(struct kvm_vcpu *vcpu,
                                           enum kvm_reg reg)
 {
index 9bb4692..b6afa6b 100644 (file)
@@ -3873,10 +3873,8 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)
                vcpu->arch.apf.host_apf_flags =
                        kvm_read_and_reset_apf_flags();
 
-       if (npt_enabled) {
-               vcpu->arch.regs_avail &= ~(1 << VCPU_EXREG_PDPTR);
-               vcpu->arch.regs_dirty &= ~(1 << VCPU_EXREG_PDPTR);
-       }
+       if (npt_enabled)
+               kvm_register_clear_available(vcpu, VCPU_EXREG_PDPTR);
 
        /*
         * We need to handle MC intercepts here before the vcpu has a chance to