All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: Marc Zyngier <maz@kernel.org>, James Hogan <jhogan@kernel.org>,
	Paul Mackerras <paulus@ozlabs.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	James Morse <james.morse@arm.com>,
	Julien Thierry <julien.thierry.kdev@gmail.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	David Hildenbrand <david@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Wanpeng Li <wanpengli@tencent.com>,
	Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
	linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu, linux-mips@vger.kernel.org,
	kvm-ppc@vger.kernel.org, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, Greg Kurz <groug@kaod.org>
Subject: Re: [PATCH v2 30/45] KVM: Move vcpu alloc and init invocation to common code
Date: Fri, 20 Dec 2019 07:53:30 -0800	[thread overview]
Message-ID: <20191220155330.GA21021@linux.intel.com> (raw)
In-Reply-To: <20191220103325.34fc2bf0.cohuck@redhat.com>

On Fri, Dec 20, 2019 at 10:33:25AM +0100, Cornelia Huck wrote:
> On Wed, 18 Dec 2019 13:55:15 -0800
> Sean Christopherson <sean.j.christopherson@intel.com> wrote:
> > +int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
> >  {
> > -	struct kvm_vcpu *vcpu;
> >  	struct sie_page *sie_page;
> >  	int rc;
> >  
> > -	rc = -ENOMEM;
> > -
> > -	vcpu = kmem_cache_zalloc(kvm_vcpu_cache, GFP_KERNEL);
> > -	if (!vcpu)
> > -		goto out;
> > -
> > -	rc = kvm_vcpu_init(vcpu, kvm, id);
> > -	if (rc)
> > -		goto out_free_cpu;
> > -
> > -	rc = -ENOMEM;
> > -
> >  	BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
> >  	sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
> >  	if (!sie_page)
> > -		goto out_uninit_vcpu;
> > +		return -ENOMEM;
> >  
> >  	vcpu->arch.sie_block = &sie_page->sie_block;
> >  	vcpu->arch.sie_block->itdba = (unsigned long) &sie_page->itdb;
> > @@ -3087,15 +3070,11 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
> >  		 vcpu->arch.sie_block);
> >  	trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);
> >  
> > -	return vcpu;
> > +	return 0;
> > +
> >  out_free_sie_block:
> >  	free_page((unsigned long)(vcpu->arch.sie_block));
> > -out_uninit_vcpu:
> > -	kvm_vcpu_uninit(vcpu);
> > -out_free_cpu:
> > -	kmem_cache_free(kvm_vcpu_cache, vcpu);
> > -out:
> > -	return ERR_PTR(rc);
> > +	return rc;
> 
> This is getting a bit hard to follow across the patches, but I think rc
> is now only set for ucontrol guests. So this looks correct right now,
> but feels a bit brittle... should we maybe init rc to 0 and always
> return rc instead?

Yes, but only for a few patches until kvm_s390_vcpu_setup() is introduced,
at which point @rc is unconditionally set at the end.

        rc = kvm_s390_vcpu_setup(vcpu);
        if (rc)
                goto out_free_ucontrol_gmap;
        return 0;

My personal preference is to use "return 0;" when the return is known to
be zero as it makes the success path obvious at a glance.  I also didn't
want to intialize @rc at he beginning because then the sie_page allocation
would look a bit funky:

	int rc = 0;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return -ENOMEM;


An alternative would be to init @rc to -ENOMEM:

        int rc = -ENOMEM;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return rc;

This would be my preference if you'd prefer to init @rc right away,
especially if  __kvm_ucontrol_vcpu_init() is open coded here (discussion
in patch 35, "KVM: s390: Manually invoke vcpu setup during 
kvm_arch_vcpu_create()", e.g.:

        int rc = -ENOMEM;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return rc;

	...

        if (kvm_is_ucontrol(vcpu->kvm)) {
                vcpu->arch.gmap = gmap_create(current->mm, -1UL);
                if (!vcpu->arch.gmap)
                        goto out_free_sie_block;
                vcpu->arch.gmap->private = vcpu->kvm;
        }

        VM_EVENT(kvm, 3, "create cpu %d at 0x%pK, sie block at 0x%pK", id, vcpu,
                 vcpu->arch.sie_block);
        trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);

        rc = kvm_s390_vcpu_setup(vcpu);
        if (rc)
                goto out_free_ucontrol_gmap;
        return 0;

