diff --git a/kvm-all.c b/kvm-all.c index eb4b9eab8251009e4f705f1d058bff8e59816d27..c9f09c7e180a5a27247696ac2b0a268b77a4e36f 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 9d7ee7adc7a72fcec94bc6b354c1f42723adf2f9..2c1f0e0bd24484b951fff9edcf1dab57cd1180e6 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)