From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59863) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8V3q-0006x0-A1 for qemu-devel@nongnu.org; Fri, 26 Jun 2015 10:57:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z8V3l-0005Tl-W3 for qemu-devel@nongnu.org; Fri, 26 Jun 2015 10:56:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57507) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8V3l-0005Th-R1 for qemu-devel@nongnu.org; Fri, 26 Jun 2015 10:56:53 -0400 References: <1435330053-18733-1-git-send-email-fred.konrad@greensocs.com> <1435330053-18733-6-git-send-email-fred.konrad@greensocs.com> From: Paolo Bonzini Message-ID: <558D682F.4080804@redhat.com> Date: Fri, 26 Jun 2015 16:56:47 +0200 MIME-Version: 1.0 In-Reply-To: <1435330053-18733-6-git-send-email-fred.konrad@greensocs.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH V6 05/18] protect TBContext with tb_lock. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: fred.konrad@greensocs.com, qemu-devel@nongnu.org, mttcg@greensocs.com Cc: peter.maydell@linaro.org, a.spyridakis@virtualopensystems.com, mark.burton@greensocs.com, agraf@suse.de, alistair.francis@xilinx.com, guillaume.delbergue@greensocs.com, alex.bennee@linaro.org On 26/06/2015 16:47, fred.konrad@greensocs.com wrote: > > diff --git a/target-arm/translate.c b/target-arm/translate.c > index 971b6db..47345aa 100644 > --- a/target-arm/translate.c > +++ b/target-arm/translate.c > @@ -11162,6 +11162,8 @@ static inline void gen_intermediate_code_internal(ARMCPU *cpu, > > dc->tb = tb; > > + tb_lock(); > + > dc->is_jmp = DISAS_NEXT; > dc->pc = pc_start; > dc->singlestep_enabled = cs->singlestep_enabled; > @@ -11499,6 +11501,7 @@ done_generating: > tb->size = dc->pc - pc_start; > tb->icount = num_insns; > } > + tb_unlock(); > } > > void gen_intermediate_code(CPUARMState *env, TranslationBlock *tb) > @@ -11567,6 +11570,7 @@ void arm_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf, > > void restore_state_to_opc(CPUARMState *env, TranslationBlock *tb, int pc_pos) > { > + tb_lock(); > if (is_a64(env)) { > env->pc = tcg_ctx.gen_opc_pc[pc_pos]; > env->condexec_bits = 0; > @@ -11574,4 +11578,5 @@ void restore_state_to_opc(CPUARMState *env, TranslationBlock *tb, int pc_pos) > env->regs[15] = tcg_ctx.gen_opc_pc[pc_pos]; > env->condexec_bits = gen_opc_condexec_bits[pc_pos]; > } > + tb_unlock(); > } Should these instead be added to the callers? Paolo