From: "H. Peter Anvin" <hpa@zytor.com>
To: Yinghai Lu <yinghai@kernel.org>, Ingo Molnar <mingo@elte.hu>,
Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org,
Johannes Weiner <hannes@cmpxchg.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH -v3] nobootmem/bootmem, x86: Fix 32bit numa system without RAM on Node0
Date: Wed, 31 Mar 2010 20:18:00 -0700 [thread overview]
Message-ID: <ca9eedfe-479e-4ccf-9663-66afcd2bbd69@email.android.com> (raw)
In-Reply-To: <4BB3FEA6.8030309@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 4700 bytes --]
Please address the separate bug fix in a separate patch.
"Yinghai Lu" <yinghai@kernel.org> wrote:
>
>on one system without RAM on nod0, got following dump with 32bit numa kernel
>
>early_node_map[4] active PFN ranges
> 1: 0x00000010 -> 0x00000099
> 1: 0x00000100 -> 0x0007da00
> 1: 0x0007e800 -> 0x0007ffa0
> 1: 0x0007ffae -> 0x0007ffb0
>
>Subtract (29 early reservations)
> #000 [0000001000 - 0000002000]
> #001 [0000089000 - 000008f000]
> #002 [0000091000 - 0000093500]
> #003 [0000094000 - 0000099000]
> #004 [0000099400 - 0000100000]
> #005 [0000200000 - 0000eb7644]
> #006 [0000eb8000 - 0000ec327c]
> #007 [007c400000 - 007c40e000]
> #008 [007c440000 - 007c44e000]
> #009 [007c480000 - 007c48e000]
> #010 [007c4c0000 - 007c4ce000]
> #011 [007c500000 - 007c50e000]
> #012 [007c540000 - 007c54e000]
> #013 [007c580000 - 007c58e000]
> #014 [007c5c0000 - 007c5ce000]
> #015 [007c674000 - 007cbfe000]
> #016 [007cbfe500 - 007cbfe530]
> #017 [007cbfe540 - 007cbfe5d0]
> #018 [007cbfe600 - 007cbfe620]
> #019 [007cbfe640 - 007cbfe660]
> #020 [007cbfe680 - 007cbfe684]
> #021 [007cbfe6c0 - 007cbfe6c4]
> #022 [007cbfe700 - 007cbfe77e]
> #023 [007cbfe780 - 007cbfe7fe]
> #024 [007cbfe800 - 007cbfec54]
> #025 [007cbfec80 - 007cbfeede]
> #026 [007cbfef00 - 007cbfef2d]
> #027 [007cbfef40 - 007e800000]
> #028 [007e9ca000 - 007ff95000]
>(0 free memory ranges)
>Initializing HighMem for node 0 (00000000:00000000)
>Initializing HighMem for node 1 (00000000:00000000)
>Memory: 0k/2096832k available (6662k kernel code, 2096300k reserved, 4829k data, 484k init, 0k highmem)
>virtual kernel memory layout:
> fixmap : 0xff637000 - 0xfffff000 (10016 kB)
> pkmap : 0xff200000 - 0xff400000 (2048 kB)
> vmalloc : 0xc07b0000 - 0xff1fe000 (1002 MB)
> lowmem : 0x40000000 - 0xbffb0000 (2047 MB)
> .init : 0x40d39000 - 0x40db2000 ( 484 kB)
> .data : 0x40881924 - 0x40d38e1c (4829 kB)
> .text : 0x40200000 - 0x40881924 (6662 kB)
>Checking if this processor honours the WP bit even in supervisor mode...Ok.
>swapper: page allocation failure. order:0, mode:0x0
>Pid: 0, comm: swapper Not tainted 2.6.34-rc3-tip-03818-g4b1ea6c-dirty #35
>Call Trace:
> [<4087a5dc>] ? printk+0xf/0x11
> [<40286728>] __alloc_pages_nodemask+0x417/0x487
> [<402a9ce1>] new_slab+0xe2/0x1fe
> [<402aa5b2>] kmem_cache_open+0x185/0x358
> [<402abbc0>] T.954+0x1c/0x60
> [<40d52a29>] kmem_cache_init+0x24/0x113
> [<40d39738>] start_kernel+0x166/0x2e4
> [<40d3940e>] ? unknown_bootoption+0x0/0x18e
> [<40d390ce>] i386_start_kernel+0xce/0xd5
>Mem-Info:
>Node 1 DMA per-cpu:
>CPU 0: hi: 0, btch: 1 usd: 0
>Node 1 Normal per-cpu:
>CPU 0: hi: 0, btch: 1 usd: 0
>active_anon:0 inactive_anon:0 isolated_anon:0
> active_file:0 inactive_file:0 isolated_file:0
> unevictable:0 dirty:0 writeback:0 unstable:0
> free:0 slab_reclaimable:0 slab_unreclaimable:0
> mapped:0 shmem:0 pagetables:0 bounce:0
>
>When 32bit numa is used, free_all_bootmem() will still only go over with
>node id 0.
>
>If node 0 doesn't have RAM installed, We need to go with node1
>because early_node_map still use 1 for all ranges, and ram from node1
>become low ram.
>
>Try to use MAX_NUMNODES like 64 numa does.
>
>Also fixes BOOTMEM path by loop bdata_list.
>Note: this bug exist before We have NO_BOOTMEM support.
>
>-v3: add more comments, and fix bootmem path too.
>
>Signed-off-by: Yinghai Lu <yinghai@kernel.org>
>
>---
> mm/bootmem.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
>Index: linux-2.6/mm/bootmem.c
>===================================================================
>--- linux-2.6.orig/mm/bootmem.c
>+++ linux-2.6/mm/bootmem.c
>@@ -303,9 +303,22 @@ unsigned long __init free_all_bootmem_no
> unsigned long __init free_all_bootmem(void)
> {
> #ifdef CONFIG_NO_BOOTMEM
>- return free_all_memory_core_early(NODE_DATA(0)->node_id);
>+ /*
>+ * We need to use MAX_NUMNODES instead of NODE_DATA(0)->node_id
>+ * because in some case like Node0 doesnt have RAM installed
>+ * low ram will be on Node1
>+ * Use MAX_NUMNODES will make sure all ranges in early_node_map[]
>+ * will be used instead of only Node0 related
>+ */
>+ return free_all_memory_core_early(MAX_NUMNODES);
> #else
>- return free_all_bootmem_core(NODE_DATA(0)->bdata);
>+ unsigned long total_pages = 0;
>+ bootmem_data_t *bdata;
>+
>+ list_for_each_entry(bdata, &bdata_list, list)
>+ total_pages = free_all_bootmem_core(bdata);
>+
>+ return total_pages;
> #endif
> }
>
--
Sent from my mobile phone, pardon any lack of formatting.
next prev parent reply other threads:[~2010-04-01 3:22 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-31 4:49 Config NO_BOOTMEM breaks my amd64 box James Morris
2010-03-31 6:26 ` H. Peter Anvin
2010-03-31 6:47 ` James Morris
2010-03-31 16:25 ` Yinghai Lu
2010-03-31 18:59 ` Ingo Molnar
2010-03-31 20:57 ` Dave Airlie
2010-03-31 21:02 ` Linus Torvalds
2010-03-31 21:40 ` Ingo Molnar
2010-03-31 21:47 ` Ingo Molnar
2010-03-31 21:14 ` Dave Airlie
2010-03-31 22:02 ` Yinghai Lu
2010-03-31 22:28 ` H. Peter Anvin
2010-03-31 22:58 ` James Morris
2010-03-31 23:02 ` Ingo Molnar
2010-03-31 23:35 ` H. Peter Anvin
2010-03-31 23:43 ` James Morris
2010-03-31 23:48 ` H. Peter Anvin
2010-04-01 1:00 ` James Morris
2010-04-01 12:52 ` Ingo Molnar
2010-04-08 6:32 ` Ingo Molnar
2010-04-08 7:00 ` Yinghai
2010-04-08 7:27 ` Ingo Molnar
2010-04-09 2:43 ` Dave Airlie
2010-04-08 8:05 ` James Morris
2010-04-08 8:22 ` Ingo Molnar
2010-03-31 22:05 ` Yinghai Lu
2010-03-31 22:13 ` Ingo Molnar
2010-03-31 22:16 ` Yinghai Lu
2010-03-31 22:41 ` Ingo Molnar
2010-03-31 22:47 ` Yinghai Lu
2010-03-31 22:56 ` Ingo Molnar
2010-04-01 0:01 ` Johannes Weiner
2010-03-31 23:34 ` H. Peter Anvin
2010-03-31 23:54 ` Yinghai Lu
2010-04-01 0:35 ` H. Peter Anvin
2010-04-01 1:07 ` Yinghai Lu
2010-04-01 2:02 ` [PATCH -v3] nobootmem/bootmem, x86: Fix 32bit numa system without RAM on Node0 Yinghai Lu
2010-04-01 3:18 ` H. Peter Anvin [this message]
2010-04-01 3:30 ` Yinghai Lu
2010-04-01 3:44 ` [PATCH -v4 1/2] nobootmem, " Yinghai Lu
2010-04-01 3:45 ` [PATCH -v4 2/2] bootmem, " Yinghai Lu
2010-04-01 22:57 ` [tip:x86/urgent] bootmem, x86: Fix 32bit numa system without RAM on node 0 tip-bot for Yinghai Lu
2010-04-01 22:57 ` [tip:x86/urgent] nobootmem, " tip-bot for Yinghai Lu
2010-03-31 10:51 ` Config NO_BOOTMEM breaks my amd64 box Stefan Richter
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=ca9eedfe-479e-4ccf-9663-66afcd2bbd69@email.android.com \
--to=hpa@zytor.com \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=yinghai@kernel.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.