From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50919) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8Viw-00052c-CZ for qemu-devel@nongnu.org; Fri, 26 Jun 2015 11:39:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z8Vis-0004xl-9q for qemu-devel@nongnu.org; Fri, 26 Jun 2015 11:39:26 -0400 Received: from greensocs.com ([193.104.36.180]:53544) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8Vis-0004xg-3l for qemu-devel@nongnu.org; Fri, 26 Jun 2015 11:39:22 -0400 Message-ID: <558D7224.1070304@greensocs.com> Date: Fri, 26 Jun 2015 17:39:16 +0200 From: Frederic Konrad MIME-Version: 1.0 References: <1435330053-18733-1-git-send-email-fred.konrad@greensocs.com> <1435330053-18733-6-git-send-email-fred.konrad@greensocs.com> <558D682F.4080804@redhat.com> In-Reply-To: <558D682F.4080804@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed 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: Paolo Bonzini , 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:56, Paolo Bonzini wrote: > > 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 Good point, I see only one caller and the mutex is already locked. Fred