]> err.no Git - linux-2.6/commitdiff
[PATCH] x86-64: x86_64 hot-add memory srat.c fix
authorkeith mannthey <kmannth@us.ibm.com>
Sat, 21 Oct 2006 16:37:01 +0000 (18:37 +0200)
committerAndi Kleen <andi@basil.nowhere.org>
Sat, 21 Oct 2006 16:37:01 +0000 (18:37 +0200)
  This patch corrects the logic used in srat.c to figure out what
parsing what action to take when registering hot-add areas.  Hot-add
areas should only be added to the node information for the
MEMORY_HOTPLUG_RESERVE case.  When booting MEMORY_HOTPLUG_SPARSE hot-add
areas on everything but the last node are getting include in the node
data and during kernel boot the pages are setup then the kernel dies
when the pages are used. This patch fixes this issue.

Signed-off-by: Keith Mannthey <kmannth@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
arch/x86_64/mm/srat.c

index 3cc0544e25f5a8569af1a727c3f819b252fe3635..1087e150a21896d1abfaadfccfe7fc4de98728ef 100644 (file)
@@ -207,7 +207,7 @@ static inline int save_add_info(void)
        return hotadd_percent > 0;
 }
 #else
-int update_end_of_memory(unsigned long end) {return 0;}
+int update_end_of_memory(unsigned long end) {return -1;}
 static int hotadd_enough_memory(struct bootnode *nd) {return 1;}
 #ifdef CONFIG_MEMORY_HOTPLUG_SPARSE
 static inline int save_add_info(void) {return 1;}
@@ -337,7 +337,7 @@ acpi_numa_memory_affinity_init(struct acpi_table_memory_affinity *ma)
        push_node_boundaries(node, nd->start >> PAGE_SHIFT,
                                                nd->end >> PAGE_SHIFT);
 
-       if (ma->flags.hot_pluggable && !reserve_hotadd(node, start, end) < 0) {
+       if (ma->flags.hot_pluggable && (reserve_hotadd(node, start, end) < 0)) {
                /* Ignore hotadd region. Undo damage */
                printk(KERN_NOTICE "SRAT: Hotplug region ignored\n");
                *nd = oldnode;