From: Gleb Natapov <g...@redhat.com> Signed-off-by: Gleb Natapov <g...@redhat.com> Signed-off-by: Avi Kivity <a...@redhat.com>
diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c index 01c265b..8b9e7c5 100644 --- a/qemu/qemu-kvm.c +++ b/qemu/qemu-kvm.c @@ -1357,3 +1357,9 @@ int qemu_kvm_has_sync_mmu(void) { return kvm_has_sync_mmu(kvm_context); } + +void qemu_kvm_cpu_stop(CPUState *env) +{ + if (kvm_enabled()) + env->kvm_cpu_state.stopped = 1; +} diff --git a/qemu/qemu-kvm.h b/qemu/qemu-kvm.h index ec27d06..f8d724b 100644 --- a/qemu/qemu-kvm.h +++ b/qemu/qemu-kvm.h @@ -153,6 +153,7 @@ struct ioperm_data { }; int qemu_kvm_has_sync_mmu(void); +void qemu_kvm_cpu_stop(CPUState *env); #define kvm_enabled() (kvm_allowed) #define qemu_kvm_irqchip_in_kernel() kvm_irqchip_in_kernel(kvm_context) @@ -168,6 +169,7 @@ void kvm_load_tsc(CPUState *env); #define kvm_has_sync_mmu() (0) #define kvm_load_registers(env) do {} while(0) #define kvm_save_registers(env) do {} while(0) +#define qemu_kvm_cpu_stop(env) do {} while(0) static inline void kvm_init_vcpu(CPUState *env) { } static inline void void kvm_load_tsc(CPUState *env) {} diff --git a/qemu/vl.c b/qemu/vl.c index 0d1d236..a0c5472 100644 --- a/qemu/vl.c +++ b/qemu/vl.c @@ -3585,8 +3585,11 @@ void qemu_system_reset_request(void) } else { reset_requested = 1; } - if (cpu_single_env) + + if (cpu_single_env) { + qemu_kvm_cpu_stop(cpu_single_env); cpu_interrupt(cpu_single_env, CPU_INTERRUPT_EXIT); + } main_loop_break(); } -- To unsubscribe from this list: send the line "unsubscribe kvm-commits" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html