From: Gary Hade Memory hotremove functionality can currently be configured into the ia64, powerpc, and s390 kernels. This patch makes it possible to configure the memory hotremove functionality into the x86_64 kernel as well. Signed-off-by: Gary Hade Signed-off-by: Andrew Morton --- arch/x86/Kconfig | 3 +++ arch/x86/mm/init_64.c | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff -puN arch/x86/Kconfig~x86_64-add-memory-hotremove-config-option arch/x86/Kconfig --- a/arch/x86/Kconfig~x86_64-add-memory-hotremove-config-option +++ a/arch/x86/Kconfig @@ -1456,6 +1456,9 @@ config ARCH_ENABLE_MEMORY_HOTPLUG def_bool y depends on X86_64 || (X86_32 && HIGHMEM) +config ARCH_ENABLE_MEMORY_HOTREMOVE + def_bool y + config HAVE_ARCH_EARLY_PFN_TO_NID def_bool X86_64 depends on NUMA diff -puN arch/x86/mm/init_64.c~x86_64-add-memory-hotremove-config-option arch/x86/mm/init_64.c --- a/arch/x86/mm/init_64.c~x86_64-add-memory-hotremove-config-option +++ a/arch/x86/mm/init_64.c @@ -740,6 +740,24 @@ int memory_add_physaddr_to_nid(u64 start EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); #endif +#ifdef CONFIG_MEMORY_HOTREMOVE +int remove_memory(u64 start, u64 size) +{ + unsigned long start_pfn, end_pfn; + unsigned long timeout = 120 * HZ; + int ret; + start_pfn = start >> PAGE_SHIFT; + end_pfn = start_pfn + (size >> PAGE_SHIFT); + ret = offline_pages(start_pfn, end_pfn, timeout); + if (ret) + goto out; + /* Arch-specific calls go here */ +out: + return ret; +} +EXPORT_SYMBOL_GPL(remove_memory); +#endif /* CONFIG_MEMORY_HOTREMOVE */ + #endif /* CONFIG_MEMORY_HOTPLUG */ /* _