linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Bob Picco" <bob.picco@hp.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Bob Picco <bob.picco@hp.com>, Dave Hansen <haveblue@us.ibm.com>,
	Nick Piggin <nickpiggin@yahoo.com.au>,
	"Martin J. Bligh" <mbligh@mbligh.org>, Andi Kleen <ak@suse.de>,
	linux-kernel@vger.kernel.org, Andrew Morton <akpm@osdl.org>,
	Linux Memory Management <linux-mm@kvack.org>,
	Andy Whitcroft <apw@shadowen.org>
Subject: Re: assert/crash in __rmqueue() when enabling CONFIG_NUMA
Date: Thu, 4 May 2006 15:43:34 -0400	[thread overview]
Message-ID: <20060504194334.GH19859@localhost> (raw)
In-Reply-To: <20060504192528.GA26759@elte.hu>

Ingo Molnar wrote:	[Thu May 04 2006, 03:25:28PM EDT]
> 
> * Bob Picco <bob.picco@hp.com> wrote:
> 
> > Dave Hansen wrote:	[Thu May 04 2006, 11:21:06AM EDT]
> > > I haven't thought through it completely, but these two lines worry me:
> > > 
> > > > + start = pgdat->node_start_pfn & ~((1 << (MAX_ORDER - 1)) - 1);
> > > > + end = start + pgdat->node_spanned_pages;
> > > 
> > > Should the "end" be based off of the original "start", or the aligned
> > > "start"?
> >
> > Yes. I failed to quilt refresh before sending. You mean end should be 
> > end = pgdat->node_start_pfn + pgdat->node_spanned_pages before 
> > rounding up.
> 
> do you have an updated patch i should try?
> 
> 	Ingo
You can try this but don't believe it will change your outcome. I've
booted this on ia64 with slight modification to eliminate
VIRTUAL_MEM_MAP and have only DISCONTIGMEM. Your case is failing at the
front edge of of the zone and not the ending edge which had a flaw in my
first post of the patch. I would have expected the first patch to handle
the front edge correctly.

I don't remember seeing your .config in the thread (or blind and unable
to see it). Would you please send it my way.

I'm also hoping Andy has time to look into this.

bob


