RE: [PATCH v2] KVM: x86: fix kvm_has_noapic_vcpu updates when fail to create vcpu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Sean Christopherson <seanjc@xxxxxxxxxx>
> Sent: Saturday, December 2, 2023 12:58 AM
> To: Li,Rongqing <lirongqing@xxxxxxxxx>
> Cc: x86@xxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; mlevitsk@xxxxxxxxxx;
> yilun.xu@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v2] KVM: x86: fix kvm_has_noapic_vcpu updates when fail
> to create vcpu
> 
> On Thu, Nov 23, 2023, Li RongQing wrote:
> > Static key kvm_has_noapic_vcpu should be reduced when fail to create
> > vcpu, opportunistically change to call kvm_free_lapic only when LAPIC
> > is in kernel in kvm_arch_vcpu_destroy
> 
> Heh, this has been on my todo list for a comically long time.
> 
> > Reviewed-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx>
> > Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx>
> > ---
> > diff v1: call kvm_free_lapic conditionally in kvm_arch_vcpu_destroy
> >
> >  arch/x86/kvm/x86.c | 14 ++++++++++----
> >  1 file changed, 10 insertions(+), 4 deletions(-)
> >
> > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index
> > 2c92407..3cadf28 100644
> > --- a/arch/x86/kvm/x86.c
> > +++ b/arch/x86/kvm/x86.c
> > @@ -12079,7 +12079,10 @@ int kvm_arch_vcpu_create(struct kvm_vcpu
> *vcpu)
> >  	kfree(vcpu->arch.mci_ctl2_banks);
> >  	free_page((unsigned long)vcpu->arch.pio_data);
> >  fail_free_lapic:
> > -	kvm_free_lapic(vcpu);
> > +	if (lapic_in_kernel(vcpu))
> > +		kvm_free_lapic(vcpu);
> > +	else
> > +		static_branch_dec(&kvm_has_noapic_vcpu);
> >  fail_mmu_destroy:
> >  	kvm_mmu_destroy(vcpu);
> >  	return r;
> > @@ -12122,14 +12125,17 @@ void kvm_arch_vcpu_destroy(struct kvm_vcpu
> *vcpu)
> >  	kvm_pmu_destroy(vcpu);
> >  	kfree(vcpu->arch.mce_banks);
> >  	kfree(vcpu->arch.mci_ctl2_banks);
> > -	kvm_free_lapic(vcpu);
> > +
> > +	if (lapic_in_kernel(vcpu))
> > +		kvm_free_lapic(vcpu);
> > +	else
> > +		static_branch_dec(&kvm_has_noapic_vcpu);
> 
> Rather than split code like this, what if we let the APIC code deal with bumping
> the static branch?  

I am fine, thanks

-Li






[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux