From: Andy Whitcroft <apw@shadowen.org>
To: Yasunori Goto <y-goto@jp.fujitsu.com>
Cc: Badari Pulavarty <pbadari@us.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linux Kernel ML <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>, Yinghai Lu <yhlu.kernel@gmail.com>
Subject: Re: [Patch 003/005](memory hotplug) make alloc_bootmem_section()
Date: Mon, 16 Jun 2008 11:32:31 +0100 [thread overview]
Message-ID: <20080616103231.GF17016@shadowen.org> (raw)
In-Reply-To: <20080407214639.8876.E1E9C6FF@jp.fujitsu.com>
On Mon, Apr 07, 2008 at 09:47:29PM +0900, Yasunori Goto wrote:
> alloc_bootmem_section() can allocate specified section's area.
> This is used for usemap to keep same section with pgdat by later patch.
>
> Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
>
> ---
> include/linux/bootmem.h | 2 ++
> mm/bootmem.c | 31 +++++++++++++++++++++++++++++++
> 2 files changed, 33 insertions(+)
>
> Index: current/include/linux/bootmem.h
> ===================================================================
> --- current.orig/include/linux/bootmem.h 2008-04-07 19:18:44.000000000 +0900
> +++ current/include/linux/bootmem.h 2008-04-07 19:30:08.000000000 +0900
> @@ -101,6 +101,8 @@
> extern void free_bootmem_node(pg_data_t *pgdat,
> unsigned long addr,
> unsigned long size);
> +extern void *alloc_bootmem_section(unsigned long size,
> + unsigned long section_nr);
>
> #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
> #define alloc_bootmem_node(pgdat, x) \
> Index: current/mm/bootmem.c
> ===================================================================
> --- current.orig/mm/bootmem.c 2008-04-07 19:18:44.000000000 +0900
> +++ current/mm/bootmem.c 2008-04-07 19:30:08.000000000 +0900
> @@ -540,6 +540,37 @@
> return __alloc_bootmem(size, align, goal);
> }
>
> +#ifdef CONFIG_SPARSEMEM
> +void * __init alloc_bootmem_section(unsigned long size,
> + unsigned long section_nr)
> +{
> + void *ptr;
> + unsigned long limit, goal, start_nr, end_nr, pfn;
> + struct pglist_data *pgdat;
> +
> + pfn = section_nr_to_pfn(section_nr);
> + goal = PFN_PHYS(pfn);
> + limit = PFN_PHYS(section_nr_to_pfn(section_nr + 1)) - 1;
> + pgdat = NODE_DATA(early_pfn_to_nid(pfn));
> + ptr = __alloc_bootmem_core(pgdat->bdata, size, SMP_CACHE_BYTES, goal,
> + limit);
> +
> + if (!ptr)
> + return NULL;
> +
This also indicates a failure allocating within the section, and yet we
do not report it here.
> + start_nr = pfn_to_section_nr(PFN_DOWN(__pa(ptr)));
> + end_nr = pfn_to_section_nr(PFN_DOWN(__pa(ptr) + size));
> + if (start_nr != section_nr || end_nr != section_nr) {
> + printk(KERN_WARNING "alloc_bootmem failed on section %ld.\n",
> + section_nr);
> + free_bootmem_core(pgdat->bdata, __pa(ptr), size);
But we do here. I think we should report both if this is worth
reporting.
> + ptr = NULL;
> + }
> +
> + return ptr;
> +}
> +#endif
> +
> #ifndef ARCH_LOW_ADDRESS_LIMIT
> #define ARCH_LOW_ADDRESS_LIMIT 0xffffffffUL
> #endif
-apw
WARNING: multiple messages have this Message-ID (diff)
From: Andy Whitcroft <apw@shadowen.org>
To: Yasunori Goto <y-goto@jp.fujitsu.com>
Cc: Badari Pulavarty <pbadari@us.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linux Kernel ML <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>, Yinghai Lu <yhlu.kernel@gmail.com>
Subject: Re: [Patch 003/005](memory hotplug) make alloc_bootmem_section()
Date: Mon, 16 Jun 2008 11:32:31 +0100 [thread overview]
Message-ID: <20080616103231.GF17016@shadowen.org> (raw)
In-Reply-To: <20080407214639.8876.E1E9C6FF@jp.fujitsu.com>
On Mon, Apr 07, 2008 at 09:47:29PM +0900, Yasunori Goto wrote:
> alloc_bootmem_section() can allocate specified section's area.
> This is used for usemap to keep same section with pgdat by later patch.
>
> Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
>
> ---
> include/linux/bootmem.h | 2 ++
> mm/bootmem.c | 31 +++++++++++++++++++++++++++++++
> 2 files changed, 33 insertions(+)
>
> Index: current/include/linux/bootmem.h
> ===================================================================
> --- current.orig/include/linux/bootmem.h 2008-04-07 19:18:44.000000000 +0900
> +++ current/include/linux/bootmem.h 2008-04-07 19:30:08.000000000 +0900
> @@ -101,6 +101,8 @@
> extern void free_bootmem_node(pg_data_t *pgdat,
> unsigned long addr,
> unsigned long size);
> +extern void *alloc_bootmem_section(unsigned long size,
> + unsigned long section_nr);
>
> #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
> #define alloc_bootmem_node(pgdat, x) \
> Index: current/mm/bootmem.c
> ===================================================================
> --- current.orig/mm/bootmem.c 2008-04-07 19:18:44.000000000 +0900
> +++ current/mm/bootmem.c 2008-04-07 19:30:08.000000000 +0900
> @@ -540,6 +540,37 @@
> return __alloc_bootmem(size, align, goal);
> }
>
> +#ifdef CONFIG_SPARSEMEM
> +void * __init alloc_bootmem_section(unsigned long size,
> + unsigned long section_nr)
> +{
> + void *ptr;
> + unsigned long limit, goal, start_nr, end_nr, pfn;
> + struct pglist_data *pgdat;
> +
> + pfn = section_nr_to_pfn(section_nr);
> + goal = PFN_PHYS(pfn);
> + limit = PFN_PHYS(section_nr_to_pfn(section_nr + 1)) - 1;
> + pgdat = NODE_DATA(early_pfn_to_nid(pfn));
> + ptr = __alloc_bootmem_core(pgdat->bdata, size, SMP_CACHE_BYTES, goal,
> + limit);
> +
> + if (!ptr)
> + return NULL;
> +
This also indicates a failure allocating within the section, and yet we
do not report it here.
> + start_nr = pfn_to_section_nr(PFN_DOWN(__pa(ptr)));
> + end_nr = pfn_to_section_nr(PFN_DOWN(__pa(ptr) + size));
> + if (start_nr != section_nr || end_nr != section_nr) {
> + printk(KERN_WARNING "alloc_bootmem failed on section %ld.\n",
> + section_nr);
> + free_bootmem_core(pgdat->bdata, __pa(ptr), size);
But we do here. I think we should report both if this is worth
reporting.
> + ptr = NULL;
> + }
> +
> + return ptr;
> +}
> +#endif
> +
> #ifndef ARCH_LOW_ADDRESS_LIMIT
> #define ARCH_LOW_ADDRESS_LIMIT 0xffffffffUL
> #endif
-apw
--
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>
next prev parent reply other threads:[~2008-06-16 10:33 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-07 12:43 [Patch 000/005](memory hotplug) freeing pages allocated by bootmem for hotremove v3 Yasunori Goto
2008-04-07 12:45 ` [Patch 001/005](memory hotplug) register section/node id to free Yasunori Goto
2008-06-16 10:21 ` Andy Whitcroft
2008-06-16 10:21 ` Andy Whitcroft
2008-06-16 13:58 ` Yasunori Goto
2008-06-16 13:58 ` Yasunori Goto
2008-06-17 11:39 ` [Patch](memory hotplug) Tiny fixes of bootmem free patch for memory hotremove Yasunori Goto
2008-06-17 11:39 ` Yasunori Goto
2008-04-07 12:46 ` [Patch 002/005](memory hotplug) align memmap to page size Yasunori Goto
2008-06-16 10:26 ` Andy Whitcroft
2008-06-16 10:26 ` Andy Whitcroft
2008-06-16 13:26 ` Yasunori Goto
2008-06-16 13:26 ` Yasunori Goto
2008-04-07 12:47 ` [Patch 003/005](memory hotplug) make alloc_bootmem_section() Yasunori Goto
2008-06-16 10:32 ` Andy Whitcroft [this message]
2008-06-16 10:32 ` Andy Whitcroft
2008-06-16 13:18 ` Yasunori Goto
2008-06-16 13:18 ` Yasunori Goto
2008-04-07 12:48 ` [Patch 004/005](memory hotplug)allocate usemap on the section with pgdat Yasunori Goto
2008-04-07 12:50 ` [Patch 005/005](memory hotplug) free memmaps allocated by bootmem Yasunori Goto
2008-06-16 10:44 ` Andy Whitcroft
2008-06-16 10:44 ` Andy Whitcroft
2008-06-16 14:09 ` Yasunori Goto
2008-06-16 14:09 ` Yasunori Goto
-- strict thread matches above, loose matches on Subject: below --
2008-04-03 5:37 [Patch 000/005](memory hotplug) freeing pages allocated by bootmem for hotremove v2 Yasunori Goto
2008-04-03 5:41 ` [Patch 003/005](memory hotplug) make alloc_bootmem_section() Yasunori Goto
2008-04-03 5:52 ` Yinghai Lu
2008-04-03 6:07 ` Yasunori Goto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080616103231.GF17016@shadowen.org \
--to=apw@shadowen.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pbadari@us.ibm.com \
--cc=y-goto@jp.fujitsu.com \
--cc=yhlu.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.