Commit d33a1810d7f558dd1d486bc84f1cf8f96c982e2d
Committed by
Anthony Liguori
1 parent
8217606e
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>
Showing
2 changed files
with
8 additions
and
2 deletions
kvm-all.c
@@ -22,6 +22,7 @@ | @@ -22,6 +22,7 @@ | ||
22 | 22 | ||
23 | #include "qemu-common.h" | 23 | #include "qemu-common.h" |
24 | #include "sysemu.h" | 24 | #include "sysemu.h" |
25 | +#include "hw/hw.h" | ||
25 | #include "gdbstub.h" | 26 | #include "gdbstub.h" |
26 | #include "kvm.h" | 27 | #include "kvm.h" |
27 | 28 | ||
@@ -376,6 +377,11 @@ int kvm_check_extension(KVMState *s, unsigned int extension) | @@ -376,6 +377,11 @@ int kvm_check_extension(KVMState *s, unsigned int extension) | ||
376 | return ret; | 377 | return ret; |
377 | } | 378 | } |
378 | 379 | ||
380 | +static void kvm_reset_vcpus(void *opaque) | ||
381 | +{ | ||
382 | + kvm_sync_vcpus(); | ||
383 | +} | ||
384 | + | ||
379 | int kvm_init(int smp_cpus) | 385 | int kvm_init(int smp_cpus) |
380 | { | 386 | { |
381 | KVMState *s; | 387 | KVMState *s; |
@@ -462,6 +468,8 @@ int kvm_init(int smp_cpus) | @@ -462,6 +468,8 @@ int kvm_init(int smp_cpus) | ||
462 | if (ret < 0) | 468 | if (ret < 0) |
463 | goto err; | 469 | goto err; |
464 | 470 | ||
471 | + qemu_register_reset(kvm_reset_vcpus, INT_MAX, NULL); | ||
472 | + | ||
465 | kvm_state = s; | 473 | kvm_state = s; |
466 | 474 | ||
467 | return 0; | 475 | return 0; |
vl.c
@@ -3659,8 +3659,6 @@ void qemu_system_reset(void) | @@ -3659,8 +3659,6 @@ void qemu_system_reset(void) | ||
3659 | for(re = first_reset_entry; re != NULL; re = re->next) { | 3659 | for(re = first_reset_entry; re != NULL; re = re->next) { |
3660 | re->func(re->opaque); | 3660 | re->func(re->opaque); |
3661 | } | 3661 | } |
3662 | - if (kvm_enabled()) | ||
3663 | - kvm_sync_vcpus(); | ||
3664 | } | 3662 | } |
3665 | 3663 | ||
3666 | void qemu_system_reset_request(void) | 3664 | void qemu_system_reset_request(void) |