From: Nishanth Aravamudan <nacc@us.ibm.com>
To: Pekka J Enberg <penberg@cs.helsinki.fi>
Cc: lee.schermerhorn@hp.com, Olaf Hering <olaf@aepfle.de>,
Linux MM <linux-mm@kvack.org>, Mel Gorman <mel@csn.ul.ie>,
linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
akpm@linux-foundation.org,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Christoph Lameter <clameter@sgi.com>
Subject: Re: [PATCH] Fix boot problem in situations where the boot CPU is running on a memoryless node
Date: Wed, 23 Jan 2008 11:52:20 -0800 [thread overview]
Message-ID: <20080123195220.GB3848@us.ibm.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0801231906520.1028@sbz-30.cs.Helsinki.FI>
On 23.01.2008 [19:29:15 +0200], Pekka J Enberg wrote:
> Hi,
>
> On Wed, 23 Jan 2008, Mel Gorman wrote:
> > Applied in combination with the N_NORMAL_MEMORY revert and it fails to
> > boot. Console is as follows;
>
> Thanks for testing!
>
> On Wed, 23 Jan 2008, Mel Gorman wrote:
> > [c0000000005c3b40] c0000000000dadb4 .cache_grow+0x7c/0x338
> > [c0000000005c3c00] c0000000000db518 .fallback_alloc+0x1c0/0x224
> > [c0000000005c3cb0] c0000000000db920 .kmem_cache_alloc+0xe0/0x14c
> > [c0000000005c3d50] c0000000000dcbd0 .kmem_cache_create+0x230/0x4cc
> > [c0000000005c3e30] c0000000004c049c .kmem_cache_init+0x1ec/0x51c
> > [c0000000005c3ee0] c00000000049f8d8 .start_kernel+0x304/0x3fc
> > [c0000000005c3f90] c000000000008594 .start_here_common+0x54/0xc0
> >
> > 0xc0000000000dadb4 is in cache_grow (mm/slab.c:2782).
> > 2777 local_flags = flags & (GFP_CONSTRAINT_MASK|GFP_RECLAIM_MASK);
> > 2778
> > 2779 /* Take the l3 list lock to change the colour_next on this node */
> > 2780 check_irq_off();
> > 2781 l3 = cachep->nodelists[nodeid];
> > 2782 spin_lock(&l3->list_lock);
> > 2783
> > 2784 /* Get colour for the slab, and cal the next value. */
> > 2785 offset = l3->colour_next;
> > 2786 l3->colour_next++;
>
> Ok, so it's too early to fallback_alloc() because in kmem_cache_init() we
> do:
>
> for (i = 0; i < NUM_INIT_LISTS; i++) {
> kmem_list3_init(&initkmem_list3[i]);
> if (i < MAX_NUMNODES)
> cache_cache.nodelists[i] = NULL;
> }
>
> Fine. But, why are we hitting fallback_alloc() in the first place? It's
> definitely not because of missing ->nodelists as we do:
>
> cache_cache.nodelists[node] = &initkmem_list3[CACHE_CACHE];
>
> before attempting to set up kmalloc caches. Now, if I understood
> correctly, we're booting off a memoryless node so kmem_getpages() will
> return NULL thus forcing us to fallback_alloc() which is unavailable at
> this point.
>
> As far as I can tell, there are two ways to fix this:
>
> (1) don't boot off a memoryless node (why are we doing this in the first
> place?)
On at least one of the machines in question, wasn't it the case that
node 0 had all the memory and node 1 had all the CPUs? In that case, you
would have to boot off a memoryless node? And as long as that is a
physically valid configuration, the kernel should handle it.
> (2) initialize cache_cache.nodelists with initmem_list3 equivalents
> for *each node hat has normal memory*
>
> I am still wondering why this worked before, though.
I bet we didn't notice this breaking because SLUB became the default and
SLAB isn't on in the test.kernel.org testing, for instance. Perhaps we
should add a second set of runs for some of the boxes there to run with
CONFIG_SLAB on?
I'm curious if we know, for sure, of a kernel with CONFIG_SLAB=y that
has booted all of the boxes reporting issues? That is, did they all work
with 2.6.23?
Thanks,
Nish
WARNING: multiple messages have this Message-ID (diff)
From: Nishanth Aravamudan <nacc@us.ibm.com>
To: Pekka J Enberg <penberg@cs.helsinki.fi>
Cc: Mel Gorman <mel@csn.ul.ie>,
akpm@linux-foundation.org, Christoph Lameter <clameter@sgi.com>,
linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
lee.schermerhorn@hp.com, Linux MM <linux-mm@kvack.org>,
Olaf Hering <olaf@aepfle.de>
Subject: Re: [PATCH] Fix boot problem in situations where the boot CPU is running on a memoryless node
Date: Wed, 23 Jan 2008 11:52:20 -0800 [thread overview]
Message-ID: <20080123195220.GB3848@us.ibm.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0801231906520.1028@sbz-30.cs.Helsinki.FI>
On 23.01.2008 [19:29:15 +0200], Pekka J Enberg wrote:
> Hi,
>
> On Wed, 23 Jan 2008, Mel Gorman wrote:
> > Applied in combination with the N_NORMAL_MEMORY revert and it fails to
> > boot. Console is as follows;
>
> Thanks for testing!
>
> On Wed, 23 Jan 2008, Mel Gorman wrote:
> > [c0000000005c3b40] c0000000000dadb4 .cache_grow+0x7c/0x338
> > [c0000000005c3c00] c0000000000db518 .fallback_alloc+0x1c0/0x224
> > [c0000000005c3cb0] c0000000000db920 .kmem_cache_alloc+0xe0/0x14c
> > [c0000000005c3d50] c0000000000dcbd0 .kmem_cache_create+0x230/0x4cc
> > [c0000000005c3e30] c0000000004c049c .kmem_cache_init+0x1ec/0x51c
> > [c0000000005c3ee0] c00000000049f8d8 .start_kernel+0x304/0x3fc
> > [c0000000005c3f90] c000000000008594 .start_here_common+0x54/0xc0
> >
> > 0xc0000000000dadb4 is in cache_grow (mm/slab.c:2782).
> > 2777 local_flags = flags & (GFP_CONSTRAINT_MASK|GFP_RECLAIM_MASK);
> > 2778
> > 2779 /* Take the l3 list lock to change the colour_next on this node */
> > 2780 check_irq_off();
> > 2781 l3 = cachep->nodelists[nodeid];
> > 2782 spin_lock(&l3->list_lock);
> > 2783
> > 2784 /* Get colour for the slab, and cal the next value. */
> > 2785 offset = l3->colour_next;
> > 2786 l3->colour_next++;
>
> Ok, so it's too early to fallback_alloc() because in kmem_cache_init() we
> do:
>
> for (i = 0; i < NUM_INIT_LISTS; i++) {
> kmem_list3_init(&initkmem_list3[i]);
> if (i < MAX_NUMNODES)
> cache_cache.nodelists[i] = NULL;
> }
>
> Fine. But, why are we hitting fallback_alloc() in the first place? It's
> definitely not because of missing ->nodelists as we do:
>
> cache_cache.nodelists[node] = &initkmem_list3[CACHE_CACHE];
>
> before attempting to set up kmalloc caches. Now, if I understood
> correctly, we're booting off a memoryless node so kmem_getpages() will
> return NULL thus forcing us to fallback_alloc() which is unavailable at
> this point.
>
> As far as I can tell, there are two ways to fix this:
>
> (1) don't boot off a memoryless node (why are we doing this in the first
> place?)
On at least one of the machines in question, wasn't it the case that
node 0 had all the memory and node 1 had all the CPUs? In that case, you
would have to boot off a memoryless node? And as long as that is a
physically valid configuration, the kernel should handle it.
> (2) initialize cache_cache.nodelists with initmem_list3 equivalents
> for *each node hat has normal memory*
>
> I am still wondering why this worked before, though.
I bet we didn't notice this breaking because SLUB became the default and
SLAB isn't on in the test.kernel.org testing, for instance. Perhaps we
should add a second set of runs for some of the boxes there to run with
CONFIG_SLAB on?
I'm curious if we know, for sure, of a kernel with CONFIG_SLAB=y that
has booted all of the boxes reporting issues? That is, did they all work
with 2.6.23?
Thanks,
Nish
WARNING: multiple messages have this Message-ID (diff)
From: Nishanth Aravamudan <nacc@us.ibm.com>
To: Pekka J Enberg <penberg@cs.helsinki.fi>
Cc: Mel Gorman <mel@csn.ul.ie>,
akpm@linux-foundation.org, Christoph Lameter <clameter@sgi.com>,
linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
lee.schermerhorn@hp.com, Linux MM <linux-mm@kvack.org>,
Olaf Hering <olaf@aepfle.de>
Subject: Re: [PATCH] Fix boot problem in situations where the boot CPU is running on a memoryless node
Date: Wed, 23 Jan 2008 11:52:20 -0800 [thread overview]
Message-ID: <20080123195220.GB3848@us.ibm.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0801231906520.1028@sbz-30.cs.Helsinki.FI>
On 23.01.2008 [19:29:15 +0200], Pekka J Enberg wrote:
> Hi,
>
> On Wed, 23 Jan 2008, Mel Gorman wrote:
> > Applied in combination with the N_NORMAL_MEMORY revert and it fails to
> > boot. Console is as follows;
>
> Thanks for testing!
>
> On Wed, 23 Jan 2008, Mel Gorman wrote:
> > [c0000000005c3b40] c0000000000dadb4 .cache_grow+0x7c/0x338
> > [c0000000005c3c00] c0000000000db518 .fallback_alloc+0x1c0/0x224
> > [c0000000005c3cb0] c0000000000db920 .kmem_cache_alloc+0xe0/0x14c
> > [c0000000005c3d50] c0000000000dcbd0 .kmem_cache_create+0x230/0x4cc
> > [c0000000005c3e30] c0000000004c049c .kmem_cache_init+0x1ec/0x51c
> > [c0000000005c3ee0] c00000000049f8d8 .start_kernel+0x304/0x3fc
> > [c0000000005c3f90] c000000000008594 .start_here_common+0x54/0xc0
> >
> > 0xc0000000000dadb4 is in cache_grow (mm/slab.c:2782).
> > 2777 local_flags = flags & (GFP_CONSTRAINT_MASK|GFP_RECLAIM_MASK);
> > 2778
> > 2779 /* Take the l3 list lock to change the colour_next on this node */
> > 2780 check_irq_off();
> > 2781 l3 = cachep->nodelists[nodeid];
> > 2782 spin_lock(&l3->list_lock);
> > 2783
> > 2784 /* Get colour for the slab, and cal the next value. */
> > 2785 offset = l3->colour_next;
> > 2786 l3->colour_next++;
>
> Ok, so it's too early to fallback_alloc() because in kmem_cache_init() we
> do:
>
> for (i = 0; i < NUM_INIT_LISTS; i++) {
> kmem_list3_init(&initkmem_list3[i]);
> if (i < MAX_NUMNODES)
> cache_cache.nodelists[i] = NULL;
> }
>
> Fine. But, why are we hitting fallback_alloc() in the first place? It's
> definitely not because of missing ->nodelists as we do:
>
> cache_cache.nodelists[node] = &initkmem_list3[CACHE_CACHE];
>
> before attempting to set up kmalloc caches. Now, if I understood
> correctly, we're booting off a memoryless node so kmem_getpages() will
> return NULL thus forcing us to fallback_alloc() which is unavailable at
> this point.
>
> As far as I can tell, there are two ways to fix this:
>
> (1) don't boot off a memoryless node (why are we doing this in the first
> place?)
On at least one of the machines in question, wasn't it the case that
node 0 had all the memory and node 1 had all the CPUs? In that case, you
would have to boot off a memoryless node? And as long as that is a
physically valid configuration, the kernel should handle it.
> (2) initialize cache_cache.nodelists with initmem_list3 equivalents
> for *each node hat has normal memory*
>
> I am still wondering why this worked before, though.
I bet we didn't notice this breaking because SLUB became the default and
SLAB isn't on in the test.kernel.org testing, for instance. Perhaps we
should add a second set of runs for some of the boxes there to run with
CONFIG_SLAB on?
I'm curious if we know, for sure, of a kernel with CONFIG_SLAB=y that
has booted all of the boxes reporting issues? That is, did they all work
with 2.6.23?
Thanks,
Nish
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2008-01-23 19:52 UTC|newest]
Thread overview: 177+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-15 15:09 crash in kmem_cache_init Olaf Hering
2008-01-15 15:58 ` Olaf Hering
2008-01-17 12:14 ` Pekka Enberg
2008-01-17 12:14 ` Pekka Enberg
2008-01-17 12:14 ` Pekka Enberg
2008-01-17 14:30 ` Christoph Lameter
2008-01-17 14:30 ` Christoph Lameter
2008-01-17 14:30 ` Christoph Lameter
2008-01-17 18:12 ` Olaf Hering
2008-01-17 18:12 ` Olaf Hering
2008-01-17 18:12 ` Olaf Hering
2008-01-17 18:58 ` Christoph Lameter
2008-01-17 18:58 ` Christoph Lameter
2008-01-17 18:58 ` Christoph Lameter
2008-01-17 19:54 ` Olaf Hering
2008-01-17 19:54 ` Olaf Hering
2008-01-17 20:20 ` Olaf Hering
2008-01-17 20:20 ` Olaf Hering
2008-01-17 20:20 ` Olaf Hering
2008-01-19 4:56 ` Christoph Lameter
2008-01-19 4:56 ` Christoph Lameter
2008-01-19 4:56 ` Christoph Lameter
2008-01-17 21:15 ` Olaf Hering
2008-01-17 21:15 ` Olaf Hering
2008-01-17 21:15 ` Olaf Hering
2008-01-18 6:56 ` Olaf Hering
2008-01-18 6:56 ` Olaf Hering
2008-01-18 6:56 ` Olaf Hering
2008-01-18 18:42 ` Christoph Lameter
2008-01-18 18:42 ` Christoph Lameter
2008-01-18 18:42 ` Christoph Lameter
2008-01-19 4:55 ` Christoph Lameter
2008-01-19 4:55 ` Christoph Lameter
2008-01-19 4:55 ` Christoph Lameter
2008-01-18 18:47 ` Christoph Lameter
2008-01-18 18:47 ` Christoph Lameter
2008-01-18 18:47 ` Christoph Lameter
2008-01-18 21:30 ` Mel Gorman
2008-01-18 21:30 ` Mel Gorman
2008-01-18 21:30 ` Mel Gorman
2008-01-18 21:43 ` Christoph Lameter
2008-01-18 21:43 ` Christoph Lameter
2008-01-18 21:43 ` Christoph Lameter
2008-01-18 22:16 ` Christoph Lameter
2008-01-18 22:16 ` Christoph Lameter
2008-01-18 22:16 ` Christoph Lameter
2008-01-18 22:19 ` Nish Aravamudan
2008-01-18 22:19 ` Nish Aravamudan
2008-01-18 22:19 ` Nish Aravamudan
2008-01-18 22:38 ` Christoph Lameter
2008-01-18 22:38 ` Christoph Lameter
2008-01-18 22:38 ` Christoph Lameter
2008-01-18 22:57 ` Olaf Hering
2008-01-18 22:57 ` Olaf Hering
2008-01-18 22:57 ` Olaf Hering
2008-01-22 19:54 ` Mel Gorman
2008-01-22 19:54 ` Mel Gorman
2008-01-22 19:54 ` Mel Gorman
2008-01-22 20:11 ` Christoph Lameter
2008-01-22 20:11 ` Christoph Lameter
2008-01-22 20:11 ` Christoph Lameter
2008-01-22 21:26 ` Mel Gorman
2008-01-22 21:26 ` Mel Gorman
2008-01-22 21:26 ` Mel Gorman
2008-01-22 21:34 ` Christoph Lameter
2008-01-22 21:34 ` Christoph Lameter
2008-01-22 21:34 ` Christoph Lameter
2008-01-22 22:50 ` Mel Gorman
2008-01-22 22:50 ` Mel Gorman
2008-01-22 22:57 ` Christoph Lameter
2008-01-22 22:57 ` Christoph Lameter
2008-01-22 22:57 ` Christoph Lameter
2008-01-22 23:10 ` Mel Gorman
2008-01-22 23:10 ` Mel Gorman
2008-01-22 23:10 ` Mel Gorman
2008-01-22 23:14 ` Christoph Lameter
2008-01-22 23:14 ` Christoph Lameter
2008-01-22 23:14 ` Christoph Lameter
2008-01-22 22:59 ` Pekka Enberg
2008-01-22 22:59 ` Pekka Enberg
2008-01-22 22:59 ` Pekka Enberg
2008-01-22 23:12 ` Christoph Lameter
2008-01-22 23:12 ` Christoph Lameter
2008-01-22 23:12 ` Christoph Lameter
2008-01-22 23:18 ` Christoph Lameter
2008-01-22 23:18 ` Christoph Lameter
2008-01-22 23:18 ` Christoph Lameter
2008-01-23 8:19 ` Pekka Enberg
2008-01-23 8:19 ` Pekka Enberg
2008-01-23 8:19 ` Pekka Enberg
2008-01-23 8:40 ` Olaf Hering
2008-01-23 8:40 ` Olaf Hering
2008-01-23 8:40 ` Olaf Hering
2008-01-22 21:45 ` Olaf Hering
2008-01-22 21:45 ` Olaf Hering
2008-01-22 21:45 ` Olaf Hering
2008-01-22 22:12 ` Nish Aravamudan
2008-01-22 22:12 ` Nish Aravamudan
2008-01-22 22:12 ` Nish Aravamudan
2008-01-22 22:23 ` Christoph Lameter
2008-01-22 22:23 ` Christoph Lameter
2008-01-22 22:23 ` Christoph Lameter
2008-01-23 7:58 ` Olaf Hering
2008-01-23 7:58 ` Olaf Hering
2008-01-23 7:58 ` Olaf Hering
2008-01-23 10:50 ` Mel Gorman
2008-01-23 10:50 ` Mel Gorman
2008-01-23 10:50 ` Mel Gorman
2008-01-23 12:14 ` Olaf Hering
2008-01-23 12:14 ` Olaf Hering
2008-01-23 12:14 ` Olaf Hering
2008-01-23 12:52 ` Olaf Hering
2008-01-23 12:52 ` Olaf Hering
2008-01-23 12:52 ` Olaf Hering
2008-01-23 13:55 ` [PATCH] Fix boot problem in situations where the boot CPU is running on a memoryless node Mel Gorman
2008-01-23 13:55 ` Mel Gorman
2008-01-23 13:55 ` Mel Gorman
2008-01-23 14:18 ` Pekka J Enberg
2008-01-23 14:18 ` Pekka J Enberg
2008-01-23 14:18 ` Pekka J Enberg
2008-01-23 14:32 ` Pekka J Enberg
2008-01-23 14:32 ` Pekka J Enberg
2008-01-23 14:32 ` Pekka J Enberg
2008-01-23 14:49 ` Pekka J Enberg
2008-01-23 14:49 ` Pekka J Enberg
2008-01-23 14:49 ` Pekka J Enberg
2008-01-23 15:56 ` Mel Gorman
2008-01-23 15:56 ` Mel Gorman
2008-01-23 15:56 ` Mel Gorman
2008-01-23 17:29 ` Pekka J Enberg
2008-01-23 17:29 ` Pekka J Enberg
2008-01-23 17:29 ` Pekka J Enberg
2008-01-23 17:42 ` Pekka J Enberg
2008-01-23 17:42 ` Pekka J Enberg
2008-01-23 17:42 ` Pekka J Enberg
2008-01-23 18:51 ` Christoph Lameter
2008-01-23 18:51 ` Christoph Lameter
2008-01-23 18:51 ` Christoph Lameter
2008-01-23 19:52 ` Nishanth Aravamudan [this message]
2008-01-23 19:52 ` Nishanth Aravamudan
2008-01-23 19:52 ` Nishanth Aravamudan
2008-01-23 21:02 ` Pekka Enberg
2008-01-23 21:02 ` Pekka Enberg
2008-01-23 21:02 ` Pekka Enberg
2008-01-23 21:14 ` Christoph Lameter
2008-01-23 21:14 ` Christoph Lameter
2008-01-23 21:14 ` Christoph Lameter
2008-01-23 21:36 ` Nishanth Aravamudan
2008-01-23 21:36 ` Nishanth Aravamudan
2008-01-23 21:36 ` Nishanth Aravamudan
2008-01-24 3:13 ` Christoph Lameter
2008-01-24 3:13 ` Christoph Lameter
2008-01-24 3:13 ` Christoph Lameter
2008-01-23 18:36 ` Christoph Lameter
2008-01-23 18:36 ` Christoph Lameter
2008-01-23 18:36 ` Christoph Lameter
2008-01-23 18:35 ` Christoph Lameter
2008-01-23 18:35 ` Christoph Lameter
2008-01-23 18:35 ` Christoph Lameter
2008-01-23 14:27 ` Olaf Hering
2008-01-23 14:27 ` Olaf Hering
2008-01-23 14:27 ` Olaf Hering
2008-01-23 14:42 ` Mel Gorman
2008-01-23 14:42 ` Mel Gorman
2008-01-23 14:42 ` Mel Gorman
2008-01-23 18:41 ` Christoph Lameter
2008-01-23 18:41 ` Christoph Lameter
2008-01-23 18:41 ` Christoph Lameter
2008-01-23 13:41 ` crash in kmem_cache_init Mel Gorman
2008-01-23 13:41 ` Mel Gorman
2008-01-23 13:41 ` Mel Gorman
2008-01-18 18:51 ` Christoph Lameter
2008-01-18 18:51 ` Christoph Lameter
2008-01-18 18:51 ` Christoph Lameter
2008-01-17 19:03 ` Christoph Lameter
2008-01-17 19:03 ` Christoph Lameter
2008-01-17 19:03 ` Christoph Lameter
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=20080123195220.GB3848@us.ibm.com \
--to=nacc@us.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=clameter@sgi.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=lee.schermerhorn@hp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=mel@csn.ul.ie \
--cc=olaf@aepfle.de \
--cc=penberg@cs.helsinki.fi \
/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.