]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
m68k/mm: Set all online nodes in N_NORMAL_MEMORY
authorMichael Schmitz <schmitzmic@googlemail.com>
Tue, 26 Apr 2011 02:51:53 +0000 (14:51 +1200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 9 May 2011 22:54:53 +0000 (15:54 -0700)
commit 4aac0b4815ba592052758f4b468f253d383dc9d6 upstream.

For m68k, N_NORMAL_MEMORY represents all nodes that have present memory
since it does not support HIGHMEM.  This patch sets the bit at the time
node_present_pages has been set by free_area_init_node.
At the time the node is brought online, the node state would have to be
done unconditionally since information about present memory has not yet
been recorded.

If N_NORMAL_MEMORY is not accurate, slub may encounter errors since it
uses this nodemask to setup per-cache kmem_cache_node data structures.

This pach is an alternative to the one proposed by David Rientjes
<rientjes@google.com> attempting to set node state immediately when
bringing the node online.

Signed-off-by: Michael Schmitz <schmitz@debian.org>
Tested-by: Thorsten Glaser <tg@debian.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/m68k/mm/motorola.c

index 4665fc84b7dcc50ab43174bcf7760f43a5859533..e7ad9ca22ec36a5872b307dc74efe7ab3f1a7d72 100644 (file)
@@ -299,6 +299,8 @@ void __init paging_init(void)
                zones_size[ZONE_DMA] = m68k_memory[i].size >> PAGE_SHIFT;
                free_area_init_node(i, zones_size,
                                    m68k_memory[i].addr >> PAGE_SHIFT, NULL);
+               if (node_present_pages(i))
+                       node_set_state(i, N_NORMAL_MEMORY);
        }
 }