out_free_ucontrol_gmap:
        if (kvm_is_ucontrol(vcpu->kvm))
                gmap_remove(vcpu->arch.gmap);
out_free_sie_block:
        free_page((unsigned long)(vcpu->arch.sie_block));
        return rc;

WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: Wanpeng Li <wanpengli@tencent.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	kvm@vger.kernel.org, Marc Zyngier <maz@kernel.org>,
	Joerg Roedel <joro@8bytes.org>,
	David Hildenbrand <david@redhat.com>,
	linux-mips@vger.kernel.org, kvm-ppc@vger.kernel.org,
	linux-kernel@vger.kernel.org, Paul Mackerras <paulus@ozlabs.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Greg Kurz <groug@kaod.org>,
	linux-arm-kernel@lists.infradead.org,
	James Hogan <jhogan@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	kvmarm@lists.cs.columbia.edu, Jim Mattson <jmattson@google.com>
Subject: Re: [PATCH v2 30/45] KVM: Move vcpu alloc and init invocation to common code
Date: Fri, 20 Dec 2019 07:53:30 -0800	[thread overview]
Message-ID: <20191220155330.GA21021@linux.intel.com> (raw)
In-Reply-To: <20191220103325.34fc2bf0.cohuck@redhat.com>

On Fri, Dec 20, 2019 at 10:33:25AM +0100, Cornelia Huck wrote:
> On Wed, 18 Dec 2019 13:55:15 -0800
> Sean Christopherson <sean.j.christopherson@intel.com> wrote:
> > +int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
> >  {
> > -	struct kvm_vcpu *vcpu;
> >  	struct sie_page *sie_page;
> >  	int rc;
> >  
> > -	rc = -ENOMEM;
> > -
> > -	vcpu = kmem_cache_zalloc(kvm_vcpu_cache, GFP_KERNEL);
> > -	if (!vcpu)
> > -		goto out;
> > -
> > -	rc = kvm_vcpu_init(vcpu, kvm, id);
> > -	if (rc)
> > -		goto out_free_cpu;
> > -
> > -	rc = -ENOMEM;
> > -
> >  	BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
> >  	sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
> >  	if (!sie_page)
> > -		goto out_uninit_vcpu;
> > +		return -ENOMEM;
> >  
> >  	vcpu->arch.sie_block = &sie_page->sie_block;
> >  	vcpu->arch.sie_block->itdba = (unsigned long) &sie_page->itdb;
> > @@ -3087,15 +3070,11 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
> >  		 vcpu->arch.sie_block);
> >  	trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);
> >  
> > -	return vcpu;
> > +	return 0;
> > +
> >  out_free_sie_block:
> >  	free_page((unsigned long)(vcpu->arch.sie_block));
> > -out_uninit_vcpu:
> > -	kvm_vcpu_uninit(vcpu);
> > -out_free_cpu:
> > -	kmem_cache_free(kvm_vcpu_cache, vcpu);
> > -out:
> > -	return ERR_PTR(rc);
> > +	return rc;
> 
> This is getting a bit hard to follow across the patches, but I think rc
> is now only set for ucontrol guests. So this looks correct right now,
> but feels a bit brittle... should we maybe init rc to 0 and always
> return rc instead?

Yes, but only for a few patches until kvm_s390_vcpu_setup() is introduced,
at which point @rc is unconditionally set at the end.

        rc = kvm_s390_vcpu_setup(vcpu);
        if (rc)
                goto out_free_ucontrol_gmap;
        return 0;

My personal preference is to use "return 0;" when the return is known to
be zero as it makes the success path obvious at a glance.  I also didn't
want to intialize @rc at he beginning because then the sie_page allocation
would look a bit funky:

	int rc = 0;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return -ENOMEM;


An alternative would be to init @rc to -ENOMEM:

        int rc = -ENOMEM;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return rc;

