• Kefeng Wang's avatar
    mm: percpu: generalize percpu related config · 7ecd19cf
    Kefeng Wang authored
    Patch series "mm: percpu: Cleanup percpu first chunk function".
    
    When supporting page mapping percpu first chunk allocator on arm64, we
    found there are lots of duplicated codes in percpu embed/page first chunk
    allocator.  This patchset is aimed to cleanup them and should no function
    change.
    
    The currently supported status about 'embed' and 'page' in Archs shows
    below,
    
    	embed: NEED_PER_CPU_PAGE_FIRST_CHUNK
    	page:  NEED_PER_CPU_EMBED_FIRST_CHUNK
    
    		embed	page
    	------------------------
    	arm64	  Y	 Y
    	mips	  Y	 N
    	powerpc	  Y	 Y
    	riscv	  Y	 N
    	sparc	  Y	 Y
    	x86	  Y	 Y
    	------------------------
    
    There are two interfaces about percpu first chunk allocator,
    
     extern int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size,
                                    size_t atom_size,
                                    pcpu_fc_cpu_distance_fn_t cpu_distance_fn,
    -                               pcpu_fc_alloc_fn_t alloc_fn,
    -                               pcpu_fc_free_fn_t free_fn);
    +                               pcpu_fc_cpu_to_node_fn_t cpu_to_nd_fn);
    
     extern int __init pcpu_page_first_chunk(size_t reserved_size,
    -                               pcpu_fc_alloc_fn_t alloc_fn,
    -                               pcpu_fc_free_fn_t free_fn,
    -                               pcpu_fc_populate_pte_fn_t populate_pte_fn);
    +                               pcpu_fc_cpu_to_node_fn_t cpu_to_nd_fn);
    
    The pcpu_fc_alloc_fn_t/pcpu_fc_free_fn_t is killed, we provide generic
    pcpu_fc_alloc() and pcpu_fc_free() function, which are called in the
    pcpu_embed/page_first_chunk().
    
    1) For pcpu_embed_first_chunk(), pcpu_fc_cpu_to_node_fn_t is needed to be
       provided when archs supported NUMA.
    
    2) For pcpu_page_first_chunk(), the pcpu_fc_populate_pte_fn_t is killed too,
       a generic pcpu_populate_pte() which marked '__weak' is provided, if you
       need a different function to populate pte on the arch(like x86), please
       provide its own implementation.
    
    [1] https://github.com/kevin78/linux.git percpu-cleanup
    
    This patch (of 4):
    
    The HAVE_SETUP_PER_CPU_AREA/NEED_PER_CPU_EMBED_FIRST_CHUNK/
    NEED_PER_CPU_PAGE_FIRST_CHUNK/USE_PERCPU_NUMA_NODE_ID configs, which have
    duplicate definitions on platforms that subscribe it.
    
    Move them into mm, drop these redundant definitions and instead just
    select it on applicable platforms.
    
    Link: https://lkml.kernel.org/r/20211216112359.103822-1-wangkefeng.wang@huawei.com
    Link: https://lkml.kernel.org/r/20211216112359.103822-2-wangkefeng.wang@huawei.comSigned-off-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>	[arm64]
    Cc: Will Deacon <will@kernel.org>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Dennis Zhou <dennis@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: Tejun Heo <tj@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    7ecd19cf
Kconfig 37.2 KB