On Thu, Apr 01, 2021, Maxim Levitsky wrote: > Small refactoring that will be used in the next patch. > > Signed-off-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> > --- > arch/x86/kvm/kvm_cache_regs.h | 7 +++++++ > arch/x86/kvm/svm/svm.c | 6 ++---- > 2 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/kvm/kvm_cache_regs.h b/arch/x86/kvm/kvm_cache_regs.h > index 2e11da2f5621..07d607947805 100644 > --- a/arch/x86/kvm/kvm_cache_regs.h > +++ b/arch/x86/kvm/kvm_cache_regs.h > @@ -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, I don't love the name, because it makes me think too hard about available vs. dirty. :-) If we drop the optimizations, what if we also drop this patch to avoid bikeshedding the name? > + 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) > { > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c > index 271196400495..2843732299a2 100644 > --- a/arch/x86/kvm/svm/svm.c > +++ b/arch/x86/kvm/svm/svm.c > @@ -3880,10 +3880,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 > -- > 2.26.2 >