This would be my preference if you'd prefer to init @rc right away,
especially if  __kvm_ucontrol_vcpu_init() is open coded here (discussion
in patch 35, "KVM: s390: Manually invoke vcpu setup during 
kvm_arch_vcpu_create()", e.g.:

        int rc = -ENOMEM;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return rc;

	...

        if (kvm_is_ucontrol(vcpu->kvm)) {
                vcpu->arch.gmap = gmap_create(current->mm, -1UL);
                if (!vcpu->arch.gmap)
                        goto out_free_sie_block;
                vcpu->arch.gmap->private = vcpu->kvm;
        }

        VM_EVENT(kvm, 3, "create cpu %d at 0x%pK, sie block at 0x%pK", id, vcpu,
                 vcpu->arch.sie_block);
        trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);

        rc = kvm_s390_vcpu_setup(vcpu);
        if (rc)
                goto out_free_ucontrol_gmap;
        return 0;

out_free_ucontrol_gmap:
        if (kvm_is_ucontrol(vcpu->kvm))
                gmap_remove(vcpu->arch.gmap);
out_free_sie_block:
        free_page((unsigned long)(vcpu->arch.sie_block));
        return rc;
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: Wanpeng Li <wanpengli@tencent.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	kvm@vger.kernel.org, Suzuki K Poulose <suzuki.poulose@arm.com>,
	Marc Zyngier <maz@kernel.org>, Joerg Roedel <joro@8bytes.org>,
	David Hildenbrand <david@redhat.com>,
	linux-mips@vger.kernel.org, kvm-ppc@vger.kernel.org,
	linux-kernel@vger.kernel.org, Paul Mackerras <paulus@ozlabs.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Greg Kurz <groug@kaod.org>, James Morse <james.morse@arm.com>,
	linux-arm-kernel@lists.infradead.org,
	James Hogan <jhogan@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	kvmarm@lists.cs.columbia.edu,
	Julien Thierry <julien.thierry.kdev@gmail.com>,
	Jim Mattson <jmattson@google.com>
Subject: Re: [PATCH v2 30/45] KVM: Move vcpu alloc and init invocation to common code
Date: Fri, 20 Dec 2019 07:53:30 -0800	[thread overview]
Message-ID: <20191220155330.GA21021@linux.intel.com> (raw)
In-Reply-To: <20191220103325.34fc2bf0.cohuck@redhat.com>

On Fri, Dec 20, 2019 at 10:33:25AM +0100, Cornelia Huck wrote:
> On Wed, 18 Dec 2019 13:55:15 -0800
> Sean Christopherson <sean.j.christopherson@intel.com> wrote:
> > +int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
> >  {
> > -	struct kvm_vcpu *vcpu;
> >  	struct sie_page *sie_page;
> >  	int rc;
> >  
> > -	rc = -ENOMEM;
> > -
> > -	vcpu = kmem_cache_zalloc(kvm_vcpu_cache, GFP_KERNEL);
> > -	if (!vcpu)
> > -		goto out;
> > -
> > -	rc = kvm_vcpu_init(vcpu, kvm, id);
> > -	if (rc)
> > -		goto out_free_cpu;
> > -
> > -	rc = -ENOMEM;
> > -
> >  	BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
> >  	sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
> >  	if (!sie_page)
> > -		goto out_uninit_vcpu;
> > +		return -ENOMEM;
> >  
> >  	vcpu->arch.sie_block = &sie_page->sie_block;
> >  	vcpu->arch.sie_block->itdba = (unsigned long) &sie_page->itdb;
> > @@ -3087,15 +3070,11 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
> >  		 vcpu->arch.sie_block);
> >  	trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);
> >  
> > -	return vcpu;
> > +	return 0;
> > +
> >  out_free_sie_block:
> >  	free_page((unsigned long)(vcpu->arch.sie_block));
> > -out_uninit_vcpu:
> > -	kvm_vcpu_uninit(vcpu);
> > -out_free_cpu:
> > -	kmem_cache_free(kvm_vcpu_cache, vcpu);
> > -out:
> > -	return ERR_PTR(rc);
> > +	return rc;
> 
> This is getting a bit hard to follow across the patches, but I think rc
> is now only set for ucontrol guests. So this looks correct right now,
> but feels a bit brittle... should we maybe init rc to 0 and always
> return rc instead?

Yes, but only for a few patches until kvm_s390_vcpu_setup() is introduced,
at which point @rc is unconditionally set at the end.

        rc = kvm_s390_vcpu_setup(vcpu);
        if (rc)
                goto out_free_ucontrol_gmap;
        return 0;

My personal preference is to use "return 0;" when the return is known to
be zero as it makes the success path obvious at a glance.  I also didn't
want to intialize @rc at he beginning because then the sie_page allocation
would look a bit funky:

	int rc = 0;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return -ENOMEM;


