From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:39915) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UKqOm-0003eg-PY for qemu-devel@nongnu.org; Wed, 27 Mar 2013 09:28:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UKqOh-0002Wd-Tj for qemu-devel@nongnu.org; Wed, 27 Mar 2013 09:28:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40659) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UKqOh-0002WT-Mc for qemu-devel@nongnu.org; Wed, 27 Mar 2013 09:28:11 -0400 Date: Wed, 27 Mar 2013 14:27:52 +0100 From: Igor Mammedov Message-ID: <20130327142752.416c3828@nial.usersys.redhat.com> In-Reply-To: <5152E369.6070202@suse.de> References: <1363876125-8264-1-git-send-email-imammedo@redhat.com> <1363876125-8264-6-git-send-email-imammedo@redhat.com> <5152D180.8030800@redhat.com> <20130327131239.3de95ac3@nial.usersys.redhat.com> <5152E369.6070202@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 05/12] target-i386: push hot-plugged VCPU state to KVM and unstop it List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andreas =?ISO-8859-1?B?RuRyYmVy?= Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com, yang.z.zhang@intel.com, ehabkost@redhat.com, mst@redhat.com, jan.kiszka@siemens.com, stefano.stabellini@eu.citrix.com, claudio.fontana@huawei.com, qemu-devel@nongnu.org, aderumier@odiso.com, armbru@redhat.com, blauwirbel@gmail.com, quintela@redhat.com, alex.williamson@redhat.com, kraxel@redhat.com, anthony.perard@citrix.com, Paolo Bonzini , lcapitulino@redhat.com, rth@twiddle.net On Wed, 27 Mar 2013 13:17:45 +0100 Andreas F=E4rber wrote: > > Then I should move following parts to superclass: > >=20 > > if (dev->hotplugged) { > > cpu_synchronize_post_init(env); > > resume_vcpu(CPU(cpu)); > > } > >=20 > > because in case of KVM we should make sure that CPU in sane state before > > allowing CPU to become run-able. >=20 > That's not possible until we change cpu_synchronize_post_init() argument > to CPUState, which is somewhere down my TODO list. Currently I have > mostly flushed my refactorings out, so if you wanted to dive into that, > that would be appreciated. :) >=20 > Andreas Would something like this be acceptable? --- =46rom 15502168009b7b5ae2b46d854c461e5ad031cdc6 Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Wed, 27 Mar 2013 14:21:20 +0100 Subject: [PATCH] cpu: Pass CPUState to *cpu_synchronize_post*() Signed-off-by: Igor Mammedov --- cpus.c | 4 ++-- include/sysemu/kvm.h | 12 ++++++------ kvm-all.c | 8 ++------ kvm-stub.c | 4 ++-- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/cpus.c b/cpus.c index e919dd7..9b9a32f 100644 --- a/cpus.c +++ b/cpus.c @@ -419,7 +419,7 @@ void cpu_synchronize_all_post_reset(void) CPUArchState *cpu; =20 for (cpu =3D first_cpu; cpu; cpu =3D cpu->next_cpu) { - cpu_synchronize_post_reset(cpu); + cpu_synchronize_post_reset(ENV_GET_CPU(cpu)); } } =20 @@ -428,7 +428,7 @@ void cpu_synchronize_all_post_init(void) CPUArchState *cpu; =20 for (cpu =3D first_cpu; cpu; cpu =3D cpu->next_cpu) { - cpu_synchronize_post_init(cpu); + cpu_synchronize_post_init(ENV_GET_CPU(cpu)); } } =20 diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index f2d97b5..495e6f8 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -250,8 +250,8 @@ int kvm_check_extension(KVMState *s, unsigned int exten= sion); uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, uint32_t index, int reg); void kvm_cpu_synchronize_state(CPUArchState *env); -void kvm_cpu_synchronize_post_reset(CPUArchState *env); -void kvm_cpu_synchronize_post_init(CPUArchState *env); +void kvm_cpu_synchronize_post_reset(CPUState *cpu); +void kvm_cpu_synchronize_post_init(CPUState *cpu); =20 /* generic hooks - to be moved/refactored once there are more users */ =20 @@ -262,17 +262,17 @@ static inline void cpu_synchronize_state(CPUArchState= *env) } } =20 -static inline void cpu_synchronize_post_reset(CPUArchState *env) +static inline void cpu_synchronize_post_reset(CPUState *cpu) { if (kvm_enabled()) { - kvm_cpu_synchronize_post_reset(env); + kvm_cpu_synchronize_post_reset(cpu); } } =20 -static inline void cpu_synchronize_post_init(CPUArchState *env) +static inline void cpu_synchronize_post_init(CPUState *cpu) { if (kvm_enabled()) { - kvm_cpu_synchronize_post_init(env); + kvm_cpu_synchronize_post_init(cpu); } } =20 diff --git a/kvm-all.c b/kvm-all.c index 9b433d3..fc4e17c 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -1510,18 +1510,14 @@ void kvm_cpu_synchronize_state(CPUArchState *env) } } =20 -void kvm_cpu_synchronize_post_reset(CPUArchState *env) +void kvm_cpu_synchronize_post_reset(CPUState *cpu) { - CPUState *cpu =3D ENV_GET_CPU(env); - kvm_arch_put_registers(cpu, KVM_PUT_RESET_STATE); cpu->kvm_vcpu_dirty =3D false; } =20 -void kvm_cpu_synchronize_post_init(CPUArchState *env) +void kvm_cpu_synchronize_post_init(CPUState *cpu) { - CPUState *cpu =3D ENV_GET_CPU(env); - kvm_arch_put_registers(cpu, KVM_PUT_FULL_STATE); cpu->kvm_vcpu_dirty =3D false; } diff --git a/kvm-stub.c b/kvm-stub.c index 760aadc..82875dd 100644 --- a/kvm-stub.c +++ b/kvm-stub.c @@ -42,11 +42,11 @@ void kvm_cpu_synchronize_state(CPUArchState *env) { } =20 -void kvm_cpu_synchronize_post_reset(CPUArchState *env) +void kvm_cpu_synchronize_post_reset(CPUState *env) { } =20 -void kvm_cpu_synchronize_post_init(CPUArchState *env) +void kvm_cpu_synchronize_post_init(CPUState *cpu) { } =20 --=20 1.7.11.7