* [PATCH - resend ] memory-hotplug: create /sys/firmware/memmap entry for new memory(v3)
@ 2010-01-08 3:16 Zheng, Shaohui
2010-01-08 11:08 ` Wu Fengguang
0 siblings, 1 reply; 3+ messages in thread
From: Zheng, Shaohui @ 2010-01-08 3:16 UTC (permalink / raw)
To: linux-mm@kvack.org, akpm@linux-foundation.org
Cc: linux-kernel@vger.kernel.org, ak@linux.intel.com,
y-goto@jp.fujitsu.com, Dave Hansen, Wu, Fengguang, x86@kernel.org
[-- Attachment #1: Type: text/plain, Size: 6240 bytes --]
Resend the patch to the mailing-list, the original patch URL is at
http://patchwork.kernel.org/patch/69071/. It is already reviewed, but It is still not
accepted and no comments, I guess that it should be ignored since we have so many
patches each day, send it again.
memory-hotplug: create /sys/firmware/memmap entry for hot-added memory
Interface firmware_map_add was not called in explicit, Remove it and add function
firmware_map_add_hotplug as hotplug interface of memmap.
When we hot-add new memory, sysfs does not export memmap entry for it. we add
a call in function add_memory to function firmware_map_add_hotplug.
Add a new function add_sysfs_fw_map_entry to create memmap entry, it can avoid
duplicated codes.
Thanks for the careful review from Fengguang Wu and Dave Hansen.
Signed-off-by: Shaohui Zheng <shaohui.zheng@intel.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Yasunori Goto <y-goto@jp.fujitsu.com>
Acked-by: Dave Hansen <dave@linux.vnet.ibm.com>
Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
---
diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
index 56f9234..ec8c3d4 100644
--- a/drivers/firmware/memmap.c
+++ b/drivers/firmware/memmap.c
@@ -123,52 +123,75 @@ static int firmware_map_add_entry(u64 start, u64 end,
}
/**
- * firmware_map_add() - Adds a firmware mapping entry.
+ * Add memmap entry on sysfs
+ */
+static int add_sysfs_fw_map_entry(struct firmware_map_entry *entry) {
+ static int map_entries_nr;
+ static struct kset *mmap_kset;
+
+ if (!mmap_kset) {
+ mmap_kset = kset_create_and_add("memmap", NULL, firmware_kobj);
+ if (WARN_ON(!mmap_kset))
+ return -ENOMEM;
+ }
+
+ entry->kobj.kset = mmap_kset;
+ if (kobject_add(&entry->kobj, NULL, "%d", map_entries_nr++))
+ kobject_put(&entry->kobj);
+
+ return 0;
+}
+
+/**
+ * firmware_map_add_early() - Adds a firmware mapping entry.
* @start: Start of the memory range.
* @end: End of the memory range (inclusive).
* @type: Type of the memory range.
*
- * This function uses kmalloc() for memory
- * allocation. Use firmware_map_add_early() if you want to use the bootmem
- * allocator.
+ * Adds a firmware mapping entry. This function uses the bootmem allocator
+ * for memory allocation.
*
* That function must be called before late_initcall.
*
* Returns 0 on success, or -ENOMEM if no memory could be allocated.
**/
-int firmware_map_add(u64 start, u64 end, const char *type)
+int __init firmware_map_add_early(u64 start, u64 end, const char *type)
{
struct firmware_map_entry *entry;
- entry = kmalloc(sizeof(struct firmware_map_entry), GFP_ATOMIC);
- if (!entry)
+ entry = alloc_bootmem(sizeof(struct firmware_map_entry));
+ if (WARN_ON(!entry))
return -ENOMEM;
return firmware_map_add_entry(start, end, type, entry);
}
/**
- * firmware_map_add_early() - Adds a firmware mapping entry.
+ * firmware_map_add_hotplug() - Adds a firmware mapping entry when we do
+ * memory hotplug.
* @start: Start of the memory range.
* @end: End of the memory range (inclusive).
* @type: Type of the memory range.
*
- * Adds a firmware mapping entry. This function uses the bootmem allocator
- * for memory allocation. Use firmware_map_add() if you want to use kmalloc().
- *
- * That function must be called before late_initcall.
+ * Adds a firmware mapping entry. This function is for memory hotplug, it is
+ * simiar with function firmware_map_add_early. the only difference is that
+ * it will create the syfs entry dynamically.
*
* Returns 0 on success, or -ENOMEM if no memory could be allocated.
**/
-int __init firmware_map_add_early(u64 start, u64 end, const char *type)
+int __meminit firmware_map_add_hotplug(u64 start, u64 end, const char *type)
{
struct firmware_map_entry *entry;
- entry = alloc_bootmem(sizeof(struct firmware_map_entry));
+ entry = kzalloc(sizeof(struct firmware_map_entry), GFP_ATOMIC);
if (WARN_ON(!entry))
return -ENOMEM;
- return firmware_map_add_entry(start, end, type, entry);
+ firmware_map_add_entry(start, end, type, entry);
+ /* create the memmap entry */
+ add_sysfs_fw_map_entry(entry);
+
+ return 0;
}
/*
@@ -214,18 +237,10 @@ static ssize_t memmap_attr_show(struct kobject *kobj,
*/
static int __init memmap_init(void)
{
- int i = 0;
struct firmware_map_entry *entry;
- struct kset *memmap_kset;
-
- memmap_kset = kset_create_and_add("memmap", NULL, firmware_kobj);
- if (WARN_ON(!memmap_kset))
- return -ENOMEM;
list_for_each_entry(entry, &map_entries, list) {
- entry->kobj.kset = memmap_kset;
- if (kobject_add(&entry->kobj, NULL, "%d", i++))
- kobject_put(&entry->kobj);
+ add_sysfs_fw_map_entry(entry);
}
return 0;
diff --git a/include/linux/firmware-map.h b/include/linux/firmware-map.h
index 875451f..c6dcc1d 100644
--- a/include/linux/firmware-map.h
+++ b/include/linux/firmware-map.h
@@ -24,17 +24,17 @@
*/
#ifdef CONFIG_FIRMWARE_MEMMAP
-int firmware_map_add(u64 start, u64 end, const char *type);
int firmware_map_add_early(u64 start, u64 end, const char *type);
+int firmware_map_add_hotplug(u64 start, u64 end, const char *type);
#else /* CONFIG_FIRMWARE_MEMMAP */
-static inline int firmware_map_add(u64 start, u64 end, const char *type)
+static inline int firmware_map_add_early(u64 start, u64 end, const char *type)
{
return 0;
}
-static inline int firmware_map_add_early(u64 start, u64 end, const char *type)
+static inline int firmware_map_add_hotplug(u64 start, u64 end, const char *type)
{
return 0;
}
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 030ce8a..78e34e6 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -28,6 +28,7 @@
#include <linux/pfn.h>
#include <linux/suspend.h>
#include <linux/mm_inline.h>
+#include <linux/firmware-map.h>
#include <asm/tlbflush.h>
@@ -523,6 +524,9 @@ int __ref add_memory(int nid, u64 start, u64 size)
BUG_ON(ret);
}
+ /* create new memmap entry */
+ firmware_map_add_hotplug(start, start + size, "System RAM");
+
goto out;
error:
Thanks & Regards,
Shaohui
[-- Attachment #2: memory-hotplug-create-sys-firmware-memmap-entry-for-new-memory-v3.patch --]
[-- Type: application/octet-stream, Size: 5746 bytes --]
memory-hotplug: create /sys/firmware/memmap entry for hot-added memory
Interface firmware_map_add was not called in explicit, Remove it and add function
firmware_map_add_hotplug as hotplug interface of memmap.
When we hot-add new memory, sysfs does not export memmap entry for it. we add
a call in function add_memory to function firmware_map_add_hotplug.
Add a new function add_sysfs_fw_map_entry to create memmap entry, it can avoid
duplicated codes.
Thanks for the careful review from Fengguang Wu and Dave Hansen.
Signed-off-by: Shaohui Zheng <shaohui.zheng@intel.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Yasunori Goto <y-goto@jp.fujitsu.com>
Acked-by: Dave Hansen <dave@linux.vnet.ibm.com>
Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
---
diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
index 56f9234..ec8c3d4 100644
--- a/drivers/firmware/memmap.c
+++ b/drivers/firmware/memmap.c
@@ -123,52 +123,75 @@ static int firmware_map_add_entry(u64 start, u64 end,
}
/**
- * firmware_map_add() - Adds a firmware mapping entry.
+ * Add memmap entry on sysfs
+ */
+static int add_sysfs_fw_map_entry(struct firmware_map_entry *entry) {
+ static int map_entries_nr;
+ static struct kset *mmap_kset;
+
+ if (!mmap_kset) {
+ mmap_kset = kset_create_and_add("memmap", NULL, firmware_kobj);
+ if (WARN_ON(!mmap_kset))
+ return -ENOMEM;
+ }
+
+ entry->kobj.kset = mmap_kset;
+ if (kobject_add(&entry->kobj, NULL, "%d", map_entries_nr++))
+ kobject_put(&entry->kobj);
+
+ return 0;
+}
+
+/**
+ * firmware_map_add_early() - Adds a firmware mapping entry.
* @start: Start of the memory range.
* @end: End of the memory range (inclusive).
* @type: Type of the memory range.
*
- * This function uses kmalloc() for memory
- * allocation. Use firmware_map_add_early() if you want to use the bootmem
- * allocator.
+ * Adds a firmware mapping entry. This function uses the bootmem allocator
+ * for memory allocation.
*
* That function must be called before late_initcall.
*
* Returns 0 on success, or -ENOMEM if no memory could be allocated.
**/
-int firmware_map_add(u64 start, u64 end, const char *type)
+int __init firmware_map_add_early(u64 start, u64 end, const char *type)
{
struct firmware_map_entry *entry;
- entry = kmalloc(sizeof(struct firmware_map_entry), GFP_ATOMIC);
- if (!entry)
+ entry = alloc_bootmem(sizeof(struct firmware_map_entry));
+ if (WARN_ON(!entry))
return -ENOMEM;
return firmware_map_add_entry(start, end, type, entry);
}
/**
- * firmware_map_add_early() - Adds a firmware mapping entry.
+ * firmware_map_add_hotplug() - Adds a firmware mapping entry when we do
+ * memory hotplug.
* @start: Start of the memory range.
* @end: End of the memory range (inclusive).
* @type: Type of the memory range.
*
- * Adds a firmware mapping entry. This function uses the bootmem allocator
- * for memory allocation. Use firmware_map_add() if you want to use kmalloc().
- *
- * That function must be called before late_initcall.
+ * Adds a firmware mapping entry. This function is for memory hotplug, it is
+ * simiar with function firmware_map_add_early. the only difference is that
+ * it will create the syfs entry dynamically.
*
* Returns 0 on success, or -ENOMEM if no memory could be allocated.
**/
-int __init firmware_map_add_early(u64 start, u64 end, const char *type)
+int __meminit firmware_map_add_hotplug(u64 start, u64 end, const char *type)
{
struct firmware_map_entry *entry;
- entry = alloc_bootmem(sizeof(struct firmware_map_entry));
+ entry = kzalloc(sizeof(struct firmware_map_entry), GFP_ATOMIC);
if (WARN_ON(!entry))
return -ENOMEM;
- return firmware_map_add_entry(start, end, type, entry);
+ firmware_map_add_entry(start, end, type, entry);
+ /* create the memmap entry */
+ add_sysfs_fw_map_entry(entry);
+
+ return 0;
}
/*
@@ -214,18 +237,10 @@ static ssize_t memmap_attr_show(struct kobject *kobj,
*/
static int __init memmap_init(void)
{
- int i = 0;
struct firmware_map_entry *entry;
- struct kset *memmap_kset;
-
- memmap_kset = kset_create_and_add("memmap", NULL, firmware_kobj);
- if (WARN_ON(!memmap_kset))
- return -ENOMEM;
list_for_each_entry(entry, &map_entries, list) {
- entry->kobj.kset = memmap_kset;
- if (kobject_add(&entry->kobj, NULL, "%d", i++))
- kobject_put(&entry->kobj);
+ add_sysfs_fw_map_entry(entry);
}
return 0;
diff --git a/include/linux/firmware-map.h b/include/linux/firmware-map.h
index 875451f..c6dcc1d 100644
--- a/include/linux/firmware-map.h
+++ b/include/linux/firmware-map.h
@@ -24,17 +24,17 @@
*/
#ifdef CONFIG_FIRMWARE_MEMMAP
-int firmware_map_add(u64 start, u64 end, const char *type);
int firmware_map_add_early(u64 start, u64 end, const char *type);
+int firmware_map_add_hotplug(u64 start, u64 end, const char *type);
#else /* CONFIG_FIRMWARE_MEMMAP */
-static inline int firmware_map_add(u64 start, u64 end, const char *type)
+static inline int firmware_map_add_early(u64 start, u64 end, const char *type)
{
return 0;
}
-static inline int firmware_map_add_early(u64 start, u64 end, const char *type)
+static inline int firmware_map_add_hotplug(u64 start, u64 end, const char *type)
{
return 0;
}
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 030ce8a..78e34e6 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -28,6 +28,7 @@
#include <linux/pfn.h>
#include <linux/suspend.h>
#include <linux/mm_inline.h>
+#include <linux/firmware-map.h>
#include <asm/tlbflush.h>
@@ -523,6 +524,9 @@ int __ref add_memory(int nid, u64 start, u64 size)
BUG_ON(ret);
}
+ /* create new memmap entry */
+ firmware_map_add_hotplug(start, start + size, "System RAM");
+
goto out;
error:
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH - resend ] memory-hotplug: create /sys/firmware/memmap entry for new memory(v3)
2010-01-08 3:16 [PATCH - resend ] memory-hotplug: create /sys/firmware/memmap entry for new memory(v3) Zheng, Shaohui
@ 2010-01-08 11:08 ` Wu Fengguang
2010-01-11 1:51 ` Zheng, Shaohui
0 siblings, 1 reply; 3+ messages in thread
From: Wu Fengguang @ 2010-01-08 11:08 UTC (permalink / raw)
To: Zheng, Shaohui
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linux-kernel@vger.kernel.org, ak@linux.intel.com,
y-goto@jp.fujitsu.com, Dave Hansen, x86@kernel.org
On Fri, Jan 08, 2010 at 11:16:13AM +0800, Zheng, Shaohui wrote:
> Resend the patch to the mailing-list, the original patch URL is at
> http://patchwork.kernel.org/patch/69071/. It is already reviewed, but It is still not
> accepted and no comments, I guess that it should be ignored since we have so many
> patches each day, send it again.
>
> memory-hotplug: create /sys/firmware/memmap entry for hot-added memory
>
> Interface firmware_map_add was not called in explicit, Remove it and add function
> firmware_map_add_hotplug as hotplug interface of memmap.
>
> When we hot-add new memory, sysfs does not export memmap entry for it. we add
> a call in function add_memory to function firmware_map_add_hotplug.
>
> Add a new function add_sysfs_fw_map_entry to create memmap entry, it can avoid
> duplicated codes.
>
> Thanks for the careful review from Fengguang Wu and Dave Hansen.
>
> Signed-off-by: Shaohui Zheng <shaohui.zheng@intel.com>
> Acked-by: Andi Kleen <ak@linux.intel.com>
> Acked-by: Yasunori Goto <y-goto@jp.fujitsu.com>
> Acked-by: Dave Hansen <dave@linux.vnet.ibm.com>
> Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
> diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
> index 56f9234..ec8c3d4 100644
> --- a/drivers/firmware/memmap.c
> +++ b/drivers/firmware/memmap.c
> @@ -123,52 +123,75 @@ static int firmware_map_add_entry(u64 start, u64 end,
> }
>
> /**
> - * firmware_map_add() - Adds a firmware mapping entry.
> + * Add memmap entry on sysfs
> + */
> +static int add_sysfs_fw_map_entry(struct firmware_map_entry *entry) {
Minor style issue:
ERROR: open brace '{' following function declarations go on the next line
#31: FILE: drivers/firmware/memmap.c:128:
+static int add_sysfs_fw_map_entry(struct firmware_map_entry *entry) {
total: 1 errors, 0 warnings, 145 lines checked
patches/memory-hotplug-create-sys-firmware-memmap-entry-for-new-memory-v3.patch
has style problems, please review. If any of these e rrors
are false positives report them to the maintainer, see CHECKPATCH in
MAINTAINERS.
> + static int map_entries_nr;
> + static struct kset *mmap_kset;
> +
> + if (!mmap_kset) {
> + mmap_kset = kset_create_and_add("memmap", NULL, firmware_kobj);
> + if (WARN_ON(!mmap_kset))
This WARN_ON() may never trigger, or when things go terribly wrong it
repeatedly produce a dozen stack dumps, which don't really help
diagnose the root cause. Better to just remove it.
> + return -ENOMEM;
> + }
> +
> + entry->kobj.kset = mmap_kset;
> + if (kobject_add(&entry->kobj, NULL, "%d", map_entries_nr++))
> + kobject_put(&entry->kobj);
> +
> + return 0;
> +}
> +
> +/**
> + * firmware_map_add_early() - Adds a firmware mapping entry.
> * @start: Start of the memory range.
> * @end: End of the memory range (inclusive).
> * @type: Type of the memory range.
> *
> - * This function uses kmalloc() for memory
> - * allocation. Use firmware_map_add_early() if you want to use the bootmem
> - * allocator.
> + * Adds a firmware mapping entry. This function uses the bootmem allocator
> + * for memory allocation.
> *
> * That function must be called before late_initcall.
> *
> * Returns 0 on success, or -ENOMEM if no memory could be allocated.
> **/
> -int firmware_map_add(u64 start, u64 end, const char *type)
> +int __init firmware_map_add_early(u64 start, u64 end, const char *type)
> {
> struct firmware_map_entry *entry;
>
> - entry = kmalloc(sizeof(struct firmware_map_entry), GFP_ATOMIC);
> - if (!entry)
> + entry = alloc_bootmem(sizeof(struct firmware_map_entry));
> + if (WARN_ON(!entry))
Ditto.
Thanks,
Fengguang
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH - resend ] memory-hotplug: create /sys/firmware/memmap entry for new memory(v3)
2010-01-08 11:08 ` Wu Fengguang
@ 2010-01-11 1:51 ` Zheng, Shaohui
0 siblings, 0 replies; 3+ messages in thread
From: Zheng, Shaohui @ 2010-01-11 1:51 UTC (permalink / raw)
To: Wu, Fengguang
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linux-kernel@vger.kernel.org, ak@linux.intel.com,
y-goto@jp.fujitsu.com, Dave Hansen, x86@kernel.org
Thanks for fengguang's careful review, I will send out the modified patch soon.
Thanks & Regards,
Shaohui
-----Original Message-----
From: Wu, Fengguang
Sent: Friday, January 08, 2010 7:08 PM
To: Zheng, Shaohui
Cc: linux-mm@kvack.org; akpm@linux-foundation.org; linux-kernel@vger.kernel.org; ak@linux.intel.com; y-goto@jp.fujitsu.com; Dave Hansen; x86@kernel.org
Subject: Re: [PATCH - resend ] memory-hotplug: create /sys/firmware/memmap entry for new memory(v3)
On Fri, Jan 08, 2010 at 11:16:13AM +0800, Zheng, Shaohui wrote:
> Resend the patch to the mailing-list, the original patch URL is at
> http://patchwork.kernel.org/patch/69071/. It is already reviewed, but It is still not
> accepted and no comments, I guess that it should be ignored since we have so many
> patches each day, send it again.
>
> memory-hotplug: create /sys/firmware/memmap entry for hot-added memory
>
> Interface firmware_map_add was not called in explicit, Remove it and add function
> firmware_map_add_hotplug as hotplug interface of memmap.
>
> When we hot-add new memory, sysfs does not export memmap entry for it. we add
> a call in function add_memory to function firmware_map_add_hotplug.
>
> Add a new function add_sysfs_fw_map_entry to create memmap entry, it can avoid
> duplicated codes.
>
> Thanks for the careful review from Fengguang Wu and Dave Hansen.
>
> Signed-off-by: Shaohui Zheng <shaohui.zheng@intel.com>
> Acked-by: Andi Kleen <ak@linux.intel.com>
> Acked-by: Yasunori Goto <y-goto@jp.fujitsu.com>
> Acked-by: Dave Hansen <dave@linux.vnet.ibm.com>
> Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
> diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
> index 56f9234..ec8c3d4 100644
> --- a/drivers/firmware/memmap.c
> +++ b/drivers/firmware/memmap.c
> @@ -123,52 +123,75 @@ static int firmware_map_add_entry(u64 start, u64 end,
> }
>
> /**
> - * firmware_map_add() - Adds a firmware mapping entry.
> + * Add memmap entry on sysfs
> + */
> +static int add_sysfs_fw_map_entry(struct firmware_map_entry *entry) {
Minor style issue:
ERROR: open brace '{' following function declarations go on the next line
#31: FILE: drivers/firmware/memmap.c:128:
+static int add_sysfs_fw_map_entry(struct firmware_map_entry *entry) {
total: 1 errors, 0 warnings, 145 lines checked
patches/memory-hotplug-create-sys-firmware-memmap-entry-for-new-memory-v3.patch
has style problems, please review. If any of these e rrors
are false positives report them to the maintainer, see CHECKPATCH in
MAINTAINERS.
[Zheng, Shaohui] My carelessness, will change it in new patch.
> + static int map_entries_nr;
> + static struct kset *mmap_kset;
> +
> + if (!mmap_kset) {
> + mmap_kset = kset_create_and_add("memmap", NULL, firmware_kobj);
> + if (WARN_ON(!mmap_kset))
This WARN_ON() may never trigger, or when things go terribly wrong it
repeatedly produce a dozen stack dumps, which don't really help
diagnose the root cause. Better to just remove it.
[Zheng, Shaohui] Agree.
> + return -ENOMEM;
> + }
> +
> + entry->kobj.kset = mmap_kset;
> + if (kobject_add(&entry->kobj, NULL, "%d", map_entries_nr++))
> + kobject_put(&entry->kobj);
> +
> + return 0;
> +}
> +
> +/**
> + * firmware_map_add_early() - Adds a firmware mapping entry.
> * @start: Start of the memory range.
> * @end: End of the memory range (inclusive).
> * @type: Type of the memory range.
> *
> - * This function uses kmalloc() for memory
> - * allocation. Use firmware_map_add_early() if you want to use the bootmem
> - * allocator.
> + * Adds a firmware mapping entry. This function uses the bootmem allocator
> + * for memory allocation.
> *
> * That function must be called before late_initcall.
> *
> * Returns 0 on success, or -ENOMEM if no memory could be allocated.
> **/
> -int firmware_map_add(u64 start, u64 end, const char *type)
> +int __init firmware_map_add_early(u64 start, u64 end, const char *type)
> {
> struct firmware_map_entry *entry;
>
> - entry = kmalloc(sizeof(struct firmware_map_entry), GFP_ATOMIC);
> - if (!entry)
> + entry = alloc_bootmem(sizeof(struct firmware_map_entry));
> + if (WARN_ON(!entry))
Ditto.
[Zheng, Shaohui] Agree.
Thanks,
Fengguang
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-01-11 1:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-08 3:16 [PATCH - resend ] memory-hotplug: create /sys/firmware/memmap entry for new memory(v3) Zheng, Shaohui
2010-01-08 11:08 ` Wu Fengguang
2010-01-11 1:51 ` Zheng, Shaohui
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).