* [Patch](memory hotplug) Hot-add with sparsemem-vmemmap
@ 2007-08-17 7:08 Yasunori Goto
2007-08-20 18:56 ` Christoph Lameter
2007-08-21 12:59 ` Mel Gorman
0 siblings, 2 replies; 7+ messages in thread
From: Yasunori Goto @ 2007-08-17 7:08 UTC (permalink / raw)
To: Andy Whitcroft, Andrew Morton, Christoph Lameter, Mel Gorman; +Cc: linux-mm
Hello.
This patch is to avoid panic when memory hot-add is executed with
sparsemem-vmemmap. Current vmemmap-sparsemem code doesn't support
memory hot-add. Vmemmap must be populated when hot-add.
This is for 2.6.23-rc2-mm2.
Todo: # Even if this patch is applied, the message "[xxxx-xxxx] potential
offnode page_structs" is displayed. To allocate memmap on its node,
memmap (and pgdat) must be initialized itself like chicken and
egg relationship.
# vmemmap_unpopulate will be necessary for followings.
- For cancel hot-add due to error.
- For unplug.
Please comment.
Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
---
include/linux/mm.h | 2 +-
mm/sparse-vmemmap.c | 2 +-
mm/sparse.c | 24 +++++++++++++++++++++---
3 files changed, 23 insertions(+), 5 deletions(-)
Index: vmemmap/mm/sparse-vmemmap.c
===================================================================
--- vmemmap.orig/mm/sparse-vmemmap.c 2007-08-10 20:17:19.000000000 +0900
+++ vmemmap/mm/sparse-vmemmap.c 2007-08-10 21:12:54.000000000 +0900
@@ -170,7 +170,7 @@ int __meminit vmemmap_populate(struct pa
}
#endif /* !CONFIG_ARCH_POPULATES_SPARSEMEM_VMEMMAP */
-struct page __init *sparse_early_mem_map_populate(unsigned long pnum, int nid)
+struct page *sparse_mem_map_populate(unsigned long pnum, int nid)
{
struct page *map = pfn_to_page(pnum * PAGES_PER_SECTION);
int error = vmemmap_populate(map, PAGES_PER_SECTION, nid);
Index: vmemmap/include/linux/mm.h
===================================================================
--- vmemmap.orig/include/linux/mm.h 2007-08-10 20:17:19.000000000 +0900
+++ vmemmap/include/linux/mm.h 2007-08-10 21:06:34.000000000 +0900
@@ -1146,7 +1146,7 @@ extern int randomize_va_space;
const char * arch_vma_name(struct vm_area_struct *vma);
-struct page *sparse_early_mem_map_populate(unsigned long pnum, int nid);
+struct page *sparse_mem_map_populate(unsigned long pnum, int nid);
int vmemmap_populate(struct page *start_page, unsigned long pages, int node);
int vmemmap_populate_pmd(pud_t *, unsigned long, unsigned long, int);
void *vmemmap_alloc_block(unsigned long size, int node);
Index: vmemmap/mm/sparse.c
===================================================================
--- vmemmap.orig/mm/sparse.c 2007-08-10 20:17:19.000000000 +0900
+++ vmemmap/mm/sparse.c 2007-08-10 21:21:01.000000000 +0900
@@ -259,7 +259,7 @@ static unsigned long *sparse_early_usema
}
#ifndef CONFIG_SPARSEMEM_VMEMMAP
-struct page __init *sparse_early_mem_map_populate(unsigned long pnum, int nid)
+struct page __init *sparse_mem_map_populate(unsigned long pnum, int nid)
{
struct page *map;
@@ -284,7 +284,7 @@ struct page __init *sparse_early_mem_map
struct mem_section *ms = __nr_to_section(pnum);
int nid = sparse_early_nid(ms);
- map = sparse_early_mem_map_populate(pnum, nid);
+ map = sparse_mem_map_populate(pnum, nid);
if (map)
return map;
@@ -322,6 +322,17 @@ void __init sparse_init(void)
}
#ifdef CONFIG_MEMORY_HOTPLUG
+#ifdef CONFIG_SPARSEMEM_VMEMMAP
+static inline struct page *kmalloc_section_memmap(unsigned long pnum, int nid,
+ unsigned long nr_pages)
+{
+ return sparse_mem_map_populate(pnum, nid);
+}
+static void __kfree_section_memmap(struct page *memmap, unsigned long nr_pages)
+{
+ return; /* XXX: Not implemented yet */
+}
+#else
static struct page *__kmalloc_section_memmap(unsigned long nr_pages)
{
struct page *page, *ret;
@@ -344,6 +355,12 @@ got_map_ptr:
return ret;
}
+static inline struct page *kmalloc_section_memmap(unsigned long pnum, int nid,
+ unsigned long nr_pages)
+{
+ return __kmalloc_section_memmap(nr_pages);
+}
+
static int vaddr_in_vmalloc_area(void *addr)
{
if (addr >= (void *)VMALLOC_START &&
@@ -360,6 +377,7 @@ static void __kfree_section_memmap(struc
free_pages((unsigned long)memmap,
get_order(sizeof(struct page) * nr_pages));
}
+#endif /* CONFIG_SPARSEMEM_VMEMMAP */
/*
* returns the number of sections whose mem_maps were properly
@@ -382,7 +400,7 @@ int sparse_add_one_section(struct zone *
* plus, it does a kmalloc
*/
sparse_index_init(section_nr, pgdat->node_id);
- memmap = __kmalloc_section_memmap(nr_pages);
+ memmap = kmalloc_section_memmap(section_nr, pgdat->node_id, nr_pages);
usemap = __kmalloc_section_usemap();
pgdat_resize_lock(pgdat, &flags);
--
Yasunori Goto
--
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] 7+ messages in thread
* Re: [Patch](memory hotplug) Hot-add with sparsemem-vmemmap
2007-08-17 7:08 [Patch](memory hotplug) Hot-add with sparsemem-vmemmap Yasunori Goto
@ 2007-08-20 18:56 ` Christoph Lameter
2007-08-21 1:23 ` Yasunori Goto
2007-08-21 12:59 ` Mel Gorman
1 sibling, 1 reply; 7+ messages in thread
From: Christoph Lameter @ 2007-08-20 18:56 UTC (permalink / raw)
To: Yasunori Goto; +Cc: Andy Whitcroft, Andrew Morton, Mel Gorman, linux-mm
On Fri, 17 Aug 2007, Yasunori Goto wrote:
> Todo: # Even if this patch is applied, the message "[xxxx-xxxx] potential
> offnode page_structs" is displayed. To allocate memmap on its node,
> memmap (and pgdat) must be initialized itself like chicken and
> egg relationship.
Hmmmm.... You need to create something like the bootmem allocator?
Or relocate the memory map later.
Or just add a small piece of memory first so that only one memmap block is
placed off line?
> # vmemmap_unpopulate will be necessary for followings.
> - For cancel hot-add due to error.
> - For unplug.
>
> Please comment.
Looks fine to me.
--
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] 7+ messages in thread
* Re: [Patch](memory hotplug) Hot-add with sparsemem-vmemmap
2007-08-20 18:56 ` Christoph Lameter
@ 2007-08-21 1:23 ` Yasunori Goto
0 siblings, 0 replies; 7+ messages in thread
From: Yasunori Goto @ 2007-08-21 1:23 UTC (permalink / raw)
To: Christoph Lameter; +Cc: Andy Whitcroft, Andrew Morton, Mel Gorman, linux-mm
> On Fri, 17 Aug 2007, Yasunori Goto wrote:
>
> > Todo: # Even if this patch is applied, the message "[xxxx-xxxx] potential
> > offnode page_structs" is displayed. To allocate memmap on its node,
> > memmap (and pgdat) must be initialized itself like chicken and
> > egg relationship.
>
> Hmmmm.... You need to create something like the bootmem allocator?
Right. I suppose it may be better.
>
> Or relocate the memory map later.
I suppose relocation will be messy way.....
>
> Or just add a small piece of memory first so that only one memmap block is
> placed off line?
I'm not sure what you mean about "add small piece".
Do you mean reservation for memmap/pgdat block first?
Then this is second choice.
Even if either is chosen, kernel must remember memmap's place until
unplug. I'll try easier way.
>
> > # vmemmap_unpopulate will be necessary for followings.
> > - For cancel hot-add due to error.
> > - For unplug.
> >
> > Please comment.
>
> Looks fine to me.
Thanks :-)
--
Yasunori Goto
--
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] 7+ messages in thread
* Re: [Patch](memory hotplug) Hot-add with sparsemem-vmemmap
2007-08-17 7:08 [Patch](memory hotplug) Hot-add with sparsemem-vmemmap Yasunori Goto
2007-08-20 18:56 ` Christoph Lameter
@ 2007-08-21 12:59 ` Mel Gorman
2007-08-22 1:28 ` Yasunori Goto
1 sibling, 1 reply; 7+ messages in thread
From: Mel Gorman @ 2007-08-21 12:59 UTC (permalink / raw)
To: Yasunori Goto; +Cc: Andy Whitcroft, Andrew Morton, Christoph Lameter, linux-mm
On (17/08/07 16:08), Yasunori Goto didst pronounce:
> Hello.
>
> This patch is to avoid panic when memory hot-add is executed with
> sparsemem-vmemmap. Current vmemmap-sparsemem code doesn't support
> memory hot-add. Vmemmap must be populated when hot-add.
> This is for 2.6.23-rc2-mm2.
>
> Todo: # Even if this patch is applied, the message "[xxxx-xxxx] potential
> offnode page_structs" is displayed. To allocate memmap on its node,
> memmap (and pgdat) must be initialized itself like chicken and
> egg relationship.
>
> # vmemmap_unpopulate will be necessary for followings.
> - For cancel hot-add due to error.
> - For unplug.
>
> Please comment.
>
> Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
>
> ---
> include/linux/mm.h | 2 +-
> mm/sparse-vmemmap.c | 2 +-
> mm/sparse.c | 24 +++++++++++++++++++++---
> 3 files changed, 23 insertions(+), 5 deletions(-)
>
> Index: vmemmap/mm/sparse-vmemmap.c
> ===================================================================
> --- vmemmap.orig/mm/sparse-vmemmap.c 2007-08-10 20:17:19.000000000 +0900
> +++ vmemmap/mm/sparse-vmemmap.c 2007-08-10 21:12:54.000000000 +0900
> @@ -170,7 +170,7 @@ int __meminit vmemmap_populate(struct pa
> }
> #endif /* !CONFIG_ARCH_POPULATES_SPARSEMEM_VMEMMAP */
>
> -struct page __init *sparse_early_mem_map_populate(unsigned long pnum, int nid)
> +struct page *sparse_mem_map_populate(unsigned long pnum, int nid)
__meminit here instead of __init?
> {
> struct page *map = pfn_to_page(pnum * PAGES_PER_SECTION);
> int error = vmemmap_populate(map, PAGES_PER_SECTION, nid);
> Index: vmemmap/include/linux/mm.h
> ===================================================================
> --- vmemmap.orig/include/linux/mm.h 2007-08-10 20:17:19.000000000 +0900
> +++ vmemmap/include/linux/mm.h 2007-08-10 21:06:34.000000000 +0900
> @@ -1146,7 +1146,7 @@ extern int randomize_va_space;
>
> const char * arch_vma_name(struct vm_area_struct *vma);
>
> -struct page *sparse_early_mem_map_populate(unsigned long pnum, int nid);
> +struct page *sparse_mem_map_populate(unsigned long pnum, int nid);
> int vmemmap_populate(struct page *start_page, unsigned long pages, int node);
> int vmemmap_populate_pmd(pud_t *, unsigned long, unsigned long, int);
> void *vmemmap_alloc_block(unsigned long size, int node);
> Index: vmemmap/mm/sparse.c
> ===================================================================
> --- vmemmap.orig/mm/sparse.c 2007-08-10 20:17:19.000000000 +0900
> +++ vmemmap/mm/sparse.c 2007-08-10 21:21:01.000000000 +0900
> @@ -259,7 +259,7 @@ static unsigned long *sparse_early_usema
> }
>
> #ifndef CONFIG_SPARSEMEM_VMEMMAP
> -struct page __init *sparse_early_mem_map_populate(unsigned long pnum, int nid)
> +struct page __init *sparse_mem_map_populate(unsigned long pnum, int nid)
__meminit again possibly.
> {
> struct page *map;
>
> @@ -284,7 +284,7 @@ struct page __init *sparse_early_mem_map
> struct mem_section *ms = __nr_to_section(pnum);
> int nid = sparse_early_nid(ms);
>
> - map = sparse_early_mem_map_populate(pnum, nid);
> + map = sparse_mem_map_populate(pnum, nid);
> if (map)
> return map;
>
> @@ -322,6 +322,17 @@ void __init sparse_init(void)
> }
>
> #ifdef CONFIG_MEMORY_HOTPLUG
> +#ifdef CONFIG_SPARSEMEM_VMEMMAP
> +static inline struct page *kmalloc_section_memmap(unsigned long pnum, int nid,
> + unsigned long nr_pages)
> +{
> + return sparse_mem_map_populate(pnum, nid);
> +}
In the other version of __kmalloc_section_memmap(), pages get allocated
from alloc_pages() and it's obvious it's allocated there. A one line
comment saying that sparse_mem_map_populate() will make the necessary
allocations eventually would be nice.
Not a big deal though.
> +static void __kfree_section_memmap(struct page *memmap, unsigned long nr_pages)
> +{
> + return; /* XXX: Not implemented yet */
> +}
> +#else
> static struct page *__kmalloc_section_memmap(unsigned long nr_pages)
> {
> struct page *page, *ret;
> @@ -344,6 +355,12 @@ got_map_ptr:
> return ret;
> }
>
> +static inline struct page *kmalloc_section_memmap(unsigned long pnum, int nid,
> + unsigned long nr_pages)
> +{
> + return __kmalloc_section_memmap(nr_pages);
> +}
> +
> static int vaddr_in_vmalloc_area(void *addr)
> {
> if (addr >= (void *)VMALLOC_START &&
> @@ -360,6 +377,7 @@ static void __kfree_section_memmap(struc
> free_pages((unsigned long)memmap,
> get_order(sizeof(struct page) * nr_pages));
> }
> +#endif /* CONFIG_SPARSEMEM_VMEMMAP */
>
> /*
> * returns the number of sections whose mem_maps were properly
> @@ -382,7 +400,7 @@ int sparse_add_one_section(struct zone *
> * plus, it does a kmalloc
> */
> sparse_index_init(section_nr, pgdat->node_id);
> - memmap = __kmalloc_section_memmap(nr_pages);
> + memmap = kmalloc_section_memmap(section_nr, pgdat->node_id, nr_pages);
> usemap = __kmalloc_section_usemap();
>
> pgdat_resize_lock(pgdat, &flags);
>
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
--
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] 7+ messages in thread
* Re: [Patch](memory hotplug) Hot-add with sparsemem-vmemmap
2007-08-21 12:59 ` Mel Gorman
@ 2007-08-22 1:28 ` Yasunori Goto
2007-08-30 11:04 ` [Patch](memory hotplug) Tiny update for hot-add " Yasunori Goto
0 siblings, 1 reply; 7+ messages in thread
From: Yasunori Goto @ 2007-08-22 1:28 UTC (permalink / raw)
To: Mel Gorman; +Cc: Andy Whitcroft, Andrew Morton, Christoph Lameter, linux-mm
> > Index: vmemmap/mm/sparse-vmemmap.c
> > ===================================================================
> > --- vmemmap.orig/mm/sparse-vmemmap.c 2007-08-10 20:17:19.000000000 +0900
> > +++ vmemmap/mm/sparse-vmemmap.c 2007-08-10 21:12:54.000000000 +0900
> > @@ -170,7 +170,7 @@ int __meminit vmemmap_populate(struct pa
> > }
> > #endif /* !CONFIG_ARCH_POPULATES_SPARSEMEM_VMEMMAP */
> >
> > -struct page __init *sparse_early_mem_map_populate(unsigned long pnum, int nid)
> > +struct page *sparse_mem_map_populate(unsigned long pnum, int nid)
>
> __meminit here instead of __init?
Ah, Yes. Thanks. I'll fix it.
>
> > Index: vmemmap/mm/sparse.c
> > ===================================================================
> > --- vmemmap.orig/mm/sparse.c 2007-08-10 20:17:19.000000000 +0900
> > +++ vmemmap/mm/sparse.c 2007-08-10 21:21:01.000000000 +0900
> > @@ -259,7 +259,7 @@ static unsigned long *sparse_early_usema
> > }
> >
> > #ifndef CONFIG_SPARSEMEM_VMEMMAP
> > -struct page __init *sparse_early_mem_map_populate(unsigned long pnum, int nid)
> > +struct page __init *sparse_mem_map_populate(unsigned long pnum, int nid)
>
> __meminit again possibly.
Here should use __init. It is called at boot time and uses
alloc_bootmem().
> > #ifdef CONFIG_MEMORY_HOTPLUG
> > +#ifdef CONFIG_SPARSEMEM_VMEMMAP
> > +static inline struct page *kmalloc_section_memmap(unsigned long pnum, int nid,
> > + unsigned long nr_pages)
> > +{
> > + return sparse_mem_map_populate(pnum, nid);
> > +}
>
> In the other version of __kmalloc_section_memmap(), pages get allocated
> from alloc_pages() and it's obvious it's allocated there. A one line
> comment saying that sparse_mem_map_populate() will make the necessary
> allocations eventually would be nice.
>
> Not a big deal though.
Ah, Ok. I'll add its comment.
Thanks.
--
Yasunori Goto
--
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] 7+ messages in thread
* [Patch](memory hotplug) Tiny update for hot-add with sparsemem-vmemmap
2007-08-22 1:28 ` Yasunori Goto
@ 2007-08-30 11:04 ` Yasunori Goto
2007-08-31 21:00 ` Mel Gorman
0 siblings, 1 reply; 7+ messages in thread
From: Yasunori Goto @ 2007-08-30 11:04 UTC (permalink / raw)
To: Andrew Morton; +Cc: Andy Whitcroft, Christoph Lameter, linux-mm, Mel Gorman
This is tiny update for Mel-san's comment about
memory hotplug with sparse-vmemmap.
- Add __meminit to sparse_mem_map_populate()
- Add a comment.
This is for 2.6.23-rc3-mm1.
Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
---
mm/sparse-vmemmap.c | 2 +-
mm/sparse.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
Index: current/mm/sparse-vmemmap.c
===================================================================
--- current.orig/mm/sparse-vmemmap.c 2007-08-23 16:19:10.000000000 +0900
+++ current/mm/sparse-vmemmap.c 2007-08-30 19:25:16.000000000 +0900
@@ -137,7 +137,7 @@ int __meminit vmemmap_populate_basepages
return 0;
}
-struct page *sparse_mem_map_populate(unsigned long pnum, int nid)
+struct page * __meminit sparse_mem_map_populate(unsigned long pnum, int nid)
{
struct page *map = pfn_to_page(pnum * PAGES_PER_SECTION);
int error = vmemmap_populate(map, PAGES_PER_SECTION, nid);
Index: current/mm/sparse.c
===================================================================
--- current.orig/mm/sparse.c 2007-08-23 16:19:10.000000000 +0900
+++ current/mm/sparse.c 2007-08-30 19:31:50.000000000 +0900
@@ -326,6 +326,7 @@ void __init sparse_init(void)
static inline struct page *kmalloc_section_memmap(unsigned long pnum, int nid,
unsigned long nr_pages)
{
+ /* This will make the necessary allocations eventually. */
return sparse_mem_map_populate(pnum, nid);
}
static void __kfree_section_memmap(struct page *memmap, unsigned long nr_pages)
--
Yasunori Goto
--
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] 7+ messages in thread
* Re: [Patch](memory hotplug) Tiny update for hot-add with sparsemem-vmemmap
2007-08-30 11:04 ` [Patch](memory hotplug) Tiny update for hot-add " Yasunori Goto
@ 2007-08-31 21:00 ` Mel Gorman
0 siblings, 0 replies; 7+ messages in thread
From: Mel Gorman @ 2007-08-31 21:00 UTC (permalink / raw)
To: Yasunori Goto; +Cc: Andrew Morton, Andy Whitcroft, Christoph Lameter, linux-mm
On (30/08/07 20:04), Yasunori Goto didst pronounce:
> This is tiny update for Mel-san's comment about
> memory hotplug with sparse-vmemmap.
>
> - Add __meminit to sparse_mem_map_populate()
> - Add a comment.
>
> This is for 2.6.23-rc3-mm1.
>
> Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
>
> ---
> mm/sparse-vmemmap.c | 2 +-
> mm/sparse.c | 1 +
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> Index: current/mm/sparse-vmemmap.c
> ===================================================================
> --- current.orig/mm/sparse-vmemmap.c 2007-08-23 16:19:10.000000000 +0900
> +++ current/mm/sparse-vmemmap.c 2007-08-30 19:25:16.000000000 +0900
> @@ -137,7 +137,7 @@ int __meminit vmemmap_populate_basepages
> return 0;
> }
>
> -struct page *sparse_mem_map_populate(unsigned long pnum, int nid)
> +struct page * __meminit sparse_mem_map_populate(unsigned long pnum, int nid)
Looks good
> {
> struct page *map = pfn_to_page(pnum * PAGES_PER_SECTION);
> int error = vmemmap_populate(map, PAGES_PER_SECTION, nid);
> Index: current/mm/sparse.c
> ===================================================================
> --- current.orig/mm/sparse.c 2007-08-23 16:19:10.000000000 +0900
> +++ current/mm/sparse.c 2007-08-30 19:31:50.000000000 +0900
> @@ -326,6 +326,7 @@ void __init sparse_init(void)
> static inline struct page *kmalloc_section_memmap(unsigned long pnum, int nid,
> unsigned long nr_pages)
> {
> + /* This will make the necessary allocations eventually. */
> return sparse_mem_map_populate(pnum, nid);
Not the greatest comment but sufficient to tell the reader that
allocations happen ultimately and that is enough to avoid confusion.
> }
> static void __kfree_section_memmap(struct page *memmap, unsigned long nr_pages)
>
> --
> Yasunori Goto
>
Thanks a lot.
Acked-by: Mel Gorman <mel@csn.ul.ie>
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
--
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] 7+ messages in thread
end of thread, other threads:[~2007-08-31 21:00 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-17 7:08 [Patch](memory hotplug) Hot-add with sparsemem-vmemmap Yasunori Goto
2007-08-20 18:56 ` Christoph Lameter
2007-08-21 1:23 ` Yasunori Goto
2007-08-21 12:59 ` Mel Gorman
2007-08-22 1:28 ` Yasunori Goto
2007-08-30 11:04 ` [Patch](memory hotplug) Tiny update for hot-add " Yasunori Goto
2007-08-31 21:00 ` Mel Gorman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox