From: wujianguo <wujianguo106@gmail.com>
To: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
Cc: akpm@linux-foundation.org, mgorman@suse.de, mjg59@srcf.ucam.org,
paulmck@linux.vnet.ibm.com, dave@linux.vnet.ibm.com,
maxime.coquelin@stericsson.com, loic.pallardy@stericsson.com,
arjan@linux.intel.com, kmpark@infradead.org,
kamezawa.hiroyu@jp.fujitsu.com, lenb@kernel.org, rjw@sisk.pl,
gargankita@gmail.com, amit.kachhap@linaro.org,
svaidy@linux.vnet.ibm.com, thomas.abraham@linaro.org,
santosh.shilimkar@ti.com, linux-pm@vger.kernel.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 2/8] mm: Initialize node memory regions during boot
Date: Tue, 04 Dec 2012 16:25:22 +0800 [thread overview]
Message-ID: <50BDB372.50106@gmail.com> (raw)
In-Reply-To: <20121106195241.6941.43309.stgit@srivatsabhat.in.ibm.com>
Hi Srivatsa,
I got following compile waring:
WARNING: vmlinux.o(.text+0x10b320): Section mismatch in reference from the function init_zone_memory_regions() to the function .meminit.text:__absent_pages_in_range()
The function init_zone_memory_regions() references
the function __meminit __absent_pages_in_range().
This is often because init_zone_memory_regions lacks a __meminit
annotation or the annotation of __absent_pages_in_range is wrong.
WARNING: vmlinux.o(.text+0x10b457): Section mismatch in reference from the function init_node_memory_regions() to the function .meminit.text:__absent_pages_in_range()
The function init_node_memory_regions() references
the function __meminit __absent_pages_in_range().
This is often because init_node_memory_regions lacks a __meminit
annotation or the annotation of __absent_pages_in_range is wrong.
I think should add *__paginginit* to the following three functions:
init_memory_regions()
init_node_memory_regions()
init_zone_memory_regions()
Thanks,
Jianguo wu
On 2012-11-7 3:52, Srivatsa S. Bhat wrote:
> Initialize the node's memory regions structures with the information about
> the region-boundaries, at boot time.
>
> Based-on-patch-by: Ankita Garg <gargankita@gmail.com>
> Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
> ---
>
> include/linux/mm.h | 4 ++++
> mm/page_alloc.c | 35 +++++++++++++++++++++++++++++++++++
> 2 files changed, 39 insertions(+)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index fa06804..19c4fb0 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -657,6 +657,10 @@ static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma)
> #define SECTIONS_MASK ((1UL << SECTIONS_WIDTH) - 1)
> #define ZONEID_MASK ((1UL << ZONEID_SHIFT) - 1)
>
> +/* Hard-code memory regions size to be 512 MB for now. */
> +#define MEM_REGION_SHIFT (29 - PAGE_SHIFT)
> +#define MEM_REGION_SIZE (1UL << MEM_REGION_SHIFT)
> +
> static inline enum zone_type page_zonenum(const struct page *page)
> {
> return (page->flags >> ZONES_PGSHIFT) & ZONES_MASK;
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index bb90971..709e3c1 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -4560,6 +4560,40 @@ static void __init_refok alloc_node_mem_map(struct pglist_data *pgdat)
> #endif /* CONFIG_FLAT_NODE_MEM_MAP */
> }
>
> +void init_node_memory_regions(struct pglist_data *pgdat)
> +{
> + int nid = pgdat->node_id;
> + unsigned long start_pfn = pgdat->node_start_pfn;
> + unsigned long end_pfn = start_pfn + pgdat->node_spanned_pages;
> + unsigned long i, absent;
> + int idx;
> + struct node_mem_region *region;
> +
> + for (i = start_pfn, idx = 0; i < end_pfn;
> + i += region->spanned_pages, idx++) {
> +
> + region = &pgdat->node_regions[idx];
> +
> + if (i + MEM_REGION_SIZE <= end_pfn) {
> + region->start_pfn = i;
> + region->spanned_pages = MEM_REGION_SIZE;
> + } else {
> + region->start_pfn = i;
> + region->spanned_pages = end_pfn - i;
> + }
> +
> + absent = __absent_pages_in_range(nid, region->start_pfn,
> + region->start_pfn +
> + region->spanned_pages);
> +
> + region->present_pages = region->spanned_pages - absent;
> + region->idx = idx;
> + region->node = nid;
> + region->pgdat = pgdat;
> + pgdat->nr_node_regions++;
> + }
> +}
> +
> void __paginginit free_area_init_node(int nid, unsigned long *zones_size,
> unsigned long node_start_pfn, unsigned long *zholes_size)
> {
> @@ -4581,6 +4615,7 @@ void __paginginit free_area_init_node(int nid, unsigned long *zones_size,
> #endif
>
> free_area_init_core(pgdat, zones_size, zholes_size);
> + init_node_memory_regions(pgdat);
> }
>
> #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
>
> --
> 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>
>
WARNING: multiple messages have this Message-ID (diff)
From: wujianguo <wujianguo106@gmail.com>
To: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
Cc: akpm@linux-foundation.org, mgorman@suse.de, mjg59@srcf.ucam.org,
paulmck@linux.vnet.ibm.com, dave@linux.vnet.ibm.com,
maxime.coquelin@stericsson.com, loic.pallardy@stericsson.com,
arjan@linux.intel.com, kmpark@infradead.org,
kamezawa.hiroyu@jp.fujitsu.com, lenb@kernel.org, rjw@sisk.pl,
gargankita@gmail.com, amit.kachhap@linaro.org,
svaidy@linux.vnet.ibm.com, thomas.abraham@linaro.org,
santosh.shilimkar@ti.com, linux-pm@vger.kernel.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 2/8] mm: Initialize node memory regions during boot
Date: Tue, 04 Dec 2012 16:25:22 +0800 [thread overview]
Message-ID: <50BDB372.50106@gmail.com> (raw)
In-Reply-To: <20121106195241.6941.43309.stgit@srivatsabhat.in.ibm.com>
Hi Srivatsa,
I got following compile waring:
WARNING: vmlinux.o(.text+0x10b320): Section mismatch in reference from the function init_zone_memory_regions() to the function .meminit.text:__absent_pages_in_range()
The function init_zone_memory_regions() references
the function __meminit __absent_pages_in_range().
This is often because init_zone_memory_regions lacks a __meminit
annotation or the annotation of __absent_pages_in_range is wrong.
WARNING: vmlinux.o(.text+0x10b457): Section mismatch in reference from the function init_node_memory_regions() to the function .meminit.text:__absent_pages_in_range()
The function init_node_memory_regions() references
the function __meminit __absent_pages_in_range().
This is often because init_node_memory_regions lacks a __meminit
annotation or the annotation of __absent_pages_in_range is wrong.
I think should add *__paginginit* to the following three functions:
init_memory_regions()
init_node_memory_regions()
init_zone_memory_regions()
Thanks,
Jianguo wu
On 2012-11-7 3:52, Srivatsa S. Bhat wrote:
> Initialize the node's memory regions structures with the information about
> the region-boundaries, at boot time.
>
> Based-on-patch-by: Ankita Garg <gargankita@gmail.com>
> Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
> ---
>
> include/linux/mm.h | 4 ++++
> mm/page_alloc.c | 35 +++++++++++++++++++++++++++++++++++
> 2 files changed, 39 insertions(+)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index fa06804..19c4fb0 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -657,6 +657,10 @@ static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma)
> #define SECTIONS_MASK ((1UL << SECTIONS_WIDTH) - 1)
> #define ZONEID_MASK ((1UL << ZONEID_SHIFT) - 1)
>
> +/* Hard-code memory regions size to be 512 MB for now. */
> +#define MEM_REGION_SHIFT (29 - PAGE_SHIFT)
> +#define MEM_REGION_SIZE (1UL << MEM_REGION_SHIFT)
> +
> static inline enum zone_type page_zonenum(const struct page *page)
> {
> return (page->flags >> ZONES_PGSHIFT) & ZONES_MASK;
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index bb90971..709e3c1 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -4560,6 +4560,40 @@ static void __init_refok alloc_node_mem_map(struct pglist_data *pgdat)
> #endif /* CONFIG_FLAT_NODE_MEM_MAP */
> }
>
> +void init_node_memory_regions(struct pglist_data *pgdat)
> +{
> + int nid = pgdat->node_id;
> + unsigned long start_pfn = pgdat->node_start_pfn;
> + unsigned long end_pfn = start_pfn + pgdat->node_spanned_pages;
> + unsigned long i, absent;
> + int idx;
> + struct node_mem_region *region;
> +
> + for (i = start_pfn, idx = 0; i < end_pfn;
> + i += region->spanned_pages, idx++) {
> +
> + region = &pgdat->node_regions[idx];
> +
> + if (i + MEM_REGION_SIZE <= end_pfn) {
> + region->start_pfn = i;
> + region->spanned_pages = MEM_REGION_SIZE;
> + } else {
> + region->start_pfn = i;
> + region->spanned_pages = end_pfn - i;
> + }
> +
> + absent = __absent_pages_in_range(nid, region->start_pfn,
> + region->start_pfn +
> + region->spanned_pages);
> +
> + region->present_pages = region->spanned_pages - absent;
> + region->idx = idx;
> + region->node = nid;
> + region->pgdat = pgdat;
> + pgdat->nr_node_regions++;
> + }
> +}
> +
> void __paginginit free_area_init_node(int nid, unsigned long *zones_size,
> unsigned long node_start_pfn, unsigned long *zholes_size)
> {
> @@ -4581,6 +4615,7 @@ void __paginginit free_area_init_node(int nid, unsigned long *zones_size,
> #endif
>
> free_area_init_core(pgdat, zones_size, zholes_size);
> + init_node_memory_regions(pgdat);
> }
>
> #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
>
> --
> 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>
>
--
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:[~2012-12-04 8:26 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-06 19:52 [RFC PATCH 0/8][Sorted-buddy] mm: Linux VM Infrastructure to support Memory Power Management Srivatsa S. Bhat
2012-11-06 19:52 ` Srivatsa S. Bhat
2012-11-06 19:52 ` [RFC PATCH 1/8] mm: Introduce memory regions data-structure to capture region boundaries within node Srivatsa S. Bhat
2012-11-06 19:52 ` Srivatsa S. Bhat
2012-11-06 23:03 ` Dave Hansen
2012-11-06 23:03 ` Dave Hansen
2012-11-07 20:12 ` Srivatsa S. Bhat
2012-11-07 20:12 ` Srivatsa S. Bhat
2012-11-06 19:52 ` [RFC PATCH 2/8] mm: Initialize node memory regions during boot Srivatsa S. Bhat
2012-11-06 19:52 ` Srivatsa S. Bhat
2012-12-04 8:25 ` wujianguo [this message]
2012-12-04 8:25 ` wujianguo
2012-11-06 19:53 ` [RFC PATCH 3/8] mm: Introduce and initialize zone memory regions Srivatsa S. Bhat
2012-11-06 19:53 ` Srivatsa S. Bhat
2012-11-06 19:53 ` [RFC PATCH 4/8] mm: Add helpers to retrieve node region and zone region for a given page Srivatsa S. Bhat
2012-11-06 19:53 ` Srivatsa S. Bhat
2012-11-16 18:39 ` [RFC PATCH UPDATED " Srivatsa S. Bhat
2012-11-16 18:39 ` Srivatsa S. Bhat
2012-11-06 19:53 ` [RFC PATCH 5/8] mm: Add data-structures to describe memory regions within the zones' freelists Srivatsa S. Bhat
2012-11-06 19:53 ` Srivatsa S. Bhat
2012-11-06 19:53 ` [RFC PATCH 6/8] mm: Demarcate and maintain pageblocks in region-order in " Srivatsa S. Bhat
2012-11-06 19:53 ` Srivatsa S. Bhat
2012-11-06 21:49 ` Dave Hansen
2012-11-06 21:49 ` Dave Hansen
2012-11-07 20:15 ` Srivatsa S. Bhat
2012-11-07 20:15 ` Srivatsa S. Bhat
2012-11-09 6:22 ` Ankita Garg
2012-11-09 6:01 ` Ankita Garg
2012-11-09 9:03 ` Srivatsa S. Bhat
2012-11-09 9:03 ` Srivatsa S. Bhat
2012-11-06 19:54 ` [RFC PATCH 7/8] mm: Add an optimized version of del_from_freelist to keep page allocation fast Srivatsa S. Bhat
2012-11-06 19:54 ` Srivatsa S. Bhat
2012-11-06 19:54 ` [RFC PATCH 8/8] mm: Print memory region statistics to understand the buddy allocator behavior Srivatsa S. Bhat
2012-11-06 19:54 ` Srivatsa S. Bhat
2012-11-08 18:02 ` [RFC PATCH 0/8][Sorted-buddy] mm: Linux VM Infrastructure to support Memory Power Management Mel Gorman
2012-11-08 18:02 ` Mel Gorman
2012-11-08 19:38 ` Srivatsa S. Bhat
2012-11-08 19:38 ` Srivatsa S. Bhat
2012-11-09 5:14 ` Vaidyanathan Srinivasan
2012-11-09 5:14 ` Vaidyanathan Srinivasan
2012-11-09 9:00 ` Mel Gorman
2012-11-09 9:00 ` Mel Gorman
2012-11-09 14:51 ` Srivatsa S. Bhat
2012-11-09 14:51 ` Srivatsa S. Bhat
2012-11-09 15:23 ` Srivatsa S. Bhat
2012-11-09 15:23 ` Srivatsa S. Bhat
2012-11-09 16:13 ` Dave Hansen
2012-11-09 16:13 ` Dave Hansen
2012-11-09 16:34 ` Srivatsa S. Bhat
2012-11-09 16:34 ` Srivatsa S. Bhat
2012-11-09 16:43 ` Srivatsa S. Bhat
2012-11-09 16:43 ` Srivatsa S. Bhat
2012-11-09 16:52 ` Srivatsa S. Bhat
2012-11-09 16:52 ` Srivatsa S. Bhat
2012-11-16 18:32 ` Srivatsa S. Bhat
2012-11-16 18:32 ` Srivatsa S. Bhat
2012-11-09 15:34 ` Arjan van de Ven
2012-11-09 15:34 ` Arjan van de Ven
2012-11-09 16:48 ` SrinivasPandruvada
2012-11-12 16:14 ` Srivatsa S. Bhat
2012-11-12 16:14 ` Srivatsa S. Bhat
2012-12-04 10:51 ` wujianguo
2012-12-04 10:51 ` wujianguo
2012-12-06 6:32 ` Srivatsa S. Bhat
2012-12-06 6:32 ` Srivatsa S. Bhat
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=50BDB372.50106@gmail.com \
--to=wujianguo106@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=amit.kachhap@linaro.org \
--cc=arjan@linux.intel.com \
--cc=dave@linux.vnet.ibm.com \
--cc=gargankita@gmail.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kmpark@infradead.org \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-pm@vger.kernel.org \
--cc=loic.pallardy@stericsson.com \
--cc=maxime.coquelin@stericsson.com \
--cc=mgorman@suse.de \
--cc=mjg59@srcf.ucam.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=rjw@sisk.pl \
--cc=santosh.shilimkar@ti.com \
--cc=srivatsa.bhat@linux.vnet.ibm.com \
--cc=svaidy@linux.vnet.ibm.com \
--cc=thomas.abraham@linaro.org \
/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.