On Wed, 27 Mar 2013 15:30:30 +0100 Andreas Färber <afaer...@suse.de> wrote:
> Am 27.03.2013 14:27, schrieb Igor Mammedov: > > On Wed, 27 Mar 2013 13:17:45 +0100 > > Andreas Färber <afaer...@suse.de> wrote: > >>> Then I should move following parts to superclass: > >>> > >>> if (dev->hotplugged) { > >>> cpu_synchronize_post_init(env); > >>> resume_vcpu(CPU(cpu)); > >>> } > >>> > >>> because in case of KVM we should make sure that CPU in sane state before > >>> allowing CPU to become run-able. > >> > >> 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. :) > > > > Would something like this be acceptable? > > --- > > From 15502168009b7b5ae2b46d854c461e5ad031cdc6 Mon Sep 17 00:00:00 2001 > > From: Igor Mammedov <imamm...@redhat.com> > > Date: Wed, 27 Mar 2013 14:21:20 +0100 > > Subject: [PATCH] cpu: Pass CPUState to *cpu_synchronize_post*() > > > > Signed-off-by: Igor Mammedov <imamm...@redhat.com> > > --- > > cpus.c | 4 ++-- > > include/sysemu/kvm.h | 12 ++++++------ > > kvm-all.c | 8 ++------ > > kvm-stub.c | 4 ++-- > > 4 files changed, 12 insertions(+), 16 deletions(-) > > Looks good so far, did you grep for further occurrences? yep, I re-factored every *cpu_synchronize_post*() call, but considering an intention to call cpu_synchronize_post_init() from qom/cpu.c this patch won't work nice since it will pull with itself kvm-stub.o to *-user target. Due to qom/cpu.c is built only once for both softmmu and *-user targets, I consider to move cpu_synchronize_post_init() & cpu_synchronize_post_reset() from include/sysemu/kvm.h into include/sysemu/cpus.h with definition moved into cpus.c + stubs for cpu_synchronize_post_init() &resume_vcpu() in libqemustub for *-user target. Adding stubs to libqemustub could be avoided if resume_vcpu() and cpu_synchronize_post_init() are called from x86_cpu_realizefn() at the cost of some ifdeffenery in include/sysemu/cpus.h though. But moving resume_vcpu() & cpu_synchronize_post_init() into qom/cpu.c looks like good candidate for being reused by other targets. Paolo, would it be acceptable to add resume_vcpu() & cpu_synchronize_post_init() stubs into libqemustub? > Andreas >