From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bQ9u5-0005NI-VT for qemu-devel@nongnu.org; Thu, 21 Jul 2016 05:04:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bQ9u1-0000Cw-KH for qemu-devel@nongnu.org; Thu, 21 Jul 2016 05:04:24 -0400 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:34595) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bQ9u1-0000Cr-CT for qemu-devel@nongnu.org; Thu, 21 Jul 2016 05:04:21 -0400 Received: by mail-lf0-x243.google.com with SMTP id l69so4932449lfg.1 for ; Thu, 21 Jul 2016 02:04:21 -0700 (PDT) Sender: Paolo Bonzini References: <1468917141-8155-1-git-send-email-pbonzini@redhat.com> <1468917141-8155-6-git-send-email-pbonzini@redhat.com> <578E8601.1080107@gmail.com> <1825442518.8624290.1468967262856.JavaMail.zimbra@redhat.com> <57908993.50100@gmail.com> From: Paolo Bonzini Message-ID: Date: Thu, 21 Jul 2016 11:04:12 +0200 MIME-Version: 1.0 In-Reply-To: <57908993.50100@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 05/10] tcg: Prepare TB invalidation for lockless TB lookup List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Sergey Fedorov Cc: alex bennee , qemu-devel@nongnu.org, sergey fedorov On 21/07/2016 10:36, Sergey Fedorov wrote: > On 20/07/16 01:27, Paolo Bonzini wrote: >> >> ----- Original Message ----- >>> From: "Sergey Fedorov" >>> To: "Paolo Bonzini" , qemu-devel@nongnu.org >>> Cc: "sergey fedorov" , "alex bennee" >>> Sent: Tuesday, July 19, 2016 9:56:49 PM >>> Subject: Re: [PATCH 05/10] tcg: Prepare TB invalidation for lockless TB lookup >>> >>> On 19/07/16 11:32, Paolo Bonzini wrote: >>> It looks much better now :) >>> >>>> When invalidating a translation block, set an invalid flag into the >>>> TranslationBlock structure first. It is also necessary to check whether >>>> the target TB is still valid after acquiring 'tb_lock' but before calling >>>> tb_add_jump() since TB lookup is to be performed out of 'tb_lock' in >>>> future. Note that we don't have to check 'last_tb'; an already invalidated >>>> TB will not be executed anyway and it is thus safe to patch it. >>>> >>>> Suggested-by: Sergey Fedorov >>>> Signed-off-by: Paolo Bonzini >>>> --- >>>> cpu-exec.c | 5 +++-- >>>> include/exec/exec-all.h | 2 ++ >>>> translate-all.c | 3 +++ >>>> 3 files changed, 8 insertions(+), 2 deletions(-) >>> (snip) >>>> diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h >>>> index acda7b6..bc0bcc5 100644 >>>> --- a/include/exec/exec-all.h >>>> +++ b/include/exec/exec-all.h >>>> @@ -213,6 +213,8 @@ struct TranslationBlock { >>>> #define CF_USE_ICOUNT 0x20000 >>>> #define CF_IGNORE_ICOUNT 0x40000 /* Do not generate icount code */ >>>> >>>> + uint16_t invalid; >>> Why not "int"? >> There's a hole there, we may want to move something else so I >> used a smaller data type. Even uint8_t would do. > > But could simple "bool" work as well here? sizeof(bool) is sometimes 1 sometimes 4. Since in the future we might want to pack TranslationBlock for better locality, I thought it was better to stick with uint*_t. Paolo > >> >> Paolo >>>> + >>>> void *tc_ptr; /* pointer to the translated code */ >>>> uint8_t *tc_search; /* pointer to search data */ > > Are you sure that the hole is over there, not here? > > Kind regards, > Sergey > >>>> /* original tb when cflags has CF_NOCACHE */ >>>> >>> Thanks, >>> Sergey >>> > > >