All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: 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>
Cc: 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>,
	Cornelia Huck <cohuck@redhat.com>,
	Sean Christopherson <sean.j.christopherson@intel.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: [PATCH v2 10/45] KVM: x86: Move kvm_vcpu_init() invocation to common code
Date: Wed, 18 Dec 2019 13:54:55 -0800	[thread overview]
Message-ID: <20191218215530.2280-11-sean.j.christopherson@intel.com> (raw)
In-Reply-To: <20191218215530.2280-1-sean.j.christopherson@intel.com>

Move the kvm_cpu_{un}init() calls to common x86 code as an intermediate
step to removing kvm_cpu_{un}init() altogether.

Note, VMX'x alloc_apic_access_page() and init_rmode_identity_map() are
per-VM allocations and are intentionally kept if vCPU creation fails.
They are freed by kvm_arch_destroy_vm().

No functional change intended.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
 arch/x86/include/asm/kvm_host.h |  2 +-
 arch/x86/kvm/svm.c              | 13 +++----------
 arch/x86/kvm/vmx/vmx.c          | 19 ++++++-------------
 arch/x86/kvm/x86.c              | 20 +++++++++++++++-----
 4 files changed, 25 insertions(+), 29 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index dbc2aa055942..deddd6fb198c 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1045,7 +1045,7 @@ struct kvm_x86_ops {
 	void (*vm_destroy)(struct kvm *kvm);
 
 	/* Create, but do not attach this VCPU */
-	int (*vcpu_create)(struct kvm *kvm, struct kvm_vcpu *vcpu, unsigned id);
+	int (*vcpu_create)(struct kvm_vcpu *vcpu);
 	void (*vcpu_free)(struct kvm_vcpu *vcpu);
 	void (*vcpu_reset)(struct kvm_vcpu *vcpu, bool init_event);
 
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 1a5ead23e84b..84d1a28e99d6 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -2144,8 +2144,7 @@ static int avic_init_vcpu(struct vcpu_svm *svm)
 	return ret;
 }
 
-static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
-			   unsigned int id)
+static int svm_create_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_svm *svm;
 	struct page *page;
@@ -2157,14 +2156,10 @@ static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	BUILD_BUG_ON(offsetof(struct vcpu_svm, vcpu) != 0);
 	svm = to_svm(vcpu);
 
-	err = kvm_vcpu_init(vcpu, kvm, id);
-	if (err)
-		return err;
-
 	err = -ENOMEM;
 	page = alloc_page(GFP_KERNEL_ACCOUNT);
 	if (!page)
-		goto uninit;
+		goto out;
 
 	msrpm_pages = alloc_pages(GFP_KERNEL_ACCOUNT, MSRPM_ALLOC_ORDER);
 	if (!msrpm_pages)
@@ -2213,8 +2208,7 @@ static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	__free_pages(msrpm_pages, MSRPM_ALLOC_ORDER);
 free_page1:
 	__free_page(page);
-uninit:
-	kvm_vcpu_uninit(vcpu);
+out:
 	return err;
 }
 
@@ -2241,7 +2235,6 @@ static void svm_free_vcpu(struct kvm_vcpu *vcpu)
 	__free_pages(virt_to_page(svm->msrpm), MSRPM_ALLOC_ORDER);
 	__free_page(virt_to_page(svm->nested.hsave));
 	__free_pages(virt_to_page(svm->nested.msrpm), MSRPM_ALLOC_ORDER);
-	kvm_vcpu_uninit(vcpu);
 }
 
 static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index fd688b16e688..eea940330dd3 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -6672,11 +6672,9 @@ static void vmx_free_vcpu(struct kvm_vcpu *vcpu)
 	free_vpid(vmx->vpid);
 	nested_vmx_free_vcpu(vcpu);
 	free_loaded_vmcs(vmx->loaded_vmcs);
-	kvm_vcpu_uninit(vcpu);
 }
 
