From: Alexander Graf fixes some SMP races --- cpu-all.h | 2 +- exec.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) Index: qemu-0.14.1/cpu-all.h =================================================================== --- qemu-0.14.1.orig/cpu-all.h +++ qemu-0.14.1/cpu-all.h @@ -775,7 +775,7 @@ void cpu_dump_statistics(CPUState *env, void QEMU_NORETURN cpu_abort(CPUState *env, const char *fmt, ...) GCC_FMT_ATTR(2, 3); extern CPUState *first_cpu; -extern CPUState *cpu_single_env; +extern __thread CPUState *cpu_single_env; #define CPU_INTERRUPT_HARD 0x02 /* hardware interrupt pending */ #define CPU_INTERRUPT_EXITTB 0x04 /* exit the current TB (use for x86 a20 case) */ Index: qemu-0.14.1/exec.c =================================================================== --- qemu-0.14.1.orig/exec.c +++ qemu-0.14.1/exec.c @@ -112,7 +112,7 @@ RAMList ram_list = { .blocks = QLIST_HEA CPUState *first_cpu; /* current CPU in the current thread. It is only valid inside cpu_exec() */ -CPUState *cpu_single_env; +__thread CPUState *cpu_single_env; /* 0 = Do not count executed instructions. 1 = Precise instruction counting. 2 = Adaptive rate instruction counting. */