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) |