From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39504) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bNElO-00017K-46 for qemu-devel@nongnu.org; Wed, 13 Jul 2016 03:39:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bNElK-00046o-VJ for qemu-devel@nongnu.org; Wed, 13 Jul 2016 03:39:22 -0400 Received: from mail-lf0-x235.google.com ([2a00:1450:4010:c07::235]:33934) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bNElK-00046i-MX for qemu-devel@nongnu.org; Wed, 13 Jul 2016 03:39:18 -0400 Received: by mail-lf0-x235.google.com with SMTP id h129so31814298lfh.1 for ; Wed, 13 Jul 2016 00:39:18 -0700 (PDT) Sender: Paolo Bonzini References: <1468354426-837-1-git-send-email-sergey.fedorov@linaro.org> From: Paolo Bonzini Message-ID: <148a0c48-f58c-6d95-8b97-6449670019ac@redhat.com> Date: Wed, 13 Jul 2016 09:39:13 +0200 MIME-Version: 1.0 In-Reply-To: <1468354426-837-1-git-send-email-sergey.fedorov@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 00/11] Reduce lock contention on TCG hot-path List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Sergey Fedorov , qemu-devel@nongnu.org, mttcg@listserver.greensocs.com, fred.konrad@greensocs.com, a.rigo@virtualopensystems.com, serge.fdrv@gmail.com, cota@braap.org, bobby.prani@gmail.com, rth@twiddle.net Cc: peter.maydell@linaro.org, patches@linaro.org, claudio.fontana@huawei.com, mark.burton@greensocs.com, jan.kiszka@siemens.com, =?UTF-8?Q?Alex_Benn=c3=a9e?= On 12/07/2016 22:13, Sergey Fedorov wrote: > From: Sergey Fedorov > > Hi, > > This is my respin of Alex's v2 series [1]. > > The first 8 patches are preparation for the patch 9, the subject matter > of this series, which enables lockless translation block lookup. The > main change here is that Paolo's suggestion is implemented: TBs are > marked with invalid CPU state early during invalidation. This allows to > make lockless lookup safe from races on 'tb_jmp_cache' and direct block > chaining. Thanks for looking at the suggestion again and especially for perfecting it! > The patch 10 is a simple solution to avoid unnecessary bouncing on > 'tb_lock' between tb_gen_code() and tb_add_jump(). A local variable is > used to keep track of whether 'tb_lock' has already been taken. > > The last patch is my attempt to restructure tb_find_{fast,slow}() into a > single function tb_find(). I think it will be easier to follow the > locking scheme this way. However, I am afraid this last patch can be > controversial, so it can be simply dropped. Actually I agree entirely with it. If anything, for historical reasons one might rename tb_find_physical to tb_find_slow and leave the tb_find_fast name, but I think the patch is good as is. Have you measured performance with the series? In any case, it's nice to see MTTCG finally taking shape! Paolo