2014-06-10 17:37:36

by Fabian Frédérick

[permalink] [raw]
Subject: [PATCH 1/1] MM/PAGE_ALLOC add __meminit to alloc_pages_exact_nid

alloc_pages_exact_nid is only called by
__meminit alloc_page_cgroup

Cc: Mel Gorman <[email protected]>
Cc: Andrew Morton <[email protected]>
Signed-off-by: Fabian Frederick <[email protected]>
---
include/linux/gfp.h | 2 +-
mm/page_alloc.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index 6eb1fb3..5e7219d 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -360,7 +360,7 @@ extern unsigned long get_zeroed_page(gfp_t gfp_mask);
void *alloc_pages_exact(size_t size, gfp_t gfp_mask);
void free_pages_exact(void *virt, size_t size);
/* This is different from alloc_pages_exact_node !!! */
-void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask);
+void * __meminit alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask);

#define __get_free_page(gfp_mask) \
__get_free_pages((gfp_mask), 0)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 4f59fa2..530837e 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2949,7 +2949,7 @@ EXPORT_SYMBOL(alloc_pages_exact);
* Note this is not alloc_pages_exact_node() which allocates on a specific node,
* but is not exact.
*/
-void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask)
+void * __meminit alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask)
{
unsigned order = get_order(size);
struct page *p = alloc_pages_node(nid, gfp_mask, order);
--
1.8.4.5


2014-06-10 22:54:45

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH 1/1] MM/PAGE_ALLOC add __meminit to alloc_pages_exact_nid

On Tue, 10 Jun 2014, Fabian Frederick wrote:

> alloc_pages_exact_nid is only called by
> __meminit alloc_page_cgroup
>
> Cc: Mel Gorman <[email protected]>
> Cc: Andrew Morton <[email protected]>
> Signed-off-by: Fabian Frederick <[email protected]>
> ---
> include/linux/gfp.h | 2 +-
> mm/page_alloc.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/gfp.h b/include/linux/gfp.h
> index 6eb1fb3..5e7219d 100644
> --- a/include/linux/gfp.h
> +++ b/include/linux/gfp.h
> @@ -360,7 +360,7 @@ extern unsigned long get_zeroed_page(gfp_t gfp_mask);
> void *alloc_pages_exact(size_t size, gfp_t gfp_mask);
> void free_pages_exact(void *virt, size_t size);
> /* This is different from alloc_pages_exact_node !!! */
> -void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask);
> +void * __meminit alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask);
>
> #define __get_free_page(gfp_mask) \
> __get_free_pages((gfp_mask), 0)
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 4f59fa2..530837e 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -2949,7 +2949,7 @@ EXPORT_SYMBOL(alloc_pages_exact);
> * Note this is not alloc_pages_exact_node() which allocates on a specific node,
> * but is not exact.
> */
> -void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask)
> +void * __meminit alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask)
> {
> unsigned order = get_order(size);
> struct page *p = alloc_pages_node(nid, gfp_mask, order);

Memcg cannot be compiled as a module, so why are we using EXPORT_SYMBOL()?

2014-06-10 23:05:03

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 1/1] MM/PAGE_ALLOC add __meminit to alloc_pages_exact_nid

On Tue, 10 Jun 2014 15:54:41 -0700 (PDT) David Rientjes <[email protected]> wrote:

> Memcg cannot be compiled as a module, so why are we using EXPORT_SYMBOL()?


From: Andrew Morton <[email protected]>
Subject: mm/page_alloc.c: unexport alloc_pages_exact_nid()

It is only called by mm/page_cgroup.c whcih cannot be modular.

Reported-by: David Rientjes <[email protected]>
Cc: Fabian Frederick <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

mm/page_alloc.c | 1 -
1 file changed, 1 deletion(-)

diff -puN mm/page_alloc.c~mm-page_allocc-unexport-alloc_pages_exact_nid mm/page_alloc.c
--- a/mm/page_alloc.c~mm-page_allocc-unexport-alloc_pages_exact_nid
+++ a/mm/page_alloc.c
@@ -2957,7 +2957,6 @@ void * __meminit alloc_pages_exact_nid(i
return NULL;
return make_alloc_exact((unsigned long)page_address(p), order, size);
}
-EXPORT_SYMBOL(alloc_pages_exact_nid);

/**
* free_pages_exact - release memory allocated via alloc_pages_exact()
_