2008-06-16 10:27:57

by Andy Whitcroft

[permalink] [raw]
Subject: Re: [Patch 002/005](memory hotplug) align memmap to page size

On Mon, Apr 07, 2008 at 09:46:19PM +0900, Yasunori Goto wrote:
> To free memmap easier, this patch aligns it to page size.
> Bootmem allocater may mix some objects in one pages.
> It's not good for freeing memmap of memory hot-remove.
>
>
> Signed-off-by: Yasunori Goto <[email protected]>
>
> ---
> mm/sparse.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> Index: current/mm/sparse.c
> ===================================================================
> --- current.orig/mm/sparse.c 2008-04-07 19:18:50.000000000 +0900
> +++ current/mm/sparse.c 2008-04-07 20:08:13.000000000 +0900
> @@ -265,8 +265,8 @@
> if (map)
> return map;
>
> - map = alloc_bootmem_node(NODE_DATA(nid),
> - sizeof(struct page) * PAGES_PER_SECTION);
> + map = alloc_bootmem_pages_node(NODE_DATA(nid),
> + PAGE_ALIGN(sizeof(struct page) * PAGES_PER_SECTION));
> return map;
> }
> #endif /* !CONFIG_SPARSEMEM_VMEMMAP */

Ahh ok, we do makes sure the mmap uses up the rest of the space. That
though is a shame as we cannot slip the usemap in the end of the space
any more (assuming we could).

-apw


2008-06-16 13:27:34

by Yasunori Goto

[permalink] [raw]
Subject: Re: [Patch 002/005](memory hotplug) align memmap to page size

> On Mon, Apr 07, 2008 at 09:46:19PM +0900, Yasunori Goto wrote:
> > To free memmap easier, this patch aligns it to page size.
> > Bootmem allocater may mix some objects in one pages.
> > It's not good for freeing memmap of memory hot-remove.
> >
> >
> > Signed-off-by: Yasunori Goto <[email protected]>
> >
> > ---
> > mm/sparse.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > Index: current/mm/sparse.c
> > ===================================================================
> > --- current.orig/mm/sparse.c 2008-04-07 19:18:50.000000000 +0900
> > +++ current/mm/sparse.c 2008-04-07 20:08:13.000000000 +0900
> > @@ -265,8 +265,8 @@
> > if (map)
> > return map;
> >
> > - map = alloc_bootmem_node(NODE_DATA(nid),
> > - sizeof(struct page) * PAGES_PER_SECTION);
> > + map = alloc_bootmem_pages_node(NODE_DATA(nid),
> > + PAGE_ALIGN(sizeof(struct page) * PAGES_PER_SECTION));
> > return map;
> > }
> > #endif /* !CONFIG_SPARSEMEM_VMEMMAP */
>
> Ahh ok, we do makes sure the mmap uses up the rest of the space. That
> though is a shame as we cannot slip the usemap in the end of the space
> any more (assuming we could).

I thought we could merge memmap and usemap page in same pages. However,
if memmap' size equals page size correctly, one page must be used for
only one usemap in the end.

Bye.

--
Yasunori Goto