• Jiang Liu's avatar
    mm: introduce common help functions to deal with reserved/managed pages · 69afade7
    Jiang Liu authored
    The original goal of this patchset is to fix the bug reported by
    
      https://bugzilla.kernel.org/show_bug.cgi?id=53501
    
    Now it has also been expanded to reduce common code used by memory
    initializion.
    
    This is the first part, which applies to v3.9-rc1.
    
    It introduces following common helper functions to simplify
    free_initmem() and free_initrd_mem() on different architectures:
    
    adjust_managed_page_count():
    	will be used to adjust totalram_pages, totalhigh_pages,
    	zone->managed_pages when reserving/unresering a page.
    
    __free_reserved_page():
    	free a reserved page into the buddy system without adjusting
    	page statistics info
    
    free_reserved_page():
    	free a reserved page into the buddy system and adjust page
    	statistics info
    
    mark_page_reserved():
    	mark a page as reserved and adjust page statistics info
    
    free_reserved_area():
    	free a continous ranges of pages by calling free_reserved_page()
    
    free_initmem_default():
    	default method to free __init pages.
    
    We have only tested these patchset on x86 platforms, and have done basic
    compliation tests using cross-compilers from ftp.kernel.org.  That means
    some code may not pass compilation on some architectures.  So any help to
    test this patchset are welcomed!
    
    There are several other parts still under development:
    Part2: introduce free_highmem_page() to simplify freeing highmem pages
    Part3: refine code to manage totalram_pages, totalhigh_pages and
    	zone->managed_pages
    Part4: introduce helper functions to simplify mem_init() and remove the
    	global variable num_physpages.
    
    This patch:
    
    Code to deal with reserved/managed pages are duplicated by many
    architectures, so introduce common help functions to reduce duplicated
    code.  These common help functions will also be used to concentrate code
    to modify totalram_pages and zone->managed_pages, which makes the code
    much more clear.
    Signed-off-by: default avatarJiang Liu <jiang.liu@huawei.com>
    Acked-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
    Cc: Anatolij Gustschin <agust@denx.de>
    Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Chen Liqin <liqin.chen@sunplusct.com>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: David Howells <dhowells@redhat.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Eric Biederman <ebiederm@xmission.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
    Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
    Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: Hirokazu Takata <takata@linux-m32r.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: Jeff Dike <jdike@addtoit.com>
    Cc: Jiang Liu <jiang.liu@huawei.com>
    Cc: Jiang Liu <liuj97@gmail.com>
    Cc: Jonas Bonn <jonas@southpole.se>
    Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
    Cc: Lennox Wu <lennox.wu@gmail.com>
    Cc: Mark Salter <msalter@redhat.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Cc: Michal Simek <monstr@monstr.eu>
    Cc: Mikael Starvik <starvik@axis.com>
    Cc: Mike Frysinger <vapier@gentoo.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Vineet Gupta <vgupta@synopsys.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    69afade7
page_alloc.c 171 KB