An alternative would be to init @rc to -ENOMEM:

        int rc = -ENOMEM;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return rc;

This would be my preference if you'd prefer to init @rc right away,
especially if  __kvm_ucontrol_vcpu_init() is open coded here (discussion
in patch 35, "KVM: s390: Manually invoke vcpu setup during 
kvm_arch_vcpu_create()", e.g.:

        int rc = -ENOMEM;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return rc;

	...

        if (kvm_is_ucontrol(vcpu->kvm)) {
                vcpu->arch.gmap = gmap_create(current->mm, -1UL);
                if (!vcpu->arch.gmap)
                        goto out_free_sie_block;
                vcpu->arch.gmap->private = vcpu->kvm;
        }

        VM_EVENT(kvm, 3, "create cpu %d at 0x%pK, sie block at 0x%pK", id, vcpu,
                 vcpu->arch.sie_block);
        trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);

        rc = kvm_s390_vcpu_setup(vcpu);
        if (rc)
                goto out_free_ucontrol_gmap;
        return 0;

out_free_ucontrol_gmap:
        if (kvm_is_ucontrol(vcpu->kvm))
                gmap_remove(vcpu->arch.gmap);
out_free_sie_block:
        free_page((unsigned long)(vcpu->arch.sie_block));
        return rc;

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: Marc Zyngier <maz@kernel.org>, James Hogan <jhogan@kernel.org>,
	Paul Mackerras <paulus@ozlabs.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	James Morse <james.morse@arm.com>,
	Julien Thierry <julien.thierry.kdev@gmail.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	David Hildenbrand <david@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Wanpeng Li <wanpengli@tencent.com>,
	Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
	linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu, linux-mips@vger.kernel.org,
	kvm-ppc@vger.kernel.org, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, Greg Kurz <groug@kaod.org>
Subject: Re: [PATCH v2 30/45] KVM: Move vcpu alloc and init invocation to common code
Date: Fri, 20 Dec 2019 15:53:30 +0000	[thread overview]
Message-ID: <20191220155330.GA21021@linux.intel.com> (raw)
In-Reply-To: <20191220103325.34fc2bf0.cohuck@redhat.com>

On Fri, Dec 20, 2019 at 10:33:25AM +0100, Cornelia Huck wrote:
> On Wed, 18 Dec 2019 13:55:15 -0800
> Sean Christopherson <sean.j.christopherson@intel.com> wrote:
> > +int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
> >  {
> > -	struct kvm_vcpu *vcpu;
> >  	struct sie_page *sie_page;
> >  	int rc;
> >  
> > -	rc = -ENOMEM;
> > -
> > -	vcpu = kmem_cache_zalloc(kvm_vcpu_cache, GFP_KERNEL);
> > -	if (!vcpu)
> > -		goto out;
> > -
> > -	rc = kvm_vcpu_init(vcpu, kvm, id);
> > -	if (rc)
> > -		goto out_free_cpu;
> > -
> > -	rc = -ENOMEM;
> > -
> >  	BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
> >  	sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
> >  	if (!sie_page)
> > -		goto out_uninit_vcpu;
> > +		return -ENOMEM;
> >  
> >  	vcpu->arch.sie_block = &sie_page->sie_block;
> >  	vcpu->arch.sie_block->itdba = (unsigned long) &sie_page->itdb;
> > @@ -3087,15 +3070,11 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
> >  		 vcpu->arch.sie_block);
> >  	trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);
> >  
> > -	return vcpu;
> > +	return 0;
> > +
> >  out_free_sie_block:
> >  	free_page((unsigned long)(vcpu->arch.sie_block));
> > -out_uninit_vcpu:
> > -	kvm_vcpu_uninit(vcpu);
> > -out_free_cpu:
> > -	kmem_cache_free(kvm_vcpu_cache, vcpu);
> > -out:
> > -	return ERR_PTR(rc);
> > +	return rc;
> 
> This is getting a bit hard to follow across the patches, but I think rc
> is now only set for ucontrol guests. So this looks correct right now,
> but feels a bit brittle... should we maybe init rc to 0 and always
> return rc instead?

