aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2008-09-05 02:39:12 -0400
committerPaul Mundt <lethal@linux-sh.org>2008-09-07 21:35:04 -0400
commit3159e7d62ad13f71ef3fe029c145594d8caa580d (patch)
treea05b4b03232480db57fac798a72289f9dfdeeb19 /arch
parent5840263ecb95e55a2d248fc740644a2c9171a61c (diff)
sh: Add support for memory hot-remove.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-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
134 def_bool y 134 def_bool y
135 depends on SPARSEMEM 135 depends on SPARSEMEM
136 136
137config ARCH_ENABLE_MEMORY_HOTREMOVE
138 def_bool y
139 depends on SPARSEMEM
140
137config ARCH_MEMORY_PROBE 141config ARCH_MEMORY_PROBE
138 def_bool y 142 def_bool y
139 depends on MEMORY_HOTPLUG 143 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)
292} 292}
293EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); 293EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
294#endif 294#endif
295
296#ifdef CONFIG_MEMORY_HOTREMOVE
297int remove_memory(u64 start, u64 size)
298{
299 unsigned long start_pfn = start >> PAGE_SHIFT;
300 unsigned long end_pfn = start_pfn + (size >> PAGE_SHIFT);
301 int ret;
302
303 ret = offline_pages(start_pfn, end_pfn, 120 * HZ);
304 if (unlikely(ret))
305 printk("%s: Failed, offline_pages() == %d\n", __func__, ret);
306
307 return ret;
308}
309EXPORT_SYMBOL_GPL(remove_memory);
295#endif 310#endif
311
312#endif /* CONFIG_MEMORY_HOTPLUG */