-static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
-			   unsigned int id)
+static int vmx_create_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_vmx *vmx;
 	unsigned long *msr_bitmap;
@@ -6685,10 +6683,6 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	BUILD_BUG_ON(offsetof(struct vcpu_vmx, vcpu) != 0);
 	vmx = to_vmx(vcpu);
 
-	err = kvm_vcpu_init(vcpu, kvm, id);
-	if (err)
-		return err;
-
 	err = -ENOMEM;
 
 	vmx->vpid = allocate_vpid();
@@ -6702,7 +6696,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	if (enable_pml) {
 		vmx->pml_pg = alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);
 		if (!vmx->pml_pg)
-			goto uninit_vcpu;
+			goto free_vpid;
 	}
 
 	BUILD_BUG_ON(ARRAY_SIZE(vmx_msr_index) != NR_SHARED_MSRS);
@@ -6747,7 +6741,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_CS, MSR_TYPE_RW);
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_ESP, MSR_TYPE_RW);
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_EIP, MSR_TYPE_RW);
-	if (kvm_cstate_in_guest(kvm)) {
+	if (kvm_cstate_in_guest(vcpu->kvm)) {
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C1_RES, MSR_TYPE_R);
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C3_RESIDENCY, MSR_TYPE_R);
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C6_RESIDENCY, MSR_TYPE_R);
@@ -6763,13 +6757,13 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmx_vcpu_put(vcpu);
 	put_cpu();
 	if (cpu_need_virtualize_apic_accesses(vcpu)) {
-		err = alloc_apic_access_page(kvm);
+		err = alloc_apic_access_page(vcpu->kvm);
 		if (err)
 			goto free_vmcs;
 	}
 
 	if (enable_ept && !enable_unrestricted_guest) {
-		err = init_rmode_identity_map(kvm);
+		err = init_rmode_identity_map(vcpu->kvm);
 		if (err)
 			goto free_vmcs;
 	}
@@ -6801,8 +6795,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	free_loaded_vmcs(vmx->loaded_vmcs);
 free_pml:
 	vmx_destroy_pml_buffer(vmx);
-uninit_vcpu:
-	kvm_vcpu_uninit(vcpu);
+free_vpid:
 	free_vpid(vmx->vpid);
 	return err;
 }
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b3e367963b08..8973037eb2fa 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -9095,6 +9095,8 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu)
 
 	kvm_x86_ops->vcpu_free(vcpu);
 
+	kvm_vcpu_uninit(vcpu);
+
 	free_cpumask_var(vcpu->arch.wbinvd_dirty_mask);
 	kmem_cache_free(x86_fpu_cache, vcpu->arch.user_fpu);
 	kmem_cache_free(x86_fpu_cache, vcpu->arch.guest_fpu);
@@ -9116,12 +9118,20 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
 	if (!vcpu)
 		return ERR_PTR(-ENOMEM);
 
-	r = kvm_x86_ops->vcpu_create(kvm, vcpu, id);
-	if (r) {
-		kmem_cache_free(kvm_vcpu_cache, vcpu);
-		return ERR_PTR(r);
-	}
+	r = kvm_vcpu_init(vcpu, kvm, id);
+	if (r)
+		goto free_vcpu;
+
+	r = kvm_x86_ops->vcpu_create(vcpu);
+	if (r)
+		goto uninit_vcpu;
 	return vcpu;
+
+uninit_vcpu:
+	kvm_vcpu_uninit(vcpu);
+free_vcpu:
+	kmem_cache_free(kvm_vcpu_cache, vcpu);
+	return ERR_PTR(r);
 }
 
 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
-- 
2.24.1


WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: 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>
Cc: kvm-ppc@vger.kernel.org, Wanpeng Li <wanpengli@tencent.com>,
	kvm@vger.kernel.org, David Hildenbrand <david@redhat.com>,
	Joerg Roedel <joro@8bytes.org>, Cornelia Huck <cohuck@redhat.com>,
	linux-mips@vger.kernel.org,
	Sean Christopherson <sean.j.christopherson@intel.com>,
	linux-kernel@vger.kernel.org, Greg Kurz <groug@kaod.org>,
	linux-arm-kernel@lists.infradead.org,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	kvmarm@lists.cs.columbia.edu, Jim Mattson <jmattson@google.com>
