2011-05-17 21:38:27

by Daniel Kiper

[permalink] [raw]
Subject: [PATCH V3 1/2] mm: Add SECTION_ALIGN_UP() and SECTION_ALIGN_DOWN() macro

Add SECTION_ALIGN_UP() and SECTION_ALIGN_DOWN() macro which aligns
given pfn to upper section and lower section boundary accordingly.

Signed-off-by: Daniel Kiper <[email protected]>
Reviewed-by: Konrad Rzeszutek Wilk <[email protected]>
---
include/linux/mmzone.h | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index d715200..217bcf6 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -956,6 +956,9 @@ static inline unsigned long early_pfn_to_nid(unsigned long pfn)
#define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT)
#define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT)

+#define SECTION_ALIGN_UP(pfn) (((pfn) + PAGES_PER_SECTION - 1) & PAGE_SECTION_MASK)
+#define SECTION_ALIGN_DOWN(pfn) ((pfn) & PAGE_SECTION_MASK)
+
struct page;
struct page_cgroup;
struct mem_section {
--
1.5.6.5


2011-05-19 03:21:39

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH V3 1/2] mm: Add SECTION_ALIGN_UP() and SECTION_ALIGN_DOWN() macro

On Tue, 17 May 2011, Daniel Kiper wrote:

> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index d715200..217bcf6 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -956,6 +956,9 @@ static inline unsigned long early_pfn_to_nid(unsigned long pfn)
> #define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT)
> #define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT)
>
> +#define SECTION_ALIGN_UP(pfn) (((pfn) + PAGES_PER_SECTION - 1) & PAGE_SECTION_MASK)
> +#define SECTION_ALIGN_DOWN(pfn) ((pfn) & PAGE_SECTION_MASK)
> +
> struct page;
> struct page_cgroup;
> struct mem_section {

These seem useful. Could you convert the code in drivers/base/node.c,
mm/page_cgroup.c, mm/page_alloc.c, and mm/sparse.c that already do this to
use the new macros?

2011-05-19 19:58:20

by Daniel Kiper

[permalink] [raw]
Subject: Re: [PATCH V3 1/2] mm: Add SECTION_ALIGN_UP() and SECTION_ALIGN_DOWN() macro

On Wed, May 18, 2011 at 08:21:23PM -0700, David Rientjes wrote:
> On Tue, 17 May 2011, Daniel Kiper wrote:
>
> > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> > index d715200..217bcf6 100644
> > --- a/include/linux/mmzone.h
> > +++ b/include/linux/mmzone.h
> > @@ -956,6 +956,9 @@ static inline unsigned long early_pfn_to_nid(unsigned long pfn)
> > #define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT)
> > #define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT)
> >
> > +#define SECTION_ALIGN_UP(pfn) (((pfn) + PAGES_PER_SECTION - 1) & PAGE_SECTION_MASK)
> > +#define SECTION_ALIGN_DOWN(pfn) ((pfn) & PAGE_SECTION_MASK)
> > +
> > struct page;
> > struct page_cgroup;
> > struct mem_section {
>
> These seem useful. Could you convert the code in drivers/base/node.c,
> mm/page_cgroup.c, mm/page_alloc.c, and mm/sparse.c that already do this to
> use the new macros?

No problem. I do that in next week or two.

Daniel