From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965512AbbBCAZc (ORCPT ); Mon, 2 Feb 2015 19:25:32 -0500 Received: from mail-ig0-f176.google.com ([209.85.213.176]:61885 "EHLO mail-ig0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965313AbbBCAZ2 (ORCPT ); Mon, 2 Feb 2015 19:25:28 -0500 Date: Mon, 2 Feb 2015 16:25:25 -0800 (PST) From: David Rientjes X-X-Sender: rientjes@chino.kir.corp.google.com To: Rasmus Villemoes cc: Andrew Morton , Vishnu Pratap Singh , Pintu Kumar , Michal Nazarewicz , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/5] mm/page_alloc.c: Pull out init code from build_all_zonelists In-Reply-To: <1422921016-27618-3-git-send-email-linux@rasmusvillemoes.dk> Message-ID: References: <1422921016-27618-1-git-send-email-linux@rasmusvillemoes.dk> <1422921016-27618-3-git-send-email-linux@rasmusvillemoes.dk> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 3 Feb 2015, Rasmus Villemoes wrote: > Pulling the code protected by if (system_state == SYSTEM_BOOTING) into > its own helper allows us to shrink .text a little. This relies on > build_all_zonelists already having a __ref annotation. Add a comment > explaining why so one doesn't have to track it down through git log. > I think we should see the .text savings in the changelog to decide whether we want a __ref function (granted, with comment) calling an __init function in the source code. > Signed-off-by: Rasmus Villemoes > --- > mm/page_alloc.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 7633c503a116..c58aa42a3387 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3945,18 +3945,29 @@ static int __build_all_zonelists(void *data) > return 0; > } > > +static noinline void __init > +build_all_zonelists_init(void) > +{ > + __build_all_zonelists(NULL); > + mminit_verify_zonelist(); > + cpuset_init_current_mems_allowed(); > +} > + > /* > * Called with zonelists_mutex held always > * unless system_state == SYSTEM_BOOTING. > + * > + * __ref due to (1) call of __meminit annotated setup_zone_pageset > + * [we're only called with non-NULL zone through __meminit paths] and > + * (2) call of __init annotated helper build_all_zonelists_init > + * [protected by SYSTEM_BOOTING]. > */ > void __ref build_all_zonelists(pg_data_t *pgdat, struct zone *zone) > { > set_zonelist_order(); > > if (system_state == SYSTEM_BOOTING) { > - __build_all_zonelists(NULL); > - mminit_verify_zonelist(); > - cpuset_init_current_mems_allowed(); > + build_all_zonelists_init(); > } else { > #ifdef CONFIG_MEMORY_HOTPLUG > if (zone)