mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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.

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome