summaryrefslogtreecommitdiffstats
path: root/arch/sh/mm
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2008-09-05 15:39:12 +0900
committerPaul Mundt <lethal@linux-sh.org>2008-09-08 10:35:04 +0900
commit3159e7d62ad13f71ef3fe029c145594d8caa580d (patch)
treea05b4b03232480db57fac798a72289f9dfdeeb19 /arch/sh/mm
parent5840263ecb95e55a2d248fc740644a2c9171a61c (diff)
downloadlinux-3159e7d62ad13f71ef3fe029c145594d8caa580d.tar.gz
linux-3159e7d62ad13f71ef3fe029c145594d8caa580d.tar.bz2
linux-3159e7d62ad13f71ef3fe029c145594d8caa580d.zip
sh: Add support for memory hot-remove.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/mm')
-rw-r--r--arch/sh/mm/Kconfig4
-rw-r--r--arch/sh/mm/init.c17
2 files changed, 21 insertions, 0 deletions
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 8a03926ea84f..f8e6dc5e056f 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -134,6 +134,10 @@ config ARCH_ENABLE_MEMORY_HOTPLUG
def_bool y
depends on SPARSEMEM
+config ARCH_ENABLE_MEMORY_HOTREMOVE
+ def_bool y
+ depends on SPARSEMEM
+
config ARCH_MEMORY_PROBE
def_bool y
depends on MEMORY_HOTPLUG
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index b75a7acd62fb..d4681a55c852 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -292,4 +292,21 @@ int memory_add_physaddr_to_nid(u64 addr)
}
EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
#endif
+
+#ifdef CONFIG_MEMORY_HOTREMOVE
+int remove_memory(u64 start, u64 size)
+{
+ unsigned long start_pfn = start >> PAGE_SHIFT;
+ unsigned long end_pfn = start_pfn + (size >> PAGE_SHIFT);
+ int ret;
+
+ ret = offline_pages(start_pfn, end_pfn, 120 * HZ);
+ if (unlikely(ret))
+ printk("%s: Failed, offline_pages() == %d\n", __func__, ret);
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(remove_memory);
#endif
+
+#endif /* CONFIG_MEMORY_HOTPLUG */