Yes, but only for a few patches until kvm_s390_vcpu_setup() is introduced,
at which point @rc is unconditionally set at the end.

        rc = kvm_s390_vcpu_setup(vcpu);
        if (rc)
                goto out_free_ucontrol_gmap;
        return 0;

My personal preference is to use "return 0;" when the return is known to
be zero as it makes the success path obvious at a glance.  I also didn't
want to intialize @rc at he beginning because then the sie_page allocation
would look a bit funky:

	int rc = 0;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return -ENOMEM;


An alternative would be to init @rc to -ENOMEM:

        int rc = -ENOMEM;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return rc;

This would be my preference if you'd prefer to init @rc right away,
especially if  __kvm_ucontrol_vcpu_init() is open coded here (discussion
in patch 35, "KVM: s390: Manually invoke vcpu setup during 
kvm_arch_vcpu_create()", e.g.:

        int rc = -ENOMEM;

        BUILD_BUG_ON(sizeof(struct sie_page) != 4096);
        sie_page = (struct sie_page *) get_zeroed_page(GFP_KERNEL);
        if (!sie_page)
                return rc;

	...

        if (kvm_is_ucontrol(vcpu->kvm)) {
                vcpu->arch.gmap = gmap_create(current->mm, -1UL);
                if (!vcpu->arch.gmap)
                        goto out_free_sie_block;
                vcpu->arch.gmap->private = vcpu->kvm;
        }

        VM_EVENT(kvm, 3, "create cpu %d at 0x%pK, sie block at 0x%pK", id, vcpu,
                 vcpu->arch.sie_block);
        trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);

        rc = kvm_s390_vcpu_setup(vcpu);
        if (rc)
                goto out_free_ucontrol_gmap;
        return 0;

out_free_ucontrol_gmap:
        if (kvm_is_ucontrol(vcpu->kvm))
                gmap_remove(vcpu->arch.gmap);
out_free_sie_block:
        free_page((unsigned long)(vcpu->arch.sie_block));
        return rc;

  reply	other threads:[~2019-12-20 15:53 UTC|newest]

