Subject: Re: Widespread boot failures on ARM due to "mm/page_alloc.c: calculate zone_start_pfn at zone_spanned_pages_in_node()"

From: Andrew Morton <[email-masked]>
Date: Mon, 4 Jan 2016 21:49:44 -0800

On Tue, 5 Jan 2016 16:47:16 +1100 Stephen Rothwell <[email-masked]> wrote:

> Hi Andrew,
> 
> On Tue, 5 Jan 2016 11:49:18 +1100 Stephen Rothwell <[email-masked]> wrote:
> >
> > On Mon, 4 Jan 2016 16:35:28 -0800 Andrew Morton <[email-masked]> wrote:
> > >
> > > Stephen, can we please retain
> > > 
> > > mm-calculate-zone_start_pfn-at-zone_spanned_pages_in_node.patch
> > > mm-introduce-kernelcore=mirror-option.patch
> > > mm-introduce-kernelcore=mirror-option-fix.patch
> > > mm-introduce-kernelcore=mirror-option-fix-2.patch
> > > 
> > > and add the below?  
> > 
> > Sure, that is easier than dropping the above patches, anyway.
> 
> I have done that *except* that
> mm-introduce-kernelcore=mirror-option-fix-2.patch is not in mmotm and I
> cannot find it anywhere.

oops sorry, I took it out so it isn't in today's
http://ozlabs.org/~akpm/mmots/broken-out/.  Here:

From: Arnd Bergmann <[email-masked]>
Subject: mm: avoid unused variables in memmap_init_zone

A quick fix on mm/page_alloc.c introduced a harmless warning:

mm/page_alloc.c: In function 'memmap_init_zone':
mm/page_alloc.c:4617:44: warning: unused variable 'tmp' [-Wunused-variable]
mm/page_alloc.c:4617:26: warning: unused variable 'r' [-Wunused-variable]

This uses another #ifdef to avoid declaring the two variables when the
code is not built.

Signed-off-by: Arnd Bergmann <[email-masked]>
Cc: Taku Izumi <[email-masked]>
Cc: Tony Luck <[email-masked]>
Signed-off-by: Andrew Morton <[email-masked]>
---

 mm/page_alloc.c |    2 ++
 1 file changed, 2 insertions(+)

diff -puN mm/page_alloc.c~mm-introduce-kernelcore=mirror-option-fix-2 mm/page_alloc.c
--- a/mm/page_alloc.c~mm-introduce-kernelcore=mirror-option-fix-2
+++ a/mm/page_alloc.c
@@ -4465,7 +4465,9 @@ void __meminit memmap_init_zone(unsigned
 	unsigned long pfn;
 	struct zone *z;
 	unsigned long nr_initialised = 0;
+#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
 	struct memblock_region *r = NULL, *tmp;
+#endif
 
 	if (highest_memmap_pfn < end_pfn - 1)
 		highest_memmap_pfn = end_pfn - 1;
_