2011-05-02 21:21:14

by Daniel Kiper

[permalink] [raw]
Subject: [PATCH 2/4] mm: Enable set_page_section() only if CONFIG_SPARSEMEM and !CONFIG_SPARSEMEM_VMEMMAP

set_page_section() is valid only in CONFIG_SPARSEMEM and
!CONFIG_SPARSEMEM_VMEMMAP context. Move it to proper place
and amend accordingly functions which are using it.

Signed-off-by: Daniel Kiper <[email protected]>
---
include/linux/mm.h | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 692dbae..23465e1 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -680,6 +680,12 @@ static inline struct zone *page_zone(struct page *page)
}

#if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP)
+static inline void set_page_section(struct page *page, unsigned long section)
+{
+ page->flags &= ~(SECTIONS_MASK << SECTIONS_PGSHIFT);
+ page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT;
+}
+
static inline unsigned long page_to_section(struct page *page)
{
return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK;
@@ -698,18 +704,14 @@ static inline void set_page_node(struct page *page, unsigned long node)
page->flags |= (node & NODES_MASK) << NODES_PGSHIFT;
}

-static inline void set_page_section(struct page *page, unsigned long section)
-{
- page->flags &= ~(SECTIONS_MASK << SECTIONS_PGSHIFT);
- page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT;
-}
-
static inline void set_page_links(struct page *page, enum zone_type zone,
unsigned long node, unsigned long pfn)
{
set_page_zone(page, zone);
set_page_node(page, node);
+#if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP)
set_page_section(page, pfn_to_section_nr(pfn));
+#endif
}

/*
--
1.5.6.5


2011-05-02 22:50:21

by Dave Hansen

[permalink] [raw]
Subject: Re: [PATCH 2/4] mm: Enable set_page_section() only if CONFIG_SPARSEMEM and !CONFIG_SPARSEMEM_VMEMMAP

On Mon, 2011-05-02 at 23:20 +0200, Daniel Kiper wrote:
> set_page_section() is valid only in CONFIG_SPARSEMEM and
> !CONFIG_SPARSEMEM_VMEMMAP context. Move it to proper place
> and amend accordingly functions which are using it.

I guess we've been wasting all that time setting section bits in
page->flags that we'll never use. Looks sane to me.

Acked-by: Dave Hansen <[email protected]>

-- Dave

2011-05-11 23:10:29

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH 2/4] mm: Enable set_page_section() only if CONFIG_SPARSEMEM and !CONFIG_SPARSEMEM_VMEMMAP

On Mon, 2 May 2011, Daniel Kiper wrote:

> set_page_section() is valid only in CONFIG_SPARSEMEM and
> !CONFIG_SPARSEMEM_VMEMMAP context.

s/valid/needed/. set_page_section() _is_ valid in all contexts since
SECTIONS_MASK and SECTIONS_PGSHIFT is defined in all contexts.

> Move it to proper place
> and amend accordingly functions which are using it.
>
> Signed-off-by: Daniel Kiper <[email protected]>

After the changelog is fixed:

Acked-by: David Rientjes <[email protected]>