Revision aa2c364b

b/cpu-defs.h
205 205
    uint32_t stopped; /* Artificially stopped */                        \
206 206
    struct QemuThread *thread;                                          \
207 207
    struct QemuCond *halt_cond;                                         \
208
    int thread_kicked;                                                  \
208 209
    struct qemu_work_item *queued_work_first, *queued_work_last;        \
209 210
    const char *cpu_model_str;                                          \
210 211
    struct KVMState *kvm_state;                                         \
b/cpus.c
481 481
        qemu_cond_signal(&qemu_pause_cond);
482 482
    }
483 483
    flush_queued_work(env);
484
    env->thread_kicked = false;
484 485
}
485 486

  
486 487
static void qemu_tcg_wait_io_event(void)
......
648 649
{
649 650
    CPUState *env = _env;
650 651
    qemu_cond_broadcast(env->halt_cond);
651
    qemu_thread_signal(env->thread, SIG_IPI);
652
    if (!env->thread_kicked) {
653
        qemu_thread_signal(env->thread, SIG_IPI);
654
        env->thread_kicked = true;
655
    }
652 656
}
653 657

  
654 658
int qemu_cpu_self(void *_env)

Also available in: Unified diff