From: Yinghai Lu <yinghai@kernel.org>
To: Russ Anderson <rja@sgi.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
tglx@linutronix.de, "H. Peter Anvin" <h.peter.anvin@intel.com>,
Jack Steiner <steiner@sgi.com>
Subject: Re: [BUG] x86: bootmem broken on SGI UV
Date: Fri, 08 Oct 2010 15:57:31 -0700 [thread overview]
Message-ID: <4CAFA1DB.6010802@kernel.org> (raw)
In-Reply-To: <20101008213429.GB7223@sgi.com>
On 10/08/2010 02:34 PM, Russ Anderson wrote:
> [BUG] x86: bootmem broken on SGI UV
>
> Recent community kernels do not boot on SGI UV x86 hardware with
> more than one socket. I suspect the problem is due to recent
> bootmem/e820 changes.
>
> What is happening is the e280 table defines a memory range.
>
> BIOS-e820: 0000000100000000 - 0000001080000000 (usable)
>
> The SRAT table shows that memory range is spread over two nodes.
>
> SRAT: Node 0 PXM 0 100000000-800000000
> SRAT: Node 1 PXM 1 800000000-1000000000
> SRAT: Node 0 PXM 0 1000000000-1080000000
>
> Previously, the kernel early_node_map[] would show three entries
> with the proper node.
>
> [ 0.000000] 0: 0x00100000 -> 0x00800000
> [ 0.000000] 1: 0x00800000 -> 0x01000000
> [ 0.000000] 0: 0x01000000 -> 0x01080000
>
> The problem is recent community kernel early_node_map[] shows
> only two entries with the node 0 entry overlapping the node 1
> entry.
>
> 0: 0x00100000 -> 0x01080000
> 1: 0x00800000 -> 0x01000000
>
> This results in the range 0x800000 -> 0x1000000 getting freed twice
> (by free_all_memory_core_early()) resulting in nasty warnings.
please check
[PATCH] x86, numa: Fix cross nodes mem conf
Russ reported SGI UV is broken recently. He said:
| The SRAT table shows that memory range is spread over two nodes.
|
| SRAT: Node 0 PXM 0 100000000-800000000
| SRAT: Node 1 PXM 1 800000000-1000000000
| SRAT: Node 0 PXM 0 1000000000-1080000000
|
|Previously, the kernel early_node_map[] would show three entries
|with the proper node.
|
|[ 0.000000] 0: 0x00100000 -> 0x00800000
|[ 0.000000] 1: 0x00800000 -> 0x01000000
|[ 0.000000] 0: 0x01000000 -> 0x01080000
|
|The problem is recent community kernel early_node_map[] shows
|only two entries with the node 0 entry overlapping the node 1
|entry.
|
| 0: 0x00100000 -> 0x01080000
| 1: 0x00800000 -> 0x01000000
After looking at the changelog, it turns out it is broken for a while by
following commit
|commit 8716273caef7f55f39fe4fc6c69c5f9f197f41f1
|Author: David Rientjes <rientjes@google.com>
|Date: Fri Sep 25 15:20:04 2009 -0700
|
| x86: Export srat physical topology
before that commit, register_active_regions() is called SRAT memory entries.
Try to use nodememblk_range[] instead of nodes[].
For stable tree: from 2.6.33 to 2.3.36 need this patch by
changing memblock_x86_register_active_regions() with e820_register_active_regions()
Reported-by: Russ Anderson <rja@sgi.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: stable@kernel.org
---
arch/x86/mm/srat_64.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Index: linux-2.6/arch/x86/mm/srat_64.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/srat_64.c
+++ linux-2.6/arch/x86/mm/srat_64.c
@@ -421,9 +421,11 @@ int __init acpi_scan_nodes(unsigned long
return -1;
}
- for_each_node_mask(i, nodes_parsed)
- memblock_x86_register_active_regions(i, nodes[i].start >> PAGE_SHIFT,
- nodes[i].end >> PAGE_SHIFT);
+ for (i = 0; i < num_node_memblks; i++)
+ memblock_x86_register_active_regions(memblk_nodeid[i],
+ node_memblk_range[i].start >> PAGE_SHIFT,
+ node_memblk_range[i].end >> PAGE_SHIFT);
+
/* for out of order entries in SRAT */
sort_node_map();
if (!nodes_cover_memory(nodes)) {
next prev parent reply other threads:[~2010-10-08 22:58 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-08 21:34 [BUG] x86: bootmem broken on SGI UV Russ Anderson
2010-10-08 21:43 ` H. Peter Anvin
2010-10-08 22:15 ` Yinghai Lu
2010-10-08 22:57 ` Yinghai Lu [this message]
2010-10-09 12:59 ` Russ Anderson
2010-10-09 16:39 ` Robin Holt
2010-10-09 18:06 ` Yinghai Lu
2010-10-09 18:17 ` [PATCH -v2] x86, numa: Fix cross nodes memory configuration Yinghai Lu
2010-10-09 18:39 ` [BUG] x86: bootmem broken on SGI UV Linus Torvalds
2010-10-10 10:41 ` Ingo Molnar
2010-10-10 10:43 ` Ingo Molnar
2010-10-10 11:44 ` Robin Holt
2010-10-10 11:56 ` Robin Holt
2010-10-10 14:05 ` Ingo Molnar
2010-10-10 22:51 ` Robin Holt
2010-10-11 2:52 ` [PATCH -v3] x86, numa: Fix cross nodes memory configuration Yinghai Lu
2010-10-11 22:01 ` [tip:x86/urgent] x86, numa: For each node, register the memory blocks actually used tip-bot for Yinghai Lu
2010-10-11 22:05 ` David Rientjes
2010-10-11 22:21 ` H. Peter Anvin
2010-10-11 22:28 ` tip-bot for Yinghai Lu
-- strict thread matches above, loose matches on Subject: below --
2010-10-10 1:04 [BUG] x86: bootmem broken on SGI UV Anvin, H Peter
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=4CAFA1DB.6010802@kernel.org \
--to=yinghai@kernel.org \
--cc=h.peter.anvin@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rja@sgi.com \
--cc=steiner@sgi.com \
--cc=tglx@linutronix.de \
/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.