As threatened, here's a patch that unifies the ia64 memory init and memmap codepaths by unconditionalizing the CONFIG_VIRTUAL_MEM_MAP code and making CONFIG_DISCONTIGMEM required. It also allows building with CONFIG_SMP=n and/or CONFIG_NUMA=n. The end result should be easier to understand and hack on, and should make things like memory hotplug that much easier since people will only have to worry about one code path instead of every combination of the three options. Boot tested on sn2 with: CONFIG_IA64_SGI_SN=y CONFIG_NUMA=y CONFIG_SMP=y CONFIG_PREEMPT=y and CONFIG_IA64_GENERIC=y CONFIG_NUMA=n CONFIG_SMP=n CONFIG_PREEMPT=n Anyone have a problem with this? Is it a reasonable thing to do? Assuming everyone is ok with it, there's a bit more I could do to make things easier to understand and hack on (and hopefully harder to break), like moving more stuff into numa.c and consolidating a header file or two. arch/ia64/mm/contig.c | 300 ------------------------------------ b/arch/ia64/Kconfig | 24 --- b/arch/ia64/kernel/Makefile | 1 b/arch/ia64/kernel/acpi.c | 24 ++- b/arch/ia64/kernel/ia64_ksyms.c | 2 b/arch/ia64/kernel/numa.c | 57 +++++++ b/arch/ia64/kernel/setup.c | 2 b/arch/ia64/kernel/smpboot.c | 41 ----- b/arch/ia64/mm/Makefile | 3 b/arch/ia64/mm/discontig.c | 93 ++++++++---- b/arch/ia64/mm/fault.c | 5 b/arch/ia64/mm/init.c | 5 b/arch/ia64/mm/numa.c | 7 b/arch/ia64/sn/kernel/setup.c | 1 b/drivers/acpi/Kconfig | 1 b/include/asm-ia64/acpi.h | 1 b/include/asm-ia64/meminit.h | 18 -- b/include/asm-ia64/mmzone.h | 5 b/include/asm-ia64/nodedata.h | 4 b/include/asm-ia64/numa.h | 9 - b/include/asm-ia64/page.h | 16 -- b/include/asm-ia64/pgtable.h | 18 -- b/include/asm-ia64/processor.h | 4 b/include/asm-ia64/smp.h | 1 b/include/asm-ia64/sn/sn_cpuid.h | 4 b/include/linux/acpi.h | 4 26 files changed, 165 insertions(+), 485 deletions(-) Thanks, Jesse