From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37055) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YkueN-0008NS-AG for qemu-devel@nongnu.org; Wed, 22 Apr 2015 09:25:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YkueJ-0003H6-Dd for qemu-devel@nongnu.org; Wed, 22 Apr 2015 09:25:11 -0400 Received: from mail-wi0-x229.google.com ([2a00:1450:400c:c05::229]:38882) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YkueJ-0003EX-6f for qemu-devel@nongnu.org; Wed, 22 Apr 2015 09:25:07 -0400 Received: by wiun10 with SMTP id n10so57167383wiu.1 for ; Wed, 22 Apr 2015 06:25:06 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <5537A12E.4070301@redhat.com> Date: Wed, 22 Apr 2015 15:25:02 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1428529040-26452-1-git-send-email-cota@braap.org> In-Reply-To: <1428529040-26452-1-git-send-email-cota@braap.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] translate-all: remove redundant page_find from tb_invalidate_phys_page List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Emilio G. Cota" , qemu-devel@nongnu.org On 08/04/2015 23:37, Emilio G. Cota wrote: > The callers have just looked up the page descriptor, so there's no > point in searching again for it. > > Signed-off-by: Emilio G. Cota > --- > translate-all.c | 11 +++-------- > 1 file changed, 3 insertions(+), 8 deletions(-) > > diff --git a/translate-all.c b/translate-all.c > index 11763c6..4d05898 100644 > --- a/translate-all.c > +++ b/translate-all.c > @@ -1246,14 +1246,13 @@ void tb_invalidate_phys_page_fast(tb_page_addr_t start, int len) > } > } > > #if !defined(CONFIG_SOFTMMU) > -static void tb_invalidate_phys_page(tb_page_addr_t addr, > +static void tb_invalidate_phys_page(PageDesc *p, tb_page_addr_t addr, > uintptr_t pc, void *puc, > bool locked) > { > TranslationBlock *tb; > - PageDesc *p; > int n; > #ifdef TARGET_HAS_PRECISE_SMC > TranslationBlock *current_tb = NULL; > CPUState *cpu = current_cpu; > @@ -1264,12 +1263,8 @@ static void tb_invalidate_phys_page(tb_page_addr_t addr, > int current_flags = 0; > #endif > > addr &= TARGET_PAGE_MASK; > - p = page_find(addr >> TARGET_PAGE_BITS); > - if (!p) { > - return; > - } > tb = p->first_tb; > #ifdef TARGET_HAS_PRECISE_SMC > if (tb && pc != 0) { > current_tb = tb_find_pc(pc); > @@ -1817,9 +1812,9 @@ void page_set_flags(target_ulong start, target_ulong end, int flags) > the code inside. */ > if (!(p->flags & PAGE_WRITE) && > (flags & PAGE_WRITE) && > p->first_tb) { > - tb_invalidate_phys_page(addr, 0, NULL, false); > + tb_invalidate_phys_page(p, addr, 0, NULL, false); > } > p->flags = flags; > } > } > @@ -1911,9 +1906,9 @@ int page_unprotect(target_ulong address, uintptr_t pc, void *puc) > prot |= p->flags; > > /* and since the content will be modified, we must invalidate > the corresponding translated code. */ > - tb_invalidate_phys_page(addr, pc, puc, true); > + tb_invalidate_phys_page(p, addr, pc, puc, true); > #ifdef DEBUG_TB_CHECK > tb_invalidate_check(addr); > #endif > } > This one looks good. Thanks, Paolo