This will make the pause_all_cpus() code not crash in case qemu_init_vcpu() was not called yet for a CPU (so it doesn't have cpu->thread set yet). Signed-off-by: Eduardo Habkost <ehabkost@xxxxxxxxxx> --- cpus.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cpus.c b/cpus.c index 69b0530..ca3862b 100644 --- a/cpus.c +++ b/cpus.c @@ -1070,6 +1070,14 @@ static int all_vcpus_paused(void) return 1; } +static void cpu_kick_if_running(CPUState *cpu) +{ + if (!cpu->stopped) { + assert(cpu->thread); + qemu_cpu_kick(cpu); + } +} + void pause_all_vcpus(void) { CPUState *cpu; @@ -1077,7 +1085,7 @@ void pause_all_vcpus(void) qemu_clock_enable(QEMU_CLOCK_VIRTUAL, false); CPU_FOREACH(cpu) { cpu->stop = true; - qemu_cpu_kick(cpu); + cpu_kick_if_running(cpu); } if (qemu_in_vcpu_thread()) { @@ -1094,7 +1102,7 @@ void pause_all_vcpus(void) while (!all_vcpus_paused()) { qemu_cond_wait(&qemu_pause_cond, &qemu_global_mutex); CPU_FOREACH(cpu) { - qemu_cpu_kick(cpu); + cpu_kick_if_running(cpu); } } } -- 1.9.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list