Re: [PATCH 19/27] KVM: x86/mmu: Use page-track notifiers iff there are external users

From: Sean Christopherson
Date: Tue Jan 03 2023 - 19:50:48 EST


On Wed, Dec 28, 2022, Yan Zhao wrote:
> On Fri, Dec 23, 2022 at 12:57:31AM +0000, Sean Christopherson wrote:
> > diff --git a/arch/x86/kvm/mmu/page_track.c b/arch/x86/kvm/mmu/page_track.c
> > index 2b302fd2c5dd..f932909aa9b5 100644
> > --- a/arch/x86/kvm/mmu/page_track.c
> > +++ b/arch/x86/kvm/mmu/page_track.c
> > @@ -193,6 +193,7 @@ bool kvm_slot_page_track_is_active(struct kvm *kvm,
> > return !!READ_ONCE(slot->arch.gfn_track[mode][index]);
> > }
> >
> > +#ifdef CONFIG_KVM_EXTERNAL_WRITE_TRACKING
> > void kvm_page_track_cleanup(struct kvm *kvm)
> > {
> > struct kvm_page_track_notifier_head *head;
> > @@ -208,6 +209,7 @@ int kvm_page_track_init(struct kvm *kvm)
> > head = &kvm->arch.track_notifier_head;
> > INIT_HLIST_HEAD(&head->track_notifier_list);
> > return init_srcu_struct(&head->track_srcu);
> > + return 0;
> Double "return"s.

Huh, I'm surprised this didn't throw a warning. I'm pretty sure I screwed up a
refactoring, I originally had the "return 0" in an #else branch.

> > +#endif /* CONFIG_KVM_EXTERNAL_WRITE_TRACKING */
> > +
> > +static inline void kvm_page_track_write(struct kvm_vcpu *vcpu, gpa_t gpa,
> > + const u8 *new, int bytes)
> > +{
> > + __kvm_page_track_write(vcpu, gpa, new, bytes);
> > +
> Why not convert "vcpu" to "kvm" in __kvm_page_track_write() ?

No reason, I just overlooked the opportunistic cleanup. I'll do this in the next
version.

Thanks much for the reviews!