All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] slab: fix cache_cache bootstrap in kmem_cache_init()
@ 2008-03-25 21:59 Pekka J Enberg
  2008-03-26  3:27 ` Christoph Lameter
  0 siblings, 1 reply; 6+ messages in thread
From: Pekka J Enberg @ 2008-03-25 21:59 UTC (permalink / raw)
  To: akpm; +Cc: mel, olaf, clameter, dan.yeisley, linux-kernel

From: Daniel Yeisley <dan.yeisley@unisys.com>

Commit 556a169dab38b5100df6f4a45b655dddd3db94c1 ("slab: fix bootstrap on
memoryless node") introduced bootstrap-time cache_cache list3s for all nodes
but forgot that initkmem_list3 needs to be accessed by [somevalue + node]. This
patch fixes list_add() corruption in mm/slab.c seen on the ES7000.

Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Olaf Hering <olaf@aepfle.de>
Cc: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Dan Yeisley <dan.yeisley@unisys.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
Andrew/Christoph, this needs to go into 2.6.25 and probably 2.6.24.x as 
well. Hopefully either Mel or Olaf can test this on their machines to 
confirm the fix doesn't break their setup.

 mm/slab.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: linux-2.6/mm/slab.c
===================================================================
--- linux-2.6.orig/mm/slab.c
+++ linux-2.6/mm/slab.c
@@ -1481,7 +1481,7 @@ void __init kmem_cache_init(void)
 	list_add(&cache_cache.next, &cache_chain);
 	cache_cache.colour_off = cache_line_size();
 	cache_cache.array[smp_processor_id()] = &initarray_cache.cache;
-	cache_cache.nodelists[node] = &initkmem_list3[CACHE_CACHE];
+	cache_cache.nodelists[node] = &initkmem_list3[CACHE_CACHE + node];
 
 	/*
 	 * struct kmem_cache size depends on nr_node_ids, which
@@ -1602,7 +1602,7 @@ void __init kmem_cache_init(void)
 		int nid;
 
 		for_each_online_node(nid) {
-			init_list(&cache_cache, &initkmem_list3[CACHE_CACHE], nid);
+			init_list(&cache_cache, &initkmem_list3[CACHE_CACHE + nid], nid);
 
 			init_list(malloc_sizes[INDEX_AC].cs_cachep,
 				  &initkmem_list3[SIZE_AC + nid], nid);

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] slab: fix cache_cache bootstrap in kmem_cache_init()
  2008-03-25 21:59 [PATCH] slab: fix cache_cache bootstrap in kmem_cache_init() Pekka J Enberg
@ 2008-03-26  3:27 ` Christoph Lameter
  2008-03-26  6:21   ` Pekka Enberg
  0 siblings, 1 reply; 6+ messages in thread
From: Christoph Lameter @ 2008-03-26  3:27 UTC (permalink / raw)
  To: Pekka J Enberg; +Cc: akpm, mel, olaf, dan.yeisley, linux-kernel

On Tue, 25 Mar 2008, Pekka J Enberg wrote:

> Andrew/Christoph, this needs to go into 2.6.25 and probably 2.6.24.x as 
> well. Hopefully either Mel or Olaf can test this on their machines to 
> confirm the fix doesn't break their setup.

Ok. I see the problem in the amazing artwork of NUMA bootstrap in SLAB 
that was made even more complex with the fixes late in 2.6.24. 
Now we are up for the da capo on this in 2.6.25. Sigh.

Will merge if I get confirmation that this indeed addresses the issue.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] slab: fix cache_cache bootstrap in kmem_cache_init()
  2008-03-26  3:27 ` Christoph Lameter
@ 2008-03-26  6:21   ` Pekka Enberg
  2008-03-26 12:37     ` Daniel Yeisley
  0 siblings, 1 reply; 6+ messages in thread
From: Pekka Enberg @ 2008-03-26  6:21 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: akpm, mel, olaf, dan.yeisley, linux-kernel

Christoph Lameter wrote:
> Will merge if I get confirmation that this indeed addresses the issue.

It fixes the problem reported by Daniel:

http://lkml.org/lkml/2008/3/25/249

