Re: [PATCH v4 2/2] mm/page_alloc.c: introduce kernelcore=mirror option

From: Andrew Morton
Date: Fri Jan 08 2016 - 18:12:29 EST


On Fri, 8 Jan 2016 17:02:39 +0000 Sudeep Holla <sudeep.holla@xxxxxxx> wrote:

> > +
> > + /*
> > + * if not mirrored_kernelcore and ZONE_MOVABLE exists,
> > + * range from zone_movable_pfn[nid] to end of each node
> > + * should be ZONE_MOVABLE not ZONE_NORMAL. skip it.
> > + */
> > + if (!mirrored_kernelcore && zone_movable_pfn[nid])
> > + if (zone == ZONE_NORMAL &&
> > + pfn >= zone_movable_pfn[nid])
> > + continue;
> > +
>
> I tried this with today's -next, the above lines gave compilation error.
> Moved them below into HAVE_MEMBLOCK_NODE_MAP and tested it on ARM64.
> I don't see the previous backtraces. Let me know if that's correct or
> you can post a version that compiles correctly and I can give a try.

Thanks. I'll include the below and shall add your tested-by:, OK?

From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Subject: mm-page_allocc-introduce-kernelcore=mirror-option-fix

fix build with CONFIG_HAVE_MEMBLOCK_NODE_MAP=n

Reported-by: Sudeep Holla <sudeep.holla@xxxxxxx>
Cc: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Dave Hansen <dave.hansen@xxxxxxxxx>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx>
Cc: Matt Fleming <matt@xxxxxxxxxxxxxxxxxxx>
Cc: Mel Gorman <mel@xxxxxxxxx>
Cc: Steve Capper <steve.capper@xxxxxxxxxx>
Cc: Taku Izumi <izumi.taku@xxxxxxxxxxxxxx>
Cc: Tony Luck <tony.luck@xxxxxxxxx>
Cc: Xishi Qiu <qiuxishi@xxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -puN Documentation/kernel-parameters.txt~mm-page_allocc-introduce-kernelcore=mirror-option-fix Documentation/kernel-parameters.txt
diff -puN mm/page_alloc.c~mm-page_allocc-introduce-kernelcore=mirror-option-fix mm/page_alloc.c
--- a/mm/page_alloc.c~mm-page_allocc-introduce-kernelcore=mirror-option-fix
+++ a/mm/page_alloc.c
@@ -4627,6 +4627,7 @@ void __meminit memmap_init_zone(unsigned
&nr_initialised))
break;

+#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
/*
* if not mirrored_kernelcore and ZONE_MOVABLE exists,
* range from zone_movable_pfn[nid] to end of each node
@@ -4637,7 +4638,6 @@ void __meminit memmap_init_zone(unsigned
pfn >= zone_movable_pfn[nid])
continue;

-#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
/*
* check given memblock attribute by firmware which
* can affect kernel memory layout.
_