|
@@ -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 */
|