2013-10-05 17:31:45

by Zhang Yanfei

[permalink] [raw]
Subject: [PATCH 1/2] mm/page_alloc.c: Implement an empty get_pfn_range_for_nid

From: Zhang Yanfei <[email protected]>

Implement an empty get_pfn_range_for_nid for !CONFIG_HAVE_MEMBLOCK_NODE_MAP,
so that we could remove the #ifdef in free_area_init_node.

Signed-off-by: Zhang Yanfei <[email protected]>
---
mm/page_alloc.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index dd886fa..1fb13b6 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -4566,6 +4566,11 @@ static unsigned long __meminit zone_absent_pages_in_node(int nid,
}

#else /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
+void __meminit get_pfn_range_for_nid(unsigned int nid,
+ unsigned long *ignored, unsigned long *ignored)
+{
+}
+
static inline unsigned long __meminit zone_spanned_pages_in_node(int nid,
unsigned long zone_type,
unsigned long node_start_pfn,
@@ -4871,9 +4876,7 @@ void __paginginit free_area_init_node(int nid, unsigned long *zones_size,
pgdat->node_id = nid;
pgdat->node_start_pfn = node_start_pfn;
init_zone_allows_reclaim(nid);
-#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
get_pfn_range_for_nid(nid, &start_pfn, &end_pfn);
-#endif
calculate_node_totalpages(pgdat, start_pfn, end_pfn,
zones_size, zholes_size);

--
1.7.1


2013-10-05 17:32:49

by Zhang Yanfei

[permalink] [raw]
Subject: [PATCH 2/2] mm/page_alloc.c: Get rid of unused marco LONG_ALIGN

From: Zhang Yanfei <[email protected]>

The macro is nowhere used, so remove it.

Signed-off-by: Zhang Yanfei <[email protected]>
---
mm/page_alloc.c | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 1fb13b6..9d8508d 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3881,8 +3881,6 @@ static inline unsigned long wait_table_bits(unsigned long size)
return ffz(~size);
}

-#define LONG_ALIGN(x) (((x)+(sizeof(long))-1)&~((sizeof(long))-1))
-
/*
* Check if a pageblock contains reserved pages
*/
--
1.7.1

2013-10-07 23:54:16

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 1/2] mm/page_alloc.c: Implement an empty get_pfn_range_for_nid

On Sun, 06 Oct 2013 01:31:36 +0800 Zhang Yanfei <[email protected]> wrote:

> From: Zhang Yanfei <[email protected]>
>
> Implement an empty get_pfn_range_for_nid for !CONFIG_HAVE_MEMBLOCK_NODE_MAP,
> so that we could remove the #ifdef in free_area_init_node.
>
> ...
>
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -4566,6 +4566,11 @@ static unsigned long __meminit zone_absent_pages_in_node(int nid,
> }
>
> #else /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
> +void __meminit get_pfn_range_for_nid(unsigned int nid,
> + unsigned long *ignored, unsigned long *ignored)
> +{
> +}
> +
> static inline unsigned long __meminit zone_spanned_pages_in_node(int nid,
> unsigned long zone_type,
> unsigned long node_start_pfn,
> @@ -4871,9 +4876,7 @@ void __paginginit free_area_init_node(int nid, unsigned long *zones_size,
> pgdat->node_id = nid;
> pgdat->node_start_pfn = node_start_pfn;
> init_zone_allows_reclaim(nid);
> -#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
> get_pfn_range_for_nid(nid, &start_pfn, &end_pfn);
> -#endif
> calculate_node_totalpages(pgdat, start_pfn, end_pfn,
> zones_size, zholes_size);

Dunno, really. This will make the kernel a tiny bit larger by
generating an out-of-line empty function which nobody calls. This
could be fixed by making this static inline, but it's strange to have
one version of get_pfn_range_for_nid() static inline and the other
global, uninlined.

Is it worth adding a few bytes to vmlinux just to make the source a little
tidier?