target/i386/misc_helper: wrap BQL around another IRQ generator
authorAlex Bennée <alex.bennee@linaro.org>
Thu, 30 Mar 2017 15:04:09 +0000 (16:04 +0100)
committerAlex Bennée <alex.bennee@linaro.org>
Mon, 10 Apr 2017 09:14:50 +0000 (10:14 +0100)
Anything that calls into HW emulation must be protected by the BQL.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Acked-by: Eduardo Habkost <ehabkost@redhat.com>
target/i386/misc_helper.c

index ca2ea09f54d20f92e6fa507e9f1d89146b9cd2b3..628f64aad565a4300b19b44895ac0ff6a9c0ca29 100644 (file)
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/main-loop.h"
 #include "cpu.h"
 #include "exec/helper-proto.h"
 #include "exec/exec-all.h"
@@ -156,7 +157,9 @@ void helper_write_crN(CPUX86State *env, int reg, target_ulong t0)
         break;
     case 8:
         if (!(env->hflags2 & HF2_VINTR_MASK)) {
+            qemu_mutex_lock_iothread();
             cpu_set_apic_tpr(x86_env_get_cpu(env)->apic_state, t0);
+            qemu_mutex_unlock_iothread();
         }
         env->v_tpr = t0 & 0x0f;
         break;