From: Ingo Molnar <mingo@elte.hu>
To: Bob Picco <bob.picco@hp.com>
Cc: 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 11:14:22 +0200 [thread overview]
Message-ID: <20060504091422.GA2346@elte.hu> (raw)
In-Reply-To: <20060504083708.GA30853@elte.hu>
* Ingo Molnar <mingo@elte.hu> wrote:
> > The patch below isn't compile tested or correct for those cases where
> > alloc_remap is called or where arch code has allocated node_mem_map
> > for CONFIG_FLAT_NODE_MEM_MAP. It's just conveying what I believe the
> > issue is.
>
> thx. One pair of parentheses were missing i think - see the delta fix
> below. I'll try it.
the same easy crash still happens if i enable CONFIG_NUMA:
zone c214e600 (HighMem):
pfn: 00037d00
zone->zone_start_pfn: 00037e00
zone->spanned_pages: 00007e00
zone->zone_start_pfn + zone->spanned_pages: 0003fc00
[<c010574a>] do_invalid_op+0x63/0x93
[<c0104a0b>] error_code+0x4f/0x54
[<c0164d48>] get_page_from_freelist+0x13e/0x565
[<c01651dd>] __alloc_pages+0x6e/0x325
[<c017a6c9>] alloc_page_vma+0x80/0x86
[<c016e2ae>] __handle_mm_fault+0x1e7/0xd00
[<c10fe9af>] do_page_fault+0x339/0x7c5
[<c0104a0b>] error_code+0x4f/0x54
see the debug patch below.
Ingo
----
From: Ingo Molnar <mingo@elte.hu>
do buddy zone size checks unconditionally.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
----
mm/page_alloc.c | 31 ++++++++++++++++++++++++-------
1 files changed, 24 insertions(+), 7 deletions(-)
Index: linux/mm/page_alloc.c
===================================================================
--- linux.orig/mm/page_alloc.c
+++ linux/mm/page_alloc.c
@@ -101,17 +101,32 @@ static int page_outside_zone_boundaries(
ret = 1;
} while (zone_span_seqretry(zone, seq));
+#define P(x) printk("%s: %08lx\n", #x, x)
+
+ if (ret) {
+ printk("zone %p (%s):\n", zone, zone->name);
+ P(pfn);
+ P(zone->zone_start_pfn);
+ P(zone->spanned_pages);
+ P(zone->zone_start_pfn + zone->spanned_pages);
+ }
+
return ret;
}
static int page_is_consistent(struct zone *zone, struct page *page)
{
-#ifdef CONFIG_HOLES_IN_ZONE
- if (!pfn_valid(page_to_pfn(page)))
+ if (!pfn_valid(page_to_pfn(page))) {
+ printk("BUG: pfn: %08lx, page: %p\n",
+ page_to_pfn(page), page);
+ dump_stack();
return 0;
-#endif
- if (zone != page_zone(page))
+ }
+ if (zone != page_zone(page)) {
+ printk("zone: %p != %p == page_zone(%p)\n",
+ zone, page_zone(page), page);
return 0;
+ }
return 1;
}
@@ -309,10 +324,12 @@ __find_combined_index(unsigned long page
*/
static inline int page_is_buddy(struct page *page, int order)
{
-#ifdef CONFIG_HOLES_IN_ZONE
- if (!pfn_valid(page_to_pfn(page)))
+ if (!pfn_valid(page_to_pfn(page))) {
+ printk("BUG: pfn: %08lx, page: %p, order: %d\n",
+ page_to_pfn(page), page, order);
+ dump_stack();
return 0;
-#endif
+ }
if (PageBuddy(page) && page_order(page) == order) {
BUG_ON(page_count(page) != 0);
WARNING: multiple messages have this Message-ID (diff)
From: Ingo Molnar <mingo@elte.hu>
To: Bob Picco <bob.picco@hp.com>
Cc: 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 11:14:22 +0200 [thread overview]
Message-ID: <20060504091422.GA2346@elte.hu> (raw)
In-Reply-To: <20060504083708.GA30853@elte.hu>
* Ingo Molnar <mingo@elte.hu> wrote:
> > The patch below isn't compile tested or correct for those cases where
> > alloc_remap is called or where arch code has allocated node_mem_map
> > for CONFIG_FLAT_NODE_MEM_MAP. It's just conveying what I believe the
> > issue is.
>
> thx. One pair of parentheses were missing i think - see the delta fix
> below. I'll try it.
the same easy crash still happens if i enable CONFIG_NUMA:
zone c214e600 (HighMem):
pfn: 00037d00
zone->zone_start_pfn: 00037e00
zone->spanned_pages: 00007e00
zone->zone_start_pfn + zone->spanned_pages: 0003fc00
[<c010574a>] do_invalid_op+0x63/0x93
[<c0104a0b>] error_code+0x4f/0x54
[<c0164d48>] get_page_from_freelist+0x13e/0x565
[<c01651dd>] __alloc_pages+0x6e/0x325
[<c017a6c9>] alloc_page_vma+0x80/0x86
[<c016e2ae>] __handle_mm_fault+0x1e7/0xd00
[<c10fe9af>] do_page_fault+0x339/0x7c5
[<c0104a0b>] error_code+0x4f/0x54
see the debug patch below.
Ingo
----
From: Ingo Molnar <mingo@elte.hu>
do buddy zone size checks unconditionally.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
----
mm/page_alloc.c | 31 ++++++++++++++++++++++++-------
1 files changed, 24 insertions(+), 7 deletions(-)
Index: linux/mm/page_alloc.c
===================================================================
--- linux.orig/mm/page_alloc.c
+++ linux/mm/page_alloc.c
@@ -101,17 +101,32 @@ static int page_outside_zone_boundaries(
ret = 1;
} while (zone_span_seqretry(zone, seq));
+#define P(x) printk("%s: %08lx\n", #x, x)
+
+ if (ret) {
+ printk("zone %p (%s):\n", zone, zone->name);
+ P(pfn);
+ P(zone->zone_start_pfn);
+ P(zone->spanned_pages);
+ P(zone->zone_start_pfn + zone->spanned_pages);
+ }
+
return ret;
}
static int page_is_consistent(struct zone *zone, struct page *page)
{
-#ifdef CONFIG_HOLES_IN_ZONE
- if (!pfn_valid(page_to_pfn(page)))
+ if (!pfn_valid(page_to_pfn(page))) {
+ printk("BUG: pfn: %08lx, page: %p\n",
+ page_to_pfn(page), page);
+ dump_stack();
return 0;
-#endif
- if (zone != page_zone(page))
+ }
+ if (zone != page_zone(page)) {
+ printk("zone: %p != %p == page_zone(%p)\n",
+ zone, page_zone(page), page);
return 0;
+ }
return 1;
}
@@ -309,10 +324,12 @@ __find_combined_index(unsigned long page
*/
static inline int page_is_buddy(struct page *page, int order)
{
-#ifdef CONFIG_HOLES_IN_ZONE
- if (!pfn_valid(page_to_pfn(page)))
+ if (!pfn_valid(page_to_pfn(page))) {
+ printk("BUG: pfn: %08lx, page: %p, order: %d\n",
+ page_to_pfn(page), page, order);
+ dump_stack();
return 0;
-#endif
+ }
if (PageBuddy(page) && page_order(page) == order) {
BUG_ON(page_count(page) != 0);
--
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>
next prev parent reply other threads:[~2006-05-04 9:09 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20060419112130.GA22648@elte.hu>
2006-04-20 9:18 ` assert/crash in __rmqueue() when enabling CONFIG_NUMA Nick Piggin
2006-04-21 11:20 ` Ingo Molnar
2006-04-21 11:45 ` Ingo Molnar
2006-05-01 12:49 ` Ingo Molnar
2006-05-02 6:48 ` Andi Kleen
2006-05-02 7:06 ` Ingo Molnar
2006-05-02 7:05 ` Andi Kleen
2006-05-02 8:27 ` Ingo Molnar
2006-05-02 14:02 ` Martin J. Bligh
2006-05-02 14:25 ` Nick Piggin
2006-05-02 14:25 ` Nick Piggin
2006-05-04 1:32 ` Bob Picco
2006-05-04 1:32 ` Bob Picco
2006-05-04 8:37 ` Ingo Molnar
2006-05-04 8:37 ` Ingo Molnar
2006-05-04 9:14 ` Ingo Molnar [this message]
2006-05-04 9:14 ` Ingo Molnar
2006-05-04 9:26 ` Ingo Molnar
2006-05-04 9:26 ` Ingo Molnar
2006-05-04 8:37 ` Andy Whitcroft
2006-05-04 8:37 ` Andy Whitcroft
2006-05-04 15:21 ` Dave Hansen
2006-05-04 15:21 ` Dave Hansen
2006-05-04 15:46 ` Bob Picco
2006-05-04 15:46 ` Bob Picco
2006-05-04 16:07 ` Dave Hansen
2006-05-04 16:07 ` Dave Hansen
2006-05-04 19:25 ` Ingo Molnar
2006-05-04 19:25 ` Ingo Molnar
2006-05-04 19:43 ` Bob Picco
2006-05-04 19:43 ` Bob Picco
2006-05-04 21:50 ` Andy Whitcroft
2006-05-04 21:50 ` Andy Whitcroft
2006-05-05 5:17 ` Ingo Molnar
2006-05-05 5:17 ` Ingo Molnar
2006-05-05 13:55 ` Bob Picco
2006-05-05 13:55 ` Bob Picco
2006-05-05 14:33 ` Dave Hansen
2006-05-05 14:33 ` Dave Hansen
2006-05-05 14:50 ` Bob Picco
2006-05-05 14:50 ` Bob Picco
2006-05-05 14:57 ` Dave Hansen
2006-05-05 14:57 ` Dave Hansen
2006-05-05 15:03 ` Martin J. Bligh
2006-05-05 15:03 ` Martin J. Bligh
2006-05-05 16:22 ` Bob Picco
2006-05-05 16:22 ` Bob Picco
2006-05-05 16:18 ` Bob Picco
2006-05-05 16:18 ` Bob Picco
2006-05-06 8:32 ` Nick Piggin
2006-05-06 8:32 ` Nick Piggin
2006-05-07 13:07 ` Andy Whitcroft
2006-05-07 13:07 ` Andy Whitcroft
2006-05-07 13:18 ` Nick Piggin
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 ` Andy Whitcroft
2006-05-09 11:05 ` [PATCH 1/3] zone init check and report unaligned zone boundries Andy Whitcroft
2006-05-09 11:05 ` Andy Whitcroft
2006-05-09 11:28 ` Nick Piggin
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 ` Andy Whitcroft
2006-05-09 11:05 ` [PATCH 3/3] zone allow unaligned zone boundries Andy Whitcroft
2006-05-09 11:05 ` Andy Whitcroft
2006-05-11 7:59 ` [PATCH 0/3] Zone boundry alignment fixes Andrew Morton
2006-05-11 7:59 ` Andrew Morton
2006-05-12 14:19 ` Ingo Molnar
2006-05-12 14:19 ` Ingo Molnar
2006-05-13 1:39 ` Nick Piggin
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:20 ` 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 ` Andy Whitcroft
2006-05-18 14:21 ` [PATCH 2/2] zone allow unaligned zone boundaries spelling fix Andy Whitcroft
2006-05-18 14:21 ` Andy Whitcroft
2006-05-18 14:49 ` 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:54 ` 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 ` Andy Whitcroft
2006-05-18 15:55 ` [PATCH 2/2] zone allow unaligned zone boundaries spelling fix Andy Whitcroft
2006-05-18 15:55 ` Andy Whitcroft
2006-05-02 15:03 ` assert/crash in __rmqueue() when enabling CONFIG_NUMA Andi Kleen
2006-05-02 15:17 ` Martin J. Bligh
2006-05-02 15:45 ` Andi Kleen
2006-05-02 16:02 ` Martin J. Bligh
2006-05-02 16:05 ` Andi Kleen
2006-05-02 19:47 ` Ingo Molnar
2006-05-02 19:48 ` Ingo Molnar
2006-05-02 19:44 ` Andi Kleen
2006-05-02 19:56 ` Martin Bligh
2006-05-02 20:00 ` Andi Kleen
2006-05-02 20:13 ` Ingo Molnar
2006-05-02 20:12 ` Andi Kleen
2006-05-02 15:52 ` Ingo Molnar
2006-05-02 19:55 ` [RFC, PATCH] cond_resched() added to close_files() Eric Dumazet
2006-05-03 7:01 ` Ingo Molnar
2006-05-12 9:44 ` Andrew Morton
2006-05-12 10:20 ` Ingo Molnar
2006-05-12 12:24 ` Eric Dumazet
2006-05-14 0:09 ` Lee Revell
2006-04-21 11:51 ` assert/crash in __rmqueue() when enabling CONFIG_NUMA Nick Piggin
2006-04-19 11:23 Ingo Molnar
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=20060504091422.GA2346@elte.hu \
--to=mingo@elte.hu \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=apw@shadowen.org \
--cc=bob.picco@hp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mbligh@mbligh.org \
--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 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.