From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757103AbcBIM2Q (ORCPT ); Tue, 9 Feb 2016 07:28:16 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:32915 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754331AbcBIM2O (ORCPT ); Tue, 9 Feb 2016 07:28:14 -0500 Date: Tue, 9 Feb 2016 13:28:09 +0100 From: Ingo Molnar To: Yinghai Lu Cc: luto@kernel.org, Linus Torvalds , "H. Peter Anvin" , Thomas Gleixner , Linux Kernel Mailing List , Alexander Kuleshov , ryabinin.a.a@gmail.com, Peter Zijlstra , alpopov@ptsecurity.com, "linux-tip-commits@vger.kernel.org" Subject: Re: [tip:x86/boot] x86/boot: Micro-optimize reset_early_page_tables() Message-ID: <20160209122809.GA5186@gmail.com> References: <1454140872-16926-1-git-send-email-kuleshovmail@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Yinghai Lu wrote: > On Sat, Jan 30, 2016 at 12:26 AM, tip-bot for Alexander Kuleshov > wrote: > > --- > > arch/x86/kernel/head64.c | 14 +++----------- > > 1 file changed, 3 insertions(+), 11 deletions(-) > > > > diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c > > index f129a9a..35843ca 100644 > > --- a/arch/x86/kernel/head64.c > > +++ b/arch/x86/kernel/head64.c > > @@ -40,13 +40,8 @@ pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX); > > . > > > > @@ -54,7 +49,6 @@ static void __init reset_early_page_tables(void) > > int __init early_make_pgtable(unsigned long address) > > { > > unsigned long physaddr = address - __PAGE_OFFSET; > > - unsigned long i; > > pgdval_t pgd, *pgd_p; > > pudval_t pud, *pud_p; > > pmdval_t pmd, *pmd_p; > > @@ -81,8 +75,7 @@ again: > > } > > > > pud_p = (pudval_t *)early_dynamic_pgts[next_early_pgt++]; > > - for (i = 0; i < PTRS_PER_PUD; i++) > > - pud_p[i] = 0; > > + memset(pud_p, 0, sizeof(pud_p) * PTRS_PER_PUD); > > should be > memset(pud_p, 0, sizeof(*pud_p) * PTRS_PER_PUD); > > > *pgd_p = (pgdval_t)pud_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE; > > } > > pud_p += pud_index(address); > > @@ -97,8 +90,7 @@ again: > > } > > > > pmd_p = (pmdval_t *)early_dynamic_pgts[next_early_pgt++]; > > - for (i = 0; i < PTRS_PER_PMD; i++) > > - pmd_p[i] = 0; > > + memset(pmd_p, 0, sizeof(pmd_p) * PTRS_PER_PMD); > > should be > memset(pmd_p, 0, sizeof(*pmd_p) * PTRS_PER_PMD); Indeed. Fortunately the two sizes are the same AFAICS, but this should nevertheless be fixed. Thanks, Ingo