All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@elte.hu>, James Morris <jmorris@namei.org>,
	linux-kernel@vger.kernel.org, airlied@linux.ie
Subject: Re: Config NO_BOOTMEM breaks my amd64 box
Date: Wed, 31 Mar 2010 16:54:50 -0700	[thread overview]
Message-ID: <4BB3E0CA.5060405@kernel.org> (raw)
In-Reply-To: <4BB3DC23.50005@zytor.com>

On 03/31/2010 04:34 PM, H. Peter Anvin wrote:
> On 03/31/2010 03:47 PM, Yinghai Lu wrote:
>>>
>>> Well and that whole #ifdeffery is disgusting as well - even if the goal was to 
>>> remove CONFIG_NO_BOOTMEM ASAP.
>>>
>>> Please learn to use proper intermediate helper functions and at minimum put 
>>> the conversion ugliness somewhere that doesnt intrude our daily flow in .c 
>>> files. The best rule is to _never ever_ put an #ifdef construct into a .c 
>>> file. It doesnt matter what the goal if the #ifdef is - such ugliness in code 
>>> is never justified.
>>
>> if you agree that i can have one nobootmem.c in mm/
>>
> 
> That would be better, or more commonly, use inlines.
> 
> I'm still totally puzzled about this patch as well as the comment:
> 
> +#if defined(CONFIG_NO_BOOTMEM) && defined(MAX_NUMNODES)
> +	/* In case some 32bit systems don't have RAM installed on node0 */
> +        totalram_pages += free_all_memory_core_early(MAX_NUMNODES);
> +#else
>  	totalram_pages += free_all_bootmem();
> +#endif
> 
> 
> Why is that "32 bits" specific?  Second, MAX_NUMNODES is defined
> whenever <linux/numa.h> is included, so what on Earth is this supposed
> to signify?  Are you trying to say MAX_NUMNODES > 1?  Or are you trying
> to say CONFIG_NUMA?

you are right, this one should be more clear.

Subject: [PATCH -v2] nobootmem, x86: Fix 32bit system without RAM on Node0

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
becom low ram.

Try to use MAX_NUMNODES like 64 numa does.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 mm/bootmem.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6/mm/bootmem.c
===================================================================
--- linux-2.6.orig/mm/bootmem.c
+++ linux-2.6/mm/bootmem.c
@@ -303,7 +303,7 @@ 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);
+	return free_all_memory_core_early(MAX_NUMNODES);
 #else
 	return free_all_bootmem_core(NODE_DATA(0)->bdata);
 #endif

> 
> Furthermore, I really don't see the connection between this and James
> Morris' reported problem, which he reports as "amd64", which presumably
> is an x86-64 kernel and not 32 bits...  James, is that correct?  Any
> more details you can give about the system?  I *really* don't want to go
> into cargo cult programming mode, that would suck eggs no matter what.

it happened one of my test setup, node0 ram disappear somehow.
and i found the 32bit numa doesn't work on that.

Thanks

Yinghai

  reply	other threads:[~2010-03-31 23:56 UTC|newest]

Thread overview: 46+ 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 [this message]
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
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
  -- strict thread matches above, loose matches on Subject: below --
2010-04-01  3:16 H. Peter Anvin
2010-04-01  3:35 ` Yinghai Lu

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=4BB3E0CA.5060405@kernel.org \
    --to=yinghai@kernel.org \
    --cc=airlied@linux.ie \
    --cc=hpa@zytor.com \
    --cc=jmorris@namei.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    /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.