But what I worry about is breaking setups that have memoryless nodes.

			Pekka

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] slab: fix cache_cache bootstrap in kmem_cache_init()
  2008-03-26  6:21   ` Pekka Enberg
@ 2008-03-26 12:37     ` Daniel Yeisley
  2008-03-26 16:28       ` Christoph Lameter
  0 siblings, 1 reply; 6+ messages in thread
From: Daniel Yeisley @ 2008-03-26 12:37 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: Christoph Lameter, akpm, mel, olaf, linux-kernel

On Wed, 2008-03-26 at 08:21 +0200, Pekka Enberg wrote:
> Christoph Lameter wrote:
> > Will merge if I get confirmation that this indeed addresses the issue.
> 
> It fixes the problem reported by Daniel:
> 
> http://lkml.org/lkml/2008/3/25/249
> 
> But what I worry about is breaking setups that have memoryless nodes.
> 
> 			Pekka

The only way I could get the ES7000 to boot with 2.6.24.x was with
memoryless nodes (or numa=off).  The list corruption I saw was due to
CPU 0 not being on node 0.  
I do see problems with memoryless nodes on 2.6.25-rc.  I'll post a patch
for that shortly.

Dan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] slab: fix cache_cache bootstrap in kmem_cache_init()
  2008-03-26 12:37     ` Daniel Yeisley
@ 2008-03-26 16:28       ` Christoph Lameter
  2008-03-26 17:16         ` Yeisley, Dan P.
  0 siblings, 1 reply; 6+ messages in thread
From: Christoph Lameter @ 2008-03-26 16:28 UTC (permalink / raw)
  To: Daniel Yeisley; +Cc: Pekka Enberg, akpm, mel, olaf, linux-kernel

On Wed, 26 Mar 2008, Daniel Yeisley wrote:

> The only way I could get the ES7000 to boot with 2.6.24.x was with
> memoryless nodes (or numa=off).  The list corruption I saw was due to
> CPU 0 not being on node 0.  

What is the ES7000?

> I do see problems with memoryless nodes on 2.6.25-rc.  I'll post a patch
> for that shortly.

Another patch in addition to the one we are discussing? Or another 
revision of the patch?


^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH] slab: fix cache_cache bootstrap in kmem_cache_init()
  2008-03-26 16:28       ` Christoph Lameter
@ 2008-03-26 17:16         ` Yeisley, Dan P.
  0 siblings, 0 replies; 6+ messages in thread
From: Yeisley, Dan P. @ 2008-03-26 17:16 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: Pekka Enberg, akpm, mel, olaf, linux-kernel



> -----Original Message-----
> From: Christoph Lameter [mailto:clameter@sgi.com]
> Sent: Wednesday, March 26, 2008 12:28
> To: Yeisley, Dan P.
> Cc: Pekka Enberg; akpm@linux-foundation.org; mel@csn.ul.ie;
> olaf@aepfle.de; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH] slab: fix cache_cache bootstrap in
kmem_cache_init()
> 
> On Wed, 26 Mar 2008, Daniel Yeisley wrote:
> 
> > The only way I could get the ES7000 to boot with 2.6.24.x was with
> > memoryless nodes (or numa=off).  The list corruption I saw was due
to
> > CPU 0 not being on node 0.
> 
> What is the ES7000?
> 

The ES7000 is a server built by Unisys that supports up to 32 CPU
sockets (Xeon or Itanium).

> > I do see problems with memoryless nodes on 2.6.25-rc.  I'll post a
patch
> > for that shortly.
> 
> Another patch in addition to the one we are discussing? Or another
> revision of the patch?

I wrote another patch that affects arch/x86.  

http://lkml.org/lkml/2008/3/26/165

CPUs on memoryless nodes aren't being moved to nodes with memory.  

Dan

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-03-26 17:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-25 21:59 [PATCH] slab: fix cache_cache bootstrap in kmem_cache_init() Pekka J Enberg
2008-03-26  3:27 ` Christoph Lameter
2008-03-26  6:21   ` Pekka Enberg
2008-03-26 12:37     ` Daniel Yeisley
2008-03-26 16:28       ` Christoph Lameter
2008-03-26 17:16         ` Yeisley, Dan P.

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.