Messages in this thread | | | Date | Fri, 03 Jul 2009 08:39:36 -0700 | From | Yinghai Lu <> | Subject | Re: [Bugme-new] [Bug 13690] New: nodes_clear cause hugepage unusable on non-NUMA machine |
| |
Christoph Lameter wrote: > On Thu, 2 Jul 2009, Yinghai Lu wrote: > >> Index: linux-2.6/arch/x86/mm/init_64.c >> =================================================================== >> --- linux-2.6.orig/arch/x86/mm/init_64.c >> +++ linux-2.6/arch/x86/mm/init_64.c >> @@ -598,8 +598,14 @@ void __init paging_init(void) >> >> sparse_memory_present_with_active_regions(MAX_NUMNODES); >> sparse_init(); >> - /* clear the default setting with node 0 */ >> +#if MAX_NUMNODES > 1 >> + /* >> + * clear the default setting with node 0 >> + * note: don't clear it, node_set_state will do nothing >> + * (aka set it back) when numa support is not compiled in >> + */ >> nodes_clear(node_states[N_NORMAL_MEMORY]); > > The problem was that nodes_clear() does not fall back to a noop on !NUMA. > The node_set/clear_states() operations do become noops. > > Could we make it more consistent by using only operations of the same > type? F.e. Add a node_clearall_states() in include/linux/nodemask.h that > falls back to a noop on !NUMA like the node_*_states operation? > > Another options is to restore node_states[N_NORMAL_MEMORY] to its > initial condition. See the definition of node_states in page_alloc.c.
could use node_clear_state(0, N_NORMAL_MEMORY) instead. because default one only have node 0 set in that mask.
YH
| |