From d33a1810d7f558dd1d486bc84f1cf8f96c982e2d Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Sat, 2 May 2009 00:29:37 +0200 Subject: [PATCH] kvm: Rework VCPU reset Use standard callback with highest order to synchronize VCPU on reset after all device callbacks were execute. This allows to remove the special kvm hook in qemu_system_reset. Signed-off-by: Jan Kiszka Signed-off-by: Anthony Liguori --- kvm-all.c | 8 ++++++++ vl.c | 2 -- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/kvm-all.c b/kvm-all.c index eb4b9eab82..c9f09c7e18 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -22,6 +22,7 @@ #include "qemu-common.h" #include "sysemu.h" +#include "hw/hw.h" #include "gdbstub.h" #include "kvm.h" @@ -376,6 +377,11 @@ int kvm_check_extension(KVMState *s, unsigned int extension) return ret; } +static void kvm_reset_vcpus(void *opaque) +{ + kvm_sync_vcpus(); +} + int kvm_init(int smp_cpus) { KVMState *s; @@ -462,6 +468,8 @@ int kvm_init(int smp_cpus) if (ret < 0) goto err; + qemu_register_reset(kvm_reset_vcpus, INT_MAX, NULL); + kvm_state = s; return 0; diff --git a/vl.c b/vl.c index 9d7ee7adc7..2c1f0e0bd2 100644 --- a/vl.c +++ b/vl.c @@ -3659,8 +3659,6 @@ void qemu_system_reset(void) for(re = first_reset_entry; re != NULL; re = re->next) { re->func(re->opaque); } - if (kvm_enabled()) - kvm_sync_vcpus(); } void qemu_system_reset_request(void) -- 2.11.4.GIT