[PATCH] i386: single node SPARSEMEM fix

Magnus Damm
2005-09-06T03:56:34Z

This patch for 2.6.13-git5 fixes single node sparsemem support. In the case
when multiple nodes are used, setup_memory() in arch/i386/mm/discontig.c calls
get_memcfg_numa() which calls memory_present(). The single node case with
setup_memory() in arch/i386/kernel/setup.c does not call memory_present()
without this patch, which breaks single node support.

Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
----

--- from-0006/arch/i386/Kconfig
+++ to-0007/arch/i386/Kconfig 2005-09-06 12:01:45.000000000 +0900
@@ -758,7 +758,6 @@ config NUMA
depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI))
default n if X86_PC
default y if (X86_NUMAQ || X86_SUMMIT)
- select SPARSEMEM_STATIC

# Need comments to help the hapless user trying to turn on NUMA support
comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support"
@@ -797,7 +796,8 @@ config ARCH_DISCONTIGMEM_DEFAULT

config ARCH_SPARSEMEM_ENABLE
def_bool y
- depends on NUMA
+ depends on NUMA || (X86_PC && EXPERIMENTAL)
+ select SPARSEMEM_STATIC

config ARCH_SELECT_MEMORY_MODEL
def_bool y
--- from-0006/arch/i386/kernel/setup.c
+++ to-0007/arch/i386/kernel/setup.c 2005-09-06 11:34:07.000000000 +0900
@@ -1127,6 +1127,9 @@ static unsigned long __init setup_memory
printk(KERN_NOTICE "%ldMB LOWMEM available.\n",
pages_to_mb(max_low_pfn));

+#ifdef CONFIG_SPARSEMEM
+ memory_present(0, 0, max_pfn);
+#endif
setup_bootmem_allocator();

return max_low_pfn;