On Mon, Jul 06, 2015 at 03:05:09PM -0700, Andrew Morton wrote: > On Sat, 4 Jul 2015 21:10:08 +0300 "Kirill A. Shutemov" <kirill@xxxxxxxxxxxxx> wrote: > > > On Sat, Jul 04, 2015 at 05:26:47PM +0800, kbuild test robot wrote: > > > tree: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > > > head: 14a6f1989dae9445d4532941bdd6bbad84f4c8da > > > commit: 3b242c66ccbd60cf47ab0e8992119d9617548c23 x86: mm: enable deferred struct page initialisation on x86-64 > > > date: 3 days ago > > > config: x86_64-randconfig-x006-201527 (attached as .config) > > > reproduce: > > > git checkout 3b242c66ccbd60cf47ab0e8992119d9617548c23 > > > # save the attached .config to linux build tree > > > make ARCH=x86_64 > > > > > > All warnings (new ones prefixed by >>): > > > > > > mm/page_alloc.c: In function 'early_page_uninitialised': > > > >> mm/page_alloc.c:247:6: warning: unused variable 'nid' [-Wunused-variable] > > > int nid = early_pfn_to_nid(pfn); > > > > We can silence the warning with something like patch below. But I'm not > > sure it worth it. > > > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h > > index 754c25966a0a..746a6a7b0535 100644 > > --- a/include/linux/mmzone.h > > +++ b/include/linux/mmzone.h > > @@ -911,7 +911,7 @@ extern char numa_zonelist_order[]; > > #ifndef CONFIG_NEED_MULTIPLE_NODES > > > > extern struct pglist_data contig_page_data; > > -#define NODE_DATA(nid) (&contig_page_data) > > +#define NODE_DATA(nid) ((void)nid, &contig_page_data) > > #define NODE_MEM_MAP(nid) mem_map > > > > #else /* CONFIG_NEED_MULTIPLE_NODES */ > > Sigh. Macros do suck. If NODE_DATA was a regular old C function this > warning wouldn't occur. Problem is, we should then rename it to > "node_data" and that would require 246 edits. > > I suppose we could compromise and do > > static inline struct pglist_data *NODE_DATA(int nid) > > ? It might set a bad precedent. While I know there are counter examples, I generally expect CAPITAL_NAMES to be macros of some description -- usually constants. This is a relatively harmless warning thats easy to work around so how about this? ---8<--- mm, meminit: Suppress unused memory variable warning The kbuild test robot reported the following tree: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 14a6f1989dae9445d4532941bdd6bbad84f4c8da commit: 3b242c66ccbd60cf47ab0e8992119d9617548c23 x86: mm: enable deferred struct page initialisation on x86-64 date: 3 days ago config: x86_64-randconfig-x006-201527 (attached as .config) reproduce: git checkout 3b242c66ccbd60cf47ab0e8992119d9617548c23 # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): mm/page_alloc.c: In function 'early_page_uninitialised': >> mm/page_alloc.c:247:6: warning: unused variable 'nid' [-Wunused-variable] int nid = early_pfn_to_nid(pfn); It's due to the NODE_DATA macro ignoring the nid parameter on !NUMA configurations. This patch avoids the warning by not declaring nid. Signed-off-by: Mel Gorman <mgorman@xxxxxxx> --- mm/page_alloc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 506eac8b38af..ac05e7ae399e 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -246,9 +246,7 @@ static inline void reset_deferred_meminit(pg_data_t *pgdat) /* Returns true if the struct page for the pfn is uninitialised */ static inline bool __meminit early_page_uninitialised(unsigned long pfn) { - int nid = early_pfn_to_nid(pfn); - - if (pfn >= NODE_DATA(nid)->first_deferred_pfn) + if (pfn >= NODE_DATA(early_pfn_to_nid(pfn))->first_deferred_pfn) return true; return false; -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>