Subject: [PATCH v2 10/45] KVM: x86: Move kvm_vcpu_init() invocation to common code
Date: Wed, 18 Dec 2019 13:54:55 -0800	[thread overview]
Message-ID: <20191218215530.2280-11-sean.j.christopherson@intel.com> (raw)
In-Reply-To: <20191218215530.2280-1-sean.j.christopherson@intel.com>

Move the kvm_cpu_{un}init() calls to common x86 code as an intermediate
step to removing kvm_cpu_{un}init() altogether.

Note, VMX'x alloc_apic_access_page() and init_rmode_identity_map() are
per-VM allocations and are intentionally kept if vCPU creation fails.
They are freed by kvm_arch_destroy_vm().

No functional change intended.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
 arch/x86/include/asm/kvm_host.h |  2 +-
 arch/x86/kvm/svm.c              | 13 +++----------
 arch/x86/kvm/vmx/vmx.c          | 19 ++++++-------------
 arch/x86/kvm/x86.c              | 20 +++++++++++++++-----
 4 files changed, 25 insertions(+), 29 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index dbc2aa055942..deddd6fb198c 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1045,7 +1045,7 @@ struct kvm_x86_ops {
 	void (*vm_destroy)(struct kvm *kvm);
 
 	/* Create, but do not attach this VCPU */
-	int (*vcpu_create)(struct kvm *kvm, struct kvm_vcpu *vcpu, unsigned id);
+	int (*vcpu_create)(struct kvm_vcpu *vcpu);
 	void (*vcpu_free)(struct kvm_vcpu *vcpu);
 	void (*vcpu_reset)(struct kvm_vcpu *vcpu, bool init_event);
 
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 1a5ead23e84b..84d1a28e99d6 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -2144,8 +2144,7 @@ static int avic_init_vcpu(struct vcpu_svm *svm)
 	return ret;
 }
 
-static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
-			   unsigned int id)
+static int svm_create_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_svm *svm;
 	struct page *page;
@@ -2157,14 +2156,10 @@ static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	BUILD_BUG_ON(offsetof(struct vcpu_svm, vcpu) != 0);
 	svm = to_svm(vcpu);
 
-	err = kvm_vcpu_init(vcpu, kvm, id);
-	if (err)
-		return err;
-
 	err = -ENOMEM;
 	page = alloc_page(GFP_KERNEL_ACCOUNT);
 	if (!page)
-		goto uninit;
+		goto out;
 
 	msrpm_pages = alloc_pages(GFP_KERNEL_ACCOUNT, MSRPM_ALLOC_ORDER);
 	if (!msrpm_pages)
@@ -2213,8 +2208,7 @@ static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	__free_pages(msrpm_pages, MSRPM_ALLOC_ORDER);
 free_page1:
 	__free_page(page);
-uninit:
-	kvm_vcpu_uninit(vcpu);
+out:
 	return err;
 }
 
@@ -2241,7 +2235,6 @@ static void svm_free_vcpu(struct kvm_vcpu *vcpu)
 	__free_pages(virt_to_page(svm->msrpm), MSRPM_ALLOC_ORDER);
 	__free_page(virt_to_page(svm->nested.hsave));
 	__free_pages(virt_to_page(svm->nested.msrpm), MSRPM_ALLOC_ORDER);
-	kvm_vcpu_uninit(vcpu);
 }
 
 static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index fd688b16e688..eea940330dd3 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -6672,11 +6672,9 @@ static void vmx_free_vcpu(struct kvm_vcpu *vcpu)
 	free_vpid(vmx->vpid);
 	nested_vmx_free_vcpu(vcpu);
 	free_loaded_vmcs(vmx->loaded_vmcs);
