On Wed, Apr 29, 2015 at 02:19:01PM -0700, Andrew Morton wrote: > On Tue, 28 Apr 2015 15:37:04 +0100 Mel Gorman <mgor...@suse.de> 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/