On Tue, 28 Aug 2012 18:00:11 +0800
wency@cn.fujitsu.com wrote:
+int remove_memory(int nid, u64 start, u64 size)
+{
+ int ret = -EBUSY;
+ lock_memory_hotplug();
+ /*
+ * The memory might become online by other task, even if you offine it.
+ * So we check whether the cpu has been onlined or not.
I think you meant "memory", not "cpu".
Actually, "check whether any part of this memory range has been
onlined" would be better. If that is accurate ;)
+ */
+ if (!is_memblk_offline(start, size)) {
+ pr_warn("memory removing [mem %#010llx-%#010llx] failed, "
+ "because the memmory range is online\n",
+ start, start + size);
+ ret = -EAGAIN;
+ }
+
+ unlock_memory_hotplug();
+ return ret;
+
+}
+EXPORT_SYMBOL_GPL(remove_memory);