-	kvm_vcpu_uninit(vcpu);
 }
 
-static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
-			   unsigned int id)
+static int vmx_create_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_vmx *vmx;
 	unsigned long *msr_bitmap;
@@ -6685,10 +6683,6 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	BUILD_BUG_ON(offsetof(struct vcpu_vmx, vcpu) != 0);
 	vmx = to_vmx(vcpu);
 
-	err = kvm_vcpu_init(vcpu, kvm, id);
-	if (err)
-		return err;
-
 	err = -ENOMEM;
 
 	vmx->vpid = allocate_vpid();
@@ -6702,7 +6696,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	if (enable_pml) {
 		vmx->pml_pg = alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);
 		if (!vmx->pml_pg)
-			goto uninit_vcpu;
+			goto free_vpid;
 	}
 
 	BUILD_BUG_ON(ARRAY_SIZE(vmx_msr_index) != NR_SHARED_MSRS);
@@ -6747,7 +6741,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_CS, MSR_TYPE_RW);
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_ESP, MSR_TYPE_RW);
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_EIP, MSR_TYPE_RW);
-	if (kvm_cstate_in_guest(kvm)) {
+	if (kvm_cstate_in_guest(vcpu->kvm)) {
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C1_RES, MSR_TYPE_R);
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C3_RESIDENCY, MSR_TYPE_R);
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C6_RESIDENCY, MSR_TYPE_R);
@@ -6763,13 +6757,13 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmx_vcpu_put(vcpu);
 	put_cpu();
 	if (cpu_need_virtualize_apic_accesses(vcpu)) {
-		err = alloc_apic_access_page(kvm);
+		err = alloc_apic_access_page(vcpu->kvm);
 		if (err)
 			goto free_vmcs;
 	}
 
 	if (enable_ept && !enable_unrestricted_guest) {
-		err = init_rmode_identity_map(kvm);
+		err = init_rmode_identity_map(vcpu->kvm);
 		if (err)
 			goto free_vmcs;
 	}
@@ -6801,8 +6795,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	free_loaded_vmcs(vmx->loaded_vmcs);
 free_pml:
 	vmx_destroy_pml_buffer(vmx);
-uninit_vcpu:
-	kvm_vcpu_uninit(vcpu);
+free_vpid:
 	free_vpid(vmx->vpid);
 	return err;
 }
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b3e367963b08..8973037eb2fa 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -9095,6 +9095,8 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu)
 
 	kvm_x86_ops->vcpu_free(vcpu);
 
+	kvm_vcpu_uninit(vcpu);
+
 	free_cpumask_var(vcpu->arch.wbinvd_dirty_mask);
 	kmem_cache_free(x86_fpu_cache, vcpu->arch.user_fpu);
 	kmem_cache_free(x86_fpu_cache, vcpu->arch.guest_fpu);
@@ -9116,12 +9118,20 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
 	if (!vcpu)
 		return ERR_PTR(-ENOMEM);
 
-	r = kvm_x86_ops->vcpu_create(kvm, vcpu, id);
-	if (r) {
-		kmem_cache_free(kvm_vcpu_cache, vcpu);
-		return ERR_PTR(r);
-	}
+	r = kvm_vcpu_init(vcpu, kvm, id);
+	if (r)
+		goto free_vcpu;
+
+	r = kvm_x86_ops->vcpu_create(vcpu);
+	if (r)
+		goto uninit_vcpu;
 	return vcpu;
+
+uninit_vcpu:
+	kvm_vcpu_uninit(vcpu);
+free_vcpu:
+	kmem_cache_free(kvm_vcpu_cache, vcpu);
+	return ERR_PTR(r);
 }
 
 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
-- 
2.24.1

