From: Daniel Kiper Date: Wed, 25 May 2011 00:12:51 +0000 (-0700) Subject: mm: add SECTION_ALIGN_UP() and SECTION_ALIGN_DOWN() macro X-Git-Tag: v2.6.32.70~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=73734375c75ef304e2b4629bc48af9031be6f672;p=thirdparty%2Fkernel%2Fstable.git mm: add SECTION_ALIGN_UP() and SECTION_ALIGN_DOWN() macro commit a539f3533b78e39a22723d6d3e1e11b6c14454d9 upstream. Add SECTION_ALIGN_UP() and SECTION_ALIGN_DOWN() macro which aligns given pfn to upper section and lower section boundary accordingly. Required for the latest memory hotplug support for the Xen balloon driver. Signed-off-by: Daniel Kiper Reviewed-by: Konrad Rzeszutek Wilk David Rientjes Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [wt: only needed for next patch] Signed-off-by: Willy Tarreau --- diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 6c31a2a7c18d7..0828194bf4e77 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -960,6 +960,12 @@ static inline unsigned long early_pfn_to_nid(unsigned long pfn) #error Allocator MAX_ORDER exceeds SECTION_SIZE #endif +#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 {