KAMEZAWA Hiroyuki
f2dbcfa738
mm: clean up for early_pfn_to_nid()
...
What's happening is that the assertion in mm/page_alloc.c:move_freepages()
is triggering:
BUG_ON(page_zone(start_page) != page_zone(end_page));
Once I knew this is what was happening, I added some annotations:
if (unlikely(page_zone(start_page) != page_zone(end_page))) {
printk(KERN_ERR "move_freepages: Bogus zones: "
"start_page[%p] end_page[%p] zone[%p]\n",
start_page, end_page, zone);
printk(KERN_ERR "move_freepages: "
"start_zone[%p] end_zone[%p]\n",
page_zone(start_page), page_zone(end_page));
printk(KERN_ERR "move_freepages: "
"start_pfn[0x%lx] end_pfn[0x%lx]\n",
page_to_pfn(start_page), page_to_pfn(end_page));
printk(KERN_ERR "move_freepages: "
"start_nid[%d] end_nid[%d]\n",
page_to_nid(start_page), page_to_nid(end_page));
...
And here's what I got:
move_freepages: Bogus zones: start_page[2207d0000] end_page[2207dffc0] zone[fffff8103effcb00]
move_freepages: start_zone[fffff8103effcb00] end_zone[fffff8003fffeb00]
move_freepages: start_pfn[0x81f600] end_pfn[0x81f7ff]
move_freepages: start_nid[1] end_nid[0]
My memory layout on this box is:
[ 0.000000] Zone PFN ranges:
[ 0.000000] Normal 0x00000000 -> 0x0081ff5d
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[8] active PFN ranges
[ 0.000000] 0: 0x00000000 -> 0x00020000
[ 0.000000] 1: 0x00800000 -> 0x0081f7ff
[ 0.000000] 1: 0x0081f800 -> 0x0081fe50
[ 0.000000] 1: 0x0081fed1 -> 0x0081fed8
[ 0.000000] 1: 0x0081feda -> 0x0081fedb
[ 0.000000] 1: 0x0081fedd -> 0x0081fee5
[ 0.000000] 1: 0x0081fee7 -> 0x0081ff51
[ 0.000000] 1: 0x0081ff59 -> 0x0081ff5d
So it's a block move in that 0x81f600-->0x81f7ff region which triggers
the problem.
This patch:
Declaration of early_pfn_to_nid() is scattered over per-arch include
files, and it seems it's complicated to know when the declaration is used.
I think it makes fix-for-memmap-init not easy.
This patch moves all declaration to include/linux/mm.h
After this,
if !CONFIG_NODES_POPULATES_NODE_MAP && !CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
-> Use static definition in include/linux/mm.h
else if !CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
-> Use generic definition in mm/page_alloc.c
else
-> per-arch back end function will be called.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Tested-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Reported-by: David Miller <davem@davemlloft.net>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: <stable@kernel.org> [2.6.25.x, 2.6.26.x, 2.6.27.x, 2.6.28.x]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-02-18 15:37:55 -08:00
..
2008-12-18 11:59:24 +01:00
2009-01-10 06:13:09 -08:00
2009-01-12 19:24:23 +01:00
2009-01-04 13:22:58 +01:00
2008-10-23 00:01:39 -07:00
2009-01-06 17:39:52 +01:00
2009-01-10 06:13:09 -08:00
2008-12-30 13:31:37 -08:00
2008-10-23 00:01:39 -07:00
2009-02-04 21:33:09 -08:00
2009-02-09 14:56:37 +01:00
2008-10-22 22:55:23 -07:00
2008-11-11 21:12:05 -05:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-03 14:11:58 +01:00
2008-10-22 22:55:23 -07:00
2008-12-30 13:31:28 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-06 15:59:10 -08:00
2009-01-06 15:59:10 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-13 18:56:30 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-16 18:40:32 +01:00
2008-10-22 22:55:23 -07:00
2009-01-14 19:56:50 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-02-09 11:15:15 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-23 22:37:28 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-29 18:19:29 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-20 09:15:46 +01:00
2008-11-23 13:20:52 +01:00
2009-01-31 00:16:22 +05:30
2008-10-22 22:55:23 -07:00
2008-12-29 18:17:32 +01:00
2008-12-25 13:38:54 +01:00
2008-11-11 16:19:48 -08:00
2008-10-22 22:55:23 -07:00
2008-10-31 10:12:38 +01:00
2008-10-22 22:55:23 -07:00
2008-10-31 10:12:38 +01:00
2008-10-22 22:55:23 -07:00
2008-12-17 00:26:38 +01:00
2008-10-22 22:55:23 -07:00
2008-11-28 13:06:27 +01:00
2009-01-04 13:23:00 +01:00
2008-12-16 17:40:57 -08:00
2008-10-22 22:55:23 -07:00
2008-10-23 00:20:33 -07:00
2008-12-12 11:59:49 +01:00
2008-12-12 11:59:49 +01:00
2008-10-31 10:12:38 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-11-11 13:51:52 -08:00
2008-10-22 22:55:23 -07:00
2008-11-01 18:57:08 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-18 15:01:25 -08:00
2008-12-12 11:58:36 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-03 08:26:40 +01:00
2008-12-30 16:20:19 -08:00
2009-01-16 13:47:04 +01:00
2008-10-22 22:55:23 -07:00
2008-11-09 10:07:58 -08:00
2008-12-30 16:10:19 -08:00
2008-10-22 22:55:23 -07:00
2008-12-16 17:40:57 -08:00
2008-11-10 08:41:47 +01:00
2008-10-23 00:20:33 -07:00
2008-12-08 14:31:52 +01:00
2009-01-03 18:53:31 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-14 19:56:50 -08:00
2008-10-22 22:55:23 -07:00
2008-10-31 10:01:57 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-03 14:11:07 +01:00
2008-10-22 22:55:23 -07:00
2008-12-31 16:55:42 +02:00
2009-02-15 02:47:35 +02:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-03 19:00:55 +01:00
2008-11-23 19:57:01 +01:00
2008-10-22 22:55:23 -07:00
2009-02-10 00:39:14 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-31 00:17:13 +05:30
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-16 18:47:17 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-02-18 15:37:55 -08:00
2009-02-18 15:37:55 -08:00
2008-10-22 22:55:23 -07:00
2009-01-05 14:08:34 +01:00
2009-02-09 12:42:59 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-21 15:13:53 -08:00
2008-12-28 12:21:10 -08:00
2009-01-31 00:17:39 +05:30
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-02-12 08:27:27 +01:00
2008-10-22 22:55:23 -07:00
2009-02-17 14:27:39 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-17 18:58:19 +01:00
2008-12-29 18:17:36 +01:00
2008-10-22 22:55:23 -07:00
2008-12-31 23:05:57 +10:30
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-23 18:42:06 +01:00
2008-12-18 13:30:16 -08:00
Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core
2008-12-23 16:27:23 +01:00
2008-10-22 22:55:23 -07:00
2008-12-16 18:34:51 +01:00
2008-10-22 22:55:23 -07:00
2008-12-16 18:34:51 +01:00
2009-02-04 21:33:09 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-16 21:10:27 +01:00
2008-10-22 22:55:23 -07:00
2009-02-09 14:56:39 +01:00
2008-10-22 22:55:23 -07:00
2009-01-31 00:18:03 +05:30
2008-12-20 09:15:46 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-11-12 18:55:46 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-04 13:23:02 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-31 00:18:58 +05:30
2009-01-31 00:18:30 +05:30
2008-12-18 15:01:22 -08:00
2008-10-22 22:55:23 -07:00
2008-12-16 21:10:28 +01:00
2009-01-04 15:39:26 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-16 19:31:52 +01:00
2008-10-22 22:55:23 -07:00
2009-02-09 08:15:39 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-31 16:52:28 +02:00
2009-01-31 00:19:32 +05:30
2008-12-28 10:04:00 +01:00
2008-10-22 22:55:23 -07:00
2008-12-29 13:18:40 +01:00
2008-10-23 12:38:39 -07:00
2009-01-21 09:43:18 +01:00
2008-10-22 22:55:23 -07:00
Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core
2008-12-23 16:27:23 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-28 12:21:10 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-25 16:57:47 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2009-01-03 18:53:31 +01:00
2008-12-08 13:49:45 +01:00
2009-02-10 00:39:14 +01:00
2008-11-09 21:05:43 +01:00
2008-10-22 22:55:23 -07:00
2008-10-28 16:54:49 +01:00
2008-12-04 08:52:14 +01:00
2008-12-30 16:10:19 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-11-19 18:49:57 -08:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-31 16:52:30 +02:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-12-14 16:24:38 -08:00
2008-11-01 18:58:01 -07:00
2008-12-31 16:52:28 +02:00
2008-11-03 10:52:21 +01:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00
2008-10-22 22:55:23 -07:00