_______________________________________________
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: 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>
Cc: kvm-ppc@vger.kernel.org, Wanpeng Li <wanpengli@tencent.com>,
	kvm@vger.kernel.org, David Hildenbrand <david@redhat.com>,
	Joerg Roedel <joro@8bytes.org>, Cornelia Huck <cohuck@redhat.com>,
	linux-mips@vger.kernel.org,
	Sean Christopherson <sean.j.christopherson@intel.com>,
	linux-kernel@vger.kernel.org, Greg Kurz <groug@kaod.org>,
	James Morse <james.morse@arm.com>,
	linux-arm-kernel@lists.infradead.org,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	kvmarm@lists.cs.columbia.edu,
	Julien Thierry <julien.thierry.kdev@gmail.com>,
	Jim Mattson <jmattson@google.com>
Subject: [PATCH v2 10/45] KVM: x86: Move kvm_vcpu_init() invocation to common code
Date: Wed, 18 Dec 2019 13:54:55 -0800	[thread overview]
Message-ID: <20191218215530.2280-11-sean.j.christopherson@intel.com> (raw)
In-Reply-To: <20191218215530.2280-1-sean.j.christopherson@intel.com>

Move the kvm_cpu_{un}init() calls to common x86 code as an intermediate
step to removing kvm_cpu_{un}init() altogether.

Note, VMX'x alloc_apic_access_page() and init_rmode_identity_map() are
per-VM allocations and are intentionally kept if vCPU creation fails.
They are freed by kvm_arch_destroy_vm().

No functional change intended.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
 arch/x86/include/asm/kvm_host.h |  2 +-
 arch/x86/kvm/svm.c              | 13 +++----------
 arch/x86/kvm/vmx/vmx.c          | 19 ++++++-------------
 arch/x86/kvm/x86.c              | 20 +++++++++++++++-----
 4 files changed, 25 insertions(+), 29 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index dbc2aa055942..deddd6fb198c 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1045,7 +1045,7 @@ struct kvm_x86_ops {
 	void (*vm_destroy)(struct kvm *kvm);
 
 	/* Create, but do not attach this VCPU */
-	int (*vcpu_create)(struct kvm *kvm, struct kvm_vcpu *vcpu, unsigned id);
+	int (*vcpu_create)(struct kvm_vcpu *vcpu);
 	void (*vcpu_free)(struct kvm_vcpu *vcpu);
 	void (*vcpu_reset)(struct kvm_vcpu *vcpu, bool init_event);
 
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 1a5ead23e84b..84d1a28e99d6 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -2144,8 +2144,7 @@ static int avic_init_vcpu(struct vcpu_svm *svm)
 	return ret;
 }
 
-static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
-			   unsigned int id)
+static int svm_create_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_svm *svm;
 	struct page *page;
@@ -2157,14 +2156,10 @@ static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	BUILD_BUG_ON(offsetof(struct vcpu_svm, vcpu) != 0);
 	svm = to_svm(vcpu);
 
-	err = kvm_vcpu_init(vcpu, kvm, id);
-	if (err)
-		return err;
-
 	err = -ENOMEM;
 	page = alloc_page(GFP_KERNEL_ACCOUNT);
 	if (!page)
-		goto uninit;
+		goto out;
 
 	msrpm_pages = alloc_pages(GFP_KERNEL_ACCOUNT, MSRPM_ALLOC_ORDER);
 	if (!msrpm_pages)
@@ -2213,8 +2208,7 @@ static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	__free_pages(msrpm_pages, MSRPM_ALLOC_ORDER);
 free_page1:
 	__free_page(page);
-uninit:
-	kvm_vcpu_uninit(vcpu);
+out:
 	return err;
 }
 
@@ -2241,7 +2235,6 @@ static void svm_free_vcpu(struct kvm_vcpu *vcpu)
 	__free_pages(virt_to_page(svm->msrpm), MSRPM_ALLOC_ORDER);
 	__free_page(virt_to_page(svm->nested.hsave));
 	__free_pages(virt_to_page(svm->nested.msrpm), MSRPM_ALLOC_ORDER);
