Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750839AbbD3IqK (ORCPT ); Thu, 30 Apr 2015 04:46:10 -0400 Received: from cantor2.suse.de ([195.135.220.15]:55052 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750730AbbD3IqF (ORCPT ); Thu, 30 Apr 2015 04:46:05 -0400 Date: Thu, 30 Apr 2015 09:45:58 +0100 From: Mel Gorman To: Andrew Morton Cc: Nathan Zimmer , Dave Hansen , Waiman Long , Scott Norton , Daniel J Blueman , Linux-MM , LKML Subject: Re: [PATCH 07/13] mm: meminit: Initialise a subset of struct pages if CONFIG_DEFERRED_STRUCT_PAGE_INIT is set Message-ID: <20150430084558.GV2449@suse.de> References: <1430231830-7702-1-git-send-email-mgorman@suse.de> <1430231830-7702-8-git-send-email-mgorman@suse.de> <20150429141901.df10d11cc8fa2d5df377922f@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <20150429141901.df10d11cc8fa2d5df377922f@linux-foundation.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2175 Lines: 74 On Wed, Apr 29, 2015 at 02:19:01PM -0700, Andrew Morton wrote: > On Tue, 28 Apr 2015 15:37:04 +0100 Mel Gorman wrote: > > > +/* > > + * Deferred struct page initialisation requires some early init functions that > > + * are removed before kswapd is up and running. The feature depends on memory > > + * hotplug so put the data and code required by deferred initialisation into > > + * the __meminit section where they are preserved. > > + */ > > +#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT > > +#define __defermem_init __meminit > > +#define __defer_init __meminit > > +#else > > +#define __defermem_init > > +#define __defer_init __init > > +#endif > > I still don't get it :( > This version was sent out at roughly the same minute you asked the time before so the comment was not updated. I suggested this as a possible alternative. /* * Deferred struct page initialisation requires init functions that are freed * before kswapd is available. Reuse the memory hotplug section annotation * to mark the required code. * * __defermem_init is code that always exists but is annotated __meminit * to * avoid section warnings. * __defer_init code gets marked __meminit when deferring struct page * initialistion but is otherwise in the init section. */ Suggestions on better names are welcome. > __defermem_init: > > if (CONFIG_DEFERRED_STRUCT_PAGE_INIT) { > if (CONFIG_MEMORY_HOTPLUG) > retain > } else { > retain > } > > but CONFIG_DEFERRED_STRUCT_PAGE_INIT depends on > CONFIG_MEMORY_HOTPLUG, so this becomes > > if (CONFIG_DEFERRED_STRUCT_PAGE_INIT) { > retain > } else { > retain > } > > which becomes > > retain > > so why does __defermem_init exist? > It suppresses section warnings. Another possibility is that I get rid of it entirely and use __refok but I feared that it might hide a real problem in the future. -- Mel Gorman SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/