Thread overview: 300+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-18 21:54 [PATCH v2 00/45] KVM: Refactor vCPU creation Sean Christopherson
2019-12-18 21:54 ` Sean Christopherson
2019-12-18 21:54 ` Sean Christopherson
2019-12-18 21:54 ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 01/45] KVM: PPC: Book3S HV: Uninit vCPU if vcore creation fails Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2020-01-20  2:57   ` Paul Mackerras
2020-01-20  2:57     ` Paul Mackerras
2020-01-20  2:57     ` Paul Mackerras
2020-01-20  2:57     ` Paul Mackerras
2019-12-18 21:54 ` [PATCH v2 02/45] KVM: PPC: Book3S PR: Free shared page if mmu initialization fails Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2020-01-20  3:00   ` Paul Mackerras
2020-01-20  3:00     ` Paul Mackerras
2020-01-20  3:00     ` Paul Mackerras
2020-01-20  3:00     ` Paul Mackerras
2019-12-18 21:54 ` [PATCH v2 03/45] KVM: x86: Free wbinvd_dirty_mask if vCPU creation fails Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 04/45] KVM: VMX: Allocate VPID after initializing VCPU Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 05/45] KVM: VMX: Use direct vcpu pointer during vCPU create/free Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 06/45] KVM: SVM: " Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 07/45] KVM: x86: Allocate vcpu struct in common x86 code Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 08/45] KVM: x86: Move FPU allocation to " Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 09/45] KVM: x86: Move allocation of pio_data page down a few lines Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 10/45] KVM: x86: Move kvm_vcpu_init() invocation to common code Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 11/45] KVM: PPC: e500mc: Add build-time assert that vcpu is at offset 0 Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 12/45] KVM: PPC: Allocate vcpu struct in common PPC code Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2020-01-20  4:04   ` Paul Mackerras
2020-01-20  4:04     ` Paul Mackerras
2020-01-20  4:04     ` Paul Mackerras
2020-01-20  4:04     ` Paul Mackerras
2020-01-21 11:05     ` Paolo Bonzini
2020-01-21 11:05       ` Paolo Bonzini
2020-01-21 11:05       ` Paolo Bonzini
2020-01-21 11:05       ` Paolo Bonzini
2020-01-21 23:18       ` Sean Christopherson
2020-01-21 23:18         ` Sean Christopherson
2020-01-21 23:18         ` Sean Christopherson
2020-01-21 23:18         ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 13/45] KVM: PPC: Book3S PR: Allocate book3s and shadow vcpu after common init Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54 ` [PATCH v2 14/45] KVM: PPC: e500mc: Move reset of oldpir below call to kvm_vcpu_init() Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:54   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 15/45] KVM: PPC: Move kvm_vcpu_init() invocation to common code Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2020-01-20  3:34   ` Paul Mackerras
2020-01-20  3:34     ` Paul Mackerras
2020-01-20  3:34     ` Paul Mackerras
2020-01-20  3:34     ` Paul Mackerras
2020-01-21 11:08     ` Paolo Bonzini
2020-01-21 11:08       ` Paolo Bonzini
2020-01-21 11:08       ` Paolo Bonzini
2020-01-21 11:08       ` Paolo Bonzini
2020-01-20  3:56   ` Paul Mackerras
2020-01-20  3:56     ` Paul Mackerras
2020-01-20  3:56     ` Paul Mackerras
2020-01-20  3:56     ` Paul Mackerras
2019-12-18 21:55 ` [PATCH v2 16/45] KVM: MIPS: Use kvm_vcpu_cache to allocate vCPUs Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 17/45] KVM: MIPS: Drop kvm_arch_vcpu_free() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 18/45] KVM: PPC: " Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 19/45] KVM: arm: " Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 20/45] KVM: x86: Remove spurious kvm_mmu_unload() from vcpu destruction path Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 21/45] KVM: x86: Remove spurious clearing of async #PF MSR Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 22/45] KVM: x86: Drop kvm_arch_vcpu_free() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 23/45] KVM: Remove kvm_arch_vcpu_free() declaration Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 24/45] KVM: Add kvm_arch_vcpu_precreate() to handle pre-allocation issues Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-19 19:28   ` Cornelia Huck
2019-12-19 19:28     ` Cornelia Huck
2019-12-19 19:28     ` Cornelia Huck
2019-12-19 19:28     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 25/45] KVM: s390: Move guts of kvm_arch_vcpu_init() into kvm_arch_vcpu_create() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-19 19:39   ` Cornelia Huck
2019-12-19 19:39     ` Cornelia Huck
2019-12-19 19:39     ` Cornelia Huck
2019-12-19 19:39     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 26/45] KVM: s390: Invoke kvm_vcpu_init() before allocating sie_page Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-19 19:47   ` Cornelia Huck
2019-12-19 19:47     ` Cornelia Huck
2019-12-19 19:47     ` Cornelia Huck
2019-12-19 19:47     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 27/45] KVM: MIPS: Invoke kvm_vcpu_uninit() immediately prior to freeing vcpu Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 28/45] KVM: x86: " Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 29/45] KVM: Introduce kvm_vcpu_destroy() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-19 19:51   ` Cornelia Huck
2019-12-19 19:51     ` Cornelia Huck
2019-12-19 19:51     ` Cornelia Huck
2019-12-19 19:51     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 30/45] KVM: Move vcpu alloc and init invocation to common code Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-20  9:33   ` Cornelia Huck
2019-12-20  9:33     ` Cornelia Huck
2019-12-20  9:33     ` Cornelia Huck
2019-12-20  9:33     ` Cornelia Huck
2019-12-20 15:53     ` Sean Christopherson [this message]
2019-12-20 15:53       ` Sean Christopherson
2019-12-20 15:53       ` Sean Christopherson
2019-12-20 15:53       ` Sean Christopherson
2019-12-20 16:00       ` Cornelia Huck
2019-12-20 16:00         ` Cornelia Huck
2019-12-20 16:00         ` Cornelia Huck
2019-12-20 16:00         ` Cornelia Huck
2020-01-26  3:02   ` Guenter Roeck
2020-01-26  3:02     ` Guenter Roeck
2020-01-26  3:02     ` Guenter Roeck
2020-01-26  3:02     ` Guenter Roeck
2019-12-18 21:55 ` [PATCH v2 31/45] KVM: Unexport kvm_vcpu_cache and kvm_vcpu_{un}init() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-20  9:39   ` Cornelia Huck
2019-12-20  9:39     ` Cornelia Huck
2019-12-20  9:39     ` Cornelia Huck
2019-12-20  9:39     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 32/45] KVM: Move initialization of preempt notifier to kvm_vcpu_init() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-20  9:50   ` Cornelia Huck
2019-12-20  9:50     ` Cornelia Huck
2019-12-20  9:50     ` Cornelia Huck
2019-12-20  9:50     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 33/45] KVM: x86: Move guts of kvm_arch_vcpu_setup() into kvm_arch_vcpu_create() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 34/45] KVM: MIPS: Move .vcpu_setup() call to kvm_arch_vcpu_create() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 35/45] KVM: s390: Manually invoke vcpu setup during kvm_arch_vcpu_create() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-20 10:04   ` Cornelia Huck
2019-12-20 10:04     ` Cornelia Huck
2019-12-20 10:04     ` Cornelia Huck
2019-12-20 10:04     ` Cornelia Huck
2019-12-20 15:56     ` Sean Christopherson
2019-12-20 15:56       ` Sean Christopherson
2019-12-20 15:56       ` Sean Christopherson
2019-12-20 15:56       ` Sean Christopherson
2019-12-20 16:02       ` Cornelia Huck
2019-12-20 16:02         ` Cornelia Huck
2019-12-20 16:02         ` Cornelia Huck
2019-12-20 16:02         ` Cornelia Huck
2019-12-20 16:22         ` Sean Christopherson
2019-12-20 16:22           ` Sean Christopherson
2019-12-20 16:22           ` Sean Christopherson
2019-12-20 16:22           ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 36/45] KVM: PPC: BookE: Setup vcpu during kvmppc_core_vcpu_create() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 37/45] KVM: Drop kvm_arch_vcpu_setup() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-20 10:06   ` Cornelia Huck
2019-12-20 10:06     ` Cornelia Huck
2019-12-20 10:06     ` Cornelia Huck
2019-12-20 10:06     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 38/45] KVM: x86: Move all vcpu init code into kvm_arch_vcpu_create() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 39/45] KVM: MIPS: " Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 40/45] KVM: ARM: " Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 41/45] KVM: PPC: " Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2020-01-20  3:46   ` Paul Mackerras
2020-01-20  3:46     ` Paul Mackerras
2020-01-20  3:46     ` Paul Mackerras
2020-01-20  3:46     ` Paul Mackerras
2020-01-21 11:12     ` Paolo Bonzini
2020-01-21 11:12       ` Paolo Bonzini
2020-01-21 11:12       ` Paolo Bonzini
2020-01-21 11:12       ` Paolo Bonzini
2019-12-18 21:55 ` [PATCH v2 42/45] KVM: arm64: Free sve_state via arm specific hook Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55 ` [PATCH v2 43/45] KVM: Drop kvm_arch_vcpu_init() and kvm_arch_vcpu_uninit() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-20 10:13   ` Cornelia Huck
2019-12-20 10:13     ` Cornelia Huck
2019-12-20 10:13     ` Cornelia Huck
2019-12-20 10:13     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 44/45] KVM: Move putting of vcpu->pid to kvm_vcpu_destroy() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-20 10:16   ` Cornelia Huck
2019-12-20 10:16     ` Cornelia Huck
2019-12-20 10:16     ` Cornelia Huck
2019-12-20 10:16     ` Cornelia Huck
2019-12-18 21:55 ` [PATCH v2 45/45] KVM: Move vcpu->run page allocation out of kvm_vcpu_init() Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-18 21:55   ` Sean Christopherson
2019-12-20 10:30   ` Cornelia Huck
2019-12-20 10:30     ` Cornelia Huck
2019-12-20 10:30     ` Cornelia Huck
2019-12-20 10:30     ` Cornelia Huck
2020-01-18 20:01 ` [PATCH v2 00/45] KVM: Refactor vCPU creation Paolo Bonzini
2020-01-18 20:01   ` Paolo Bonzini
2020-01-18 20:01   ` Paolo Bonzini
2020-01-18 20:01   ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191220155330.GA21021@linux.intel.com \
    --to=sean.j.christopherson@intel.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=groug@kaod.org \
    --cc=james.morse@arm.com \
    --cc=jhogan@kernel.org \
    --cc=jmattson@google.com \
    --cc=joro@8bytes.org \
    --cc=julien.thierry.kdev@gmail.com \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=paulus@ozlabs.org \
    --cc=pbonzini@redhat.com \
    --cc=suzuki.poulose@arm.com \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.