-	kvm_vcpu_uninit(vcpu);
 }
 
 static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index fd688b16e688..eea940330dd3 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -6672,11 +6672,9 @@ static void vmx_free_vcpu(struct kvm_vcpu *vcpu)
 	free_vpid(vmx->vpid);
 	nested_vmx_free_vcpu(vcpu);
 	free_loaded_vmcs(vmx->loaded_vmcs);
-	kvm_vcpu_uninit(vcpu);
 }
 
-static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
-			   unsigned int id)
+static int vmx_create_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_vmx *vmx;
 	unsigned long *msr_bitmap;
@@ -6685,10 +6683,6 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	BUILD_BUG_ON(offsetof(struct vcpu_vmx, vcpu) != 0);
 	vmx = to_vmx(vcpu);
 
-	err = kvm_vcpu_init(vcpu, kvm, id);
-	if (err)
-		return err;
-
 	err = -ENOMEM;
 
 	vmx->vpid = allocate_vpid();
@@ -6702,7 +6696,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	if (enable_pml) {
 		vmx->pml_pg = alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);
 		if (!vmx->pml_pg)
-			goto uninit_vcpu;
+			goto free_vpid;
 	}
 
 	BUILD_BUG_ON(ARRAY_SIZE(vmx_msr_index) != NR_SHARED_MSRS);
@@ -6747,7 +6741,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_CS, MSR_TYPE_RW);
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_ESP, MSR_TYPE_RW);
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_EIP, MSR_TYPE_RW);
-	if (kvm_cstate_in_guest(kvm)) {
+	if (kvm_cstate_in_guest(vcpu->kvm)) {
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C1_RES, MSR_TYPE_R);
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C3_RESIDENCY, MSR_TYPE_R);
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C6_RESIDENCY, MSR_TYPE_R);
@@ -6763,13 +6757,13 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmx_vcpu_put(vcpu);
 	put_cpu();
 	if (cpu_need_virtualize_apic_accesses(vcpu)) {
-		err = alloc_apic_access_page(kvm);
+		err = alloc_apic_access_page(vcpu->kvm);
 		if (err)
 			goto free_vmcs;
 	}
 
 	if (enable_ept && !enable_unrestricted_guest) {
-		err = init_rmode_identity_map(kvm);
+		err = init_rmode_identity_map(vcpu->kvm);
 		if (err)
 			goto free_vmcs;
 	}
@@ -6801,8 +6795,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	free_loaded_vmcs(vmx->loaded_vmcs);
 free_pml:
 	vmx_destroy_pml_buffer(vmx);
-uninit_vcpu:
-	kvm_vcpu_uninit(vcpu);
+free_vpid:
 	free_vpid(vmx->vpid);
 	return err;
 }
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b3e367963b08..8973037eb2fa 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -9095,6 +9095,8 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu)
 
 	kvm_x86_ops->vcpu_free(vcpu);
 
+	kvm_vcpu_uninit(vcpu);
+
 	free_cpumask_var(vcpu->arch.wbinvd_dirty_mask);
 	kmem_cache_free(x86_fpu_cache, vcpu->arch.user_fpu);
 	kmem_cache_free(x86_fpu_cache, vcpu->arch.guest_fpu);
@@ -9116,12 +9118,20 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
 	if (!vcpu)
 		return ERR_PTR(-ENOMEM);
 
-	r = kvm_x86_ops->vcpu_create(kvm, vcpu, id);
-	if (r) {
-		kmem_cache_free(kvm_vcpu_cache, vcpu);
-		return ERR_PTR(r);
-	}
+	r = kvm_vcpu_init(vcpu, kvm, id);
+	if (r)
+		goto free_vcpu;
+
+	r = kvm_x86_ops->vcpu_create(vcpu);
+	if (r)
+		goto uninit_vcpu;
 	return vcpu;
+
+uninit_vcpu:
+	kvm_vcpu_uninit(vcpu);
+free_vcpu:
+	kmem_cache_free(kvm_vcpu_cache, vcpu);
+	return ERR_PTR(r);
 }
 
 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