Index: linux-2.6.17-rc3/mm/page_alloc.c
===================================================================
--- linux-2.6.17-rc3.orig/mm/page_alloc.c	2006-04-27 09:44:02.000000000 -0400
+++ linux-2.6.17-rc3/mm/page_alloc.c	2006-05-04 13:01:25.000000000 -0400
@@ -2123,14 +2123,22 @@ static void __init alloc_node_mem_map(st
 #ifdef CONFIG_FLAT_NODE_MEM_MAP
 	/* ia64 gets its own node_mem_map, before this, without bootmem */
 	if (!pgdat->node_mem_map) {
-		unsigned long size;
+		unsigned long size, start, end;
 		struct page *map;
 
-		size = (pgdat->node_spanned_pages + 1) * sizeof(struct page);
+		/*
+		 * The zone's endpoints aren't required to be MAX_ORDER
+		 * aligned but the node_mem_map endpoints must be in order
+		 * for the buddy allocator to function correctly.
+		 */
+		start = pgdat->node_start_pfn & ~(MAX_ORDER_NR_PAGES - 1);
+		end = pgdat->node_start_pfn + pgdat->node_spanned_pages;
+		end = ALIGN(end, MAX_ORDER_NR_PAGES);
+		size =  (end - start) * sizeof(struct page);
 		map = alloc_remap(pgdat->node_id, size);
 		if (!map)
 			map = alloc_bootmem_node(pgdat, size);
-		pgdat->node_mem_map = map;
+		pgdat->node_mem_map = map + (pgdat->node_start_pfn - start);
 	}
 #ifdef CONFIG_FLATMEM
 	/*
Index: linux-2.6.17-rc3/include/linux/mmzone.h
===================================================================
--- linux-2.6.17-rc3.orig/include/linux/mmzone.h	2006-04-27 09:44:02.000000000 -0400
+++ linux-2.6.17-rc3/include/linux/mmzone.h	2006-05-04 13:01:39.000000000 -0400
@@ -22,6 +22,7 @@
 #else
 #define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER
 #endif
+#define MAX_ORDER_NR_PAGES (1 << (MAX_ORDER - 1))
 
 struct free_area {
 	struct list_head	free_list;

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2006-05-04 19:43 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20060419112130.GA22648@elte.hu>
     [not found] ` <p73aca07whs.fsf@bragg.suse.de>
     [not found]   ` <20060502070618.GA10749@elte.hu>
     [not found]     ` <200605020905.29400.ak@suse.de>
     [not found]       ` <44576688.6050607@mbligh.org>
2006-05-02 14:25         ` assert/crash in __rmqueue() when enabling CONFIG_NUMA Nick Piggin
2006-05-04  1:32           ` Bob Picco
2006-05-04  8:37             ` Ingo Molnar
2006-05-04  9:14               ` Ingo Molnar
2006-05-04  9:26                 ` Ingo Molnar
2006-05-04  8:37             ` Andy Whitcroft
2006-05-04 15:21             ` Dave Hansen
2006-05-04 15:46               ` Bob Picco
2006-05-04 16:07                 ` Dave Hansen
2006-05-04 19:25                 ` Ingo Molnar
2006-05-04 19:43                   ` Bob Picco [this message]
2006-05-04 21:50                     ` Andy Whitcroft
2006-05-05  5:17                       ` Ingo Molnar
2006-05-05 13:55                       ` Bob Picco
2006-05-05 14:33                         ` Dave Hansen
2006-05-05 14:50                           ` Bob Picco
2006-05-05 14:57                             ` Dave Hansen
2006-05-05 15:03                               ` Martin J. Bligh
2006-05-05 16:22                                 ` Bob Picco
2006-05-05 16:18                               ` Bob Picco
2006-05-06  8:32                               ` Nick Piggin
2006-05-07 13:07                                 ` Andy Whitcroft
2006-05-07 13:18                                   ` Nick Piggin
2006-05-09 11:05                                     ` [PATCH 0/3] Zone boundry alignment fixes Andy Whitcroft
2006-05-09 11:05                                       ` [PATCH 1/3] zone init check and report unaligned zone boundries Andy Whitcroft
2006-05-09 11:28                                         ` Nick Piggin
2006-05-09 11:05                                       ` [PATCH 2/3] x86 align highmem zone boundries with NUMA Andy Whitcroft
2006-05-09 11:05                                       ` [PATCH 3/3] zone allow unaligned zone boundries Andy Whitcroft
2006-05-11  7:59                                       ` [PATCH 0/3] Zone boundry alignment fixes Andrew Morton
2006-05-12 14:19                                         ` Ingo Molnar
2006-05-13  1:39                                           ` Nick Piggin
2006-05-18 14:20                                         ` [PATCH 0/2] Zone boundary alignment fixes cleanups Andy Whitcroft
2006-05-18 14:21                                           ` [PATCH 1/2] zone init check and report unaligned zone boundaries fix Andy Whitcroft
2006-05-18 14:21                                           ` [PATCH 2/2] zone allow unaligned zone boundaries spelling fix Andy Whitcroft
2006-05-18 14:49                                             ` Andy Whitcroft
2006-05-18 15:54                                         ` [PATCH 0/2] Zone boundary alignment fixes, cleanups v2 Andy Whitcroft
2006-05-18 15:55                                           ` [PATCH 1/2] zone init check and report unaligned zone boundaries fix Andy Whitcroft
2006-05-18 15:55                                           ` [PATCH 2/2] zone allow unaligned zone boundaries spelling fix Andy Whitcroft

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=20060504194334.GH19859@localhost \
    --to=bob.picco@hp.com \
    --cc=ak@suse.de \
    --cc=akpm@osdl.org \
    --cc=apw@shadowen.org \
    --cc=haveblue@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mbligh@mbligh.org \
    --cc=mingo@elte.hu \
    --cc=nickpiggin@yahoo.com.au \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).