All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Chandru <chandru@in.ibm.com>,
	linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>
Subject: Re: 2.6.28-rc9 panics with crashkernel=256M while booting
Date: Thu, 25 Dec 2008 00:07:35 -0800	[thread overview]
Message-ID: <20081225000735.4dd4e802.akpm@linux-foundation.org> (raw)
In-Reply-To: <20081224233536.b067c9da.akpm@linux-foundation.org>

On Wed, 24 Dec 2008 23:35:36 -0800 Andrew Morton <akpm@linux-foundation.org> wrote:

> - Please put [patch] in the Subject: line of patches
> 
> - Please choose a suitable title, as per
>   Documentation/SubmittingPatches, section 15.
> 
> - Please cc suitable mailing lists and maintainers on bug reports and
>   on patches.

Also the patch was wordwrapped and the changelog was filled with weird
UTF8 characters.

I think I have it all cleaned up now.


From: Chandru <chandru@in.ibm.com>

When booted with crashkernel=224M@32M or any memory size less than this,
the system boots properly.  The following was the observation..  The
system comes up with two nodes (0-256M and 256M-4GB).  The crashkernel
memory reservation spans across these two nodes.  The
mark_reserved_regions_for_nid() in arch/powerpc/mm/numa.c resizes the
reserved part of the memory within it as:

	if (end_pfn > node_ar.end_pfn)
		reserve_size = (node_ar.end_pfn << PAGE_SHIFT)
				- (start_pfn << PAGE_SHIFT);


but the reserve_bootmem_node() in mm/bootmem.c raises the pfn value of end 

	end = PFN_UP(physaddr + size);

This causes end to get a value past the last page in the 0-256M node. 
Again when reserve_bootmem_node() returns, mark_reserved_regions_for_nid()
loops around to set the rest of the crashkernel memory in the next node as
reserved.  It references NODE_DATA(node_ar.nid) and this causes another
'Oops: kernel access of bad area' problem.  The following changes made the
system to boot with any amount of crashkernel memory size.

Signed-off-by: Chandru S <chandru@linux.vnet.ibm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 arch/powerpc/mm/numa.c |    7 ++++---
 mm/bootmem.c           |    4 ++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff -puN arch/powerpc/mm/numa.c~powerpc-fix-code-for-reserved-memory-spanning-across-nodes arch/powerpc/mm/numa.c
--- a/arch/powerpc/mm/numa.c~powerpc-fix-code-for-reserved-memory-spanning-across-nodes
+++ a/arch/powerpc/mm/numa.c
@@ -995,10 +995,11 @@ void __init do_init_bootmem(void)
 				  start_pfn, end_pfn);
 
 		free_bootmem_with_active_regions(nid, end_pfn);
+	}
+
+	for_each_online_node(nid) {
 		/*
-		 * Be very careful about moving this around.  Future
-		 * calls to careful_allocation() depend on this getting
-		 * done correctly.
+		 * Be very careful about moving this around.
 		 */
 		mark_reserved_regions_for_nid(nid);
 		sparse_memory_present_with_active_regions(nid);
diff -puN mm/bootmem.c~powerpc-fix-code-for-reserved-memory-spanning-across-nodes mm/bootmem.c
--- a/mm/bootmem.c~powerpc-fix-code-for-reserved-memory-spanning-across-nodes
+++ a/mm/bootmem.c
@@ -375,10 +375,14 @@ int __init reserve_bootmem_node(pg_data_
 				 unsigned long size, int flags)
 {
 	unsigned long start, end;
+	bootmem_data_t *bdata = pgdat->bdata;
 
 	start = PFN_DOWN(physaddr);
 	end = PFN_UP(physaddr + size);
 
+	if (end > bdata->node_low_pfn)
+		end = bdata->node_low_pfn;
+
 	return mark_bootmem_node(pgdat->bdata, start, end, 1, flags);
 }
 
_

  reply	other threads:[~2008-12-25  8:07 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-24  7:55 2.6.28-rc9 panics with crashkernel=256M while booting Chandru
2008-12-25  7:35 ` Andrew Morton
2008-12-25  7:35   ` Andrew Morton
2008-12-25  8:07   ` Andrew Morton [this message]
2008-12-26  6:35     ` Chandru
2008-12-26  0:59   ` Paul Mackerras
2008-12-26  0:59     ` Paul Mackerras
2008-12-29 21:36     ` Dave Hansen
2008-12-29 21:36       ` Dave Hansen
2009-01-05 13:49       ` Chandru
2009-01-05 13:49         ` Chandru
2009-01-05 16:30         ` Dave Hansen
2009-01-05 16:30           ` Dave Hansen
2009-01-07 12:58           ` Chandru
2009-01-07 12:58             ` Chandru
2009-01-07 17:25             ` Dave Hansen
2009-01-07 17:25               ` Dave Hansen
2009-01-08 10:29               ` Chandru
2009-01-08 10:29                 ` Chandru
2009-01-08 20:03                 ` Dave Hansen
2009-01-08 20:03                   ` Dave Hansen
2009-01-09 11:07                   ` Chandru
2009-01-09 11:07                     ` Chandru
2009-01-15  8:05                     ` Chandru
2009-01-15  8:05                       ` Chandru
2009-01-16 12:16                       ` Chandru
2009-01-16 12:16                         ` Chandru
2009-01-16 17:52                         ` Dave Hansen
2009-01-16 17:52                           ` Dave Hansen
2009-01-19  8:11                           ` Chandru
2009-01-19  8:11                             ` Chandru
2009-01-19 11:30                           ` Chandru
2009-01-19 11:30                             ` Chandru
2009-01-20  8:13                             ` Chandru
2009-01-22  0:29                             ` Dave Hansen
2009-01-22  0:29                               ` Dave Hansen
2009-01-22  8:20                               ` Chandru
2009-01-22  8:20                                 ` Chandru

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081225000735.4dd4e802.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=benh@kernel.crashing.org \
    --cc=chandru@in.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.