diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2009-05-02 00:29:37 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-05-22 10:50:34 -0500 |
commit | d33a1810d7f558dd1d486bc84f1cf8f96c982e2d (patch) | |
tree | f41931bb085bf30f46539d2e053c77d7856b44a8 | |
parent | 8217606e6edb49591b4a6fd5a0d1229cebe470a9 (diff) |
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 <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | kvm-all.c | 8 | ||||
-rw-r--r-- | vl.c | 2 |
2 files changed, 8 insertions, 2 deletions
@@ -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; @@ -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) |