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 --- 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 9e9b462..1128bee 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" @@ -321,6 +322,11 @@ int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size) return ret; } +static void kvm_reset_vcpus(void *opaque) +{ + kvm_sync_vcpus(); +} + int kvm_init(int smp_cpus) { KVMState *s; @@ -411,6 +417,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 4a064bf..3cf8331 100644 --- a/vl.c +++ b/vl.c @@ -3627,8 +3627,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)