From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37790) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZRSBf-0006BS-Vp for qemu-devel@nongnu.org; Mon, 17 Aug 2015 17:43:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZRSBe-0002G6-PY for qemu-devel@nongnu.org; Mon, 17 Aug 2015 17:43:23 -0400 Received: from hall.aurel32.net ([2001:bc8:30d7:100::1]:35244) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZRSBe-0002El-Ii for qemu-devel@nongnu.org; Mon, 17 Aug 2015 17:43:22 -0400 Date: Mon, 17 Aug 2015 23:43:17 +0200 From: Aurelien Jarno Message-ID: <20150817214317.GB21439@aurel32.net> References: <20150710095643.13280.88767.stgit@PASHA-ISP> <20150710095708.13280.43365.stgit@PASHA-ISP> <55CC97A4.6090009@imgtec.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <55CC97A4.6090009@imgtec.com> Subject: Re: [Qemu-devel] [PATCH v7 04/11] target-mips: improve exception handling List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Leon Alrae Cc: pbonzini@redhat.com, rth7680@gmail.com, qemu-devel@nongnu.org, Pavel Dovgalyuk , agraf@suse.de On 2015-08-13 14:12, Leon Alrae wrote: > On 10/07/2015 10:57, Pavel Dovgalyuk wrote: > > @@ -2364,14 +2363,12 @@ static void gen_st_cond (DisasContext *ctx, uint32_t opc, int rt, > > #if defined(TARGET_MIPS64) > > case OPC_SCD: > > case R6_OPC_SCD: > > - save_cpu_state(ctx, 1); > > op_st_scd(t1, t0, rt, ctx); > > opn = "scd"; > > break; > > #endif > > case OPC_SC: > > case R6_OPC_SC: > > - save_cpu_state(ctx, 1); > > op_st_sc(t1, t0, rt, ctx); > > opn = "sc"; > > break; > > Wouldn't we be better off assuming that conditional stores in linux-user > always take an exception (we generate fake EXCP_SC exception) and avoid > retranslation? After applying these changes I observed significant impact on > performance in linux-user multithreaded apps, for instance c11-atomic-exec > test before the change took just 2 seconds to finish, whereas now more than 30... This really show the impact of retranslation and why we should avoid it when not necessary. Coming back to the issue here, the fact that we go through retranslation is actually due to the fact that helper_raise_exception has been changed to go through retranslation. Given the code path between user-mode and softmmu is quite different, we definitely need a different code path wrt exception and retranslation for the two cases. That said if we want deterministic code execution (the original purpose of this patch), I don't see how we can do without forcing retranslation. Pavel, do you have an idea for that? Aurelien -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@aurel32.net http://www.aurel32.net