-- 
2.24.1


_______________________________________________
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: 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>
Cc: 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>,
	Cornelia Huck <cohuck@redhat.com>,
	Sean Christopherson <sean.j.christopherson@intel.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: [PATCH v2 10/45] KVM: x86: Move kvm_vcpu_init() invocation to common code
Date: Wed, 18 Dec 2019 21:54:55 +0000	[thread overview]
Message-ID: <20191218215530.2280-11-sean.j.christopherson@intel.com> (raw)
In-Reply-To: <20191218215530.2280-1-sean.j.christopherson@intel.com>

Move the kvm_cpu_{un}init() calls to common x86 code as an intermediate
step to removing kvm_cpu_{un}init() altogether.

Note, VMX'x alloc_apic_access_page() and init_rmode_identity_map() are
per-VM allocations and are intentionally kept if vCPU creation fails.
They are freed by kvm_arch_destroy_vm().

No functional change intended.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
 arch/x86/include/asm/kvm_host.h |  2 +-
 arch/x86/kvm/svm.c              | 13 +++----------
 arch/x86/kvm/vmx/vmx.c          | 19 ++++++-------------
 arch/x86/kvm/x86.c              | 20 +++++++++++++++-----
 4 files changed, 25 insertions(+), 29 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index dbc2aa055942..deddd6fb198c 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1045,7 +1045,7 @@ struct kvm_x86_ops {
 	void (*vm_destroy)(struct kvm *kvm);
 
 	/* Create, but do not attach this VCPU */
-	int (*vcpu_create)(struct kvm *kvm, struct kvm_vcpu *vcpu, unsigned id);
+	int (*vcpu_create)(struct kvm_vcpu *vcpu);
 	void (*vcpu_free)(struct kvm_vcpu *vcpu);
 	void (*vcpu_reset)(struct kvm_vcpu *vcpu, bool init_event);
 
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 1a5ead23e84b..84d1a28e99d6 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -2144,8 +2144,7 @@ static int avic_init_vcpu(struct vcpu_svm *svm)
 	return ret;
 }
 
-static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
-			   unsigned int id)
+static int svm_create_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_svm *svm;
 	struct page *page;
@@ -2157,14 +2156,10 @@ static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	BUILD_BUG_ON(offsetof(struct vcpu_svm, vcpu) != 0);
 	svm = to_svm(vcpu);
 
-	err = kvm_vcpu_init(vcpu, kvm, id);
-	if (err)
-		return err;
-
 	err = -ENOMEM;
 	page = alloc_page(GFP_KERNEL_ACCOUNT);
 	if (!page)
-		goto uninit;
+		goto out;
 
 	msrpm_pages = alloc_pages(GFP_KERNEL_ACCOUNT, MSRPM_ALLOC_ORDER);
 	if (!msrpm_pages)
@@ -2213,8 +2208,7 @@ static int svm_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	__free_pages(msrpm_pages, MSRPM_ALLOC_ORDER);
 free_page1:
 	__free_page(page);
-uninit:
-	kvm_vcpu_uninit(vcpu);
+out:
 	return err;
 }
 
@@ -2241,7 +2235,6 @@ static void svm_free_vcpu(struct kvm_vcpu *vcpu)
 	__free_pages(virt_to_page(svm->msrpm), MSRPM_ALLOC_ORDER);
 	__free_page(virt_to_page(svm->nested.hsave));
 	__free_pages(virt_to_page(svm->nested.msrpm), MSRPM_ALLOC_ORDER);
-	kvm_vcpu_uninit(vcpu);
 }
 
 static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index fd688b16e688..eea940330dd3 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -6672,11 +6672,9 @@ static void vmx_free_vcpu(struct kvm_vcpu *vcpu)
 	free_vpid(vmx->vpid);
 	nested_vmx_free_vcpu(vcpu);
 	free_loaded_vmcs(vmx->loaded_vmcs);
-	kvm_vcpu_uninit(vcpu);
 }
 
-static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
-			   unsigned int id)
+static int vmx_create_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_vmx *vmx;
 	unsigned long *msr_bitmap;
@@ -6685,10 +6683,6 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	BUILD_BUG_ON(offsetof(struct vcpu_vmx, vcpu) != 0);
 	vmx = to_vmx(vcpu);
 
-	err = kvm_vcpu_init(vcpu, kvm, id);
-	if (err)
-		return err;
-
 	err = -ENOMEM;
 
 	vmx->vpid = allocate_vpid();
@@ -6702,7 +6696,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	if (enable_pml) {
 		vmx->pml_pg = alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);
 		if (!vmx->pml_pg)
-			goto uninit_vcpu;
+			goto free_vpid;
 	}
 
 	BUILD_BUG_ON(ARRAY_SIZE(vmx_msr_index) != NR_SHARED_MSRS);
@@ -6747,7 +6741,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_CS, MSR_TYPE_RW);
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_ESP, MSR_TYPE_RW);
 	vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_SYSENTER_EIP, MSR_TYPE_RW);
-	if (kvm_cstate_in_guest(kvm)) {
+	if (kvm_cstate_in_guest(vcpu->kvm)) {
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C1_RES, MSR_TYPE_R);
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C3_RESIDENCY, MSR_TYPE_R);
 		vmx_disable_intercept_for_msr(msr_bitmap, MSR_CORE_C6_RESIDENCY, MSR_TYPE_R);
@@ -6763,13 +6757,13 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmx_vcpu_put(vcpu);
 	put_cpu();
 	if (cpu_need_virtualize_apic_accesses(vcpu)) {
-		err = alloc_apic_access_page(kvm);
+		err = alloc_apic_access_page(vcpu->kvm);
 		if (err)
 			goto free_vmcs;
 	}
 
 	if (enable_ept && !enable_unrestricted_guest) {
-		err = init_rmode_identity_map(kvm);
+		err = init_rmode_identity_map(vcpu->kvm);
 		if (err)
 			goto free_vmcs;
 	}
@@ -6801,8 +6795,7 @@ static int vmx_create_vcpu(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	free_loaded_vmcs(vmx->loaded_vmcs);
 free_pml:
 	vmx_destroy_pml_buffer(vmx);
-uninit_vcpu:
-	kvm_vcpu_uninit(vcpu);
+free_vpid:
 	free_vpid(vmx->vpid);
 	return err;
 }
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b3e367963b08..8973037eb2fa 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -9095,6 +9095,8 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu)
 
 	kvm_x86_ops->vcpu_free(vcpu);
 
+	kvm_vcpu_uninit(vcpu);
+
 	free_cpumask_var(vcpu->arch.wbinvd_dirty_mask);
 	kmem_cache_free(x86_fpu_cache, vcpu->arch.user_fpu);
 	kmem_cache_free(x86_fpu_cache, vcpu->arch.guest_fpu);
@@ -9116,12 +9118,20 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
 	if (!vcpu)
 		return ERR_PTR(-ENOMEM);
 
-	r = kvm_x86_ops->vcpu_create(kvm, vcpu, id);
-	if (r) {
-		kmem_cache_free(kvm_vcpu_cache, vcpu);
-		return ERR_PTR(r);
-	}
+	r = kvm_vcpu_init(vcpu, kvm, id);
+	if (r)
+		goto free_vcpu;
+
+	r = kvm_x86_ops->vcpu_create(vcpu);
+	if (r)
+		goto uninit_vcpu;
 	return vcpu;
+
+uninit_vcpu:
+	kvm_vcpu_uninit(vcpu);
+free_vcpu:
+	kmem_cache_free(kvm_vcpu_cache, vcpu);
+	return ERR_PTR(r);
 }
 
 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
-- 
2.24.1

  parent reply	other threads:[~2019-12-18 21:58 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 ` Sean Christopherson [this message]
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 ` [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
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=20191218215530.2280-11-sean.j.christopherson@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.