Skip to content
  • Tejun Heo's avatar
    percpu: use dynamic percpu allocator as the default percpu allocator · e74e3962
    Tejun Heo authored
    
    
    This patch makes most !CONFIG_HAVE_SETUP_PER_CPU_AREA archs use
    dynamic percpu allocator.  The first chunk is allocated using
    embedding helper and 8k is reserved for modules.  This ensures that
    the new allocator behaves almost identically to the original allocator
    as long as static percpu variables are concerned, so it shouldn't
    introduce much breakage.
    
    s390 and alpha use custom SHIFT_PERCPU_PTR() to work around addressing
    range limit the addressing model imposes.  Unfortunately, this breaks
    if the address is specified using a variable, so for now, the two
    archs aren't converted.
    
    The following architectures are affected by this change.
    
    * sh
    * arm
    * cris
    * mips
    * sparc(32)
    * blackfin
    * avr32
    * parisc (broken, under investigation)
    * m32r
    * powerpc(32)
    
    As this change makes the dynamic allocator the default one,
    CONFIG_HAVE_DYNAMIC_PER_CPU_AREA is replaced with its invert -
    CONFIG_HAVE_LEGACY_PER_CPU_AREA, which is added to yet-to-be converted
    archs.  These archs implement their own setup_per_cpu_areas() and the
    conversion is not trivial.
    
    * powerpc(64)
    * sparc(64)
    * ia64
    * alpha
    * s390
    
    Boot and batch alloc/free tests on x86_32 with debug code (x86_32
    doesn't use default first chunk initialization).  Compile tested on
    sparc(32), powerpc(32), arm and alpha.
    
    Kyle McMartin reported that this change breaks parisc.  The problem is
    still under investigation and he is okay with pushing this patch
    forward and fixing parisc later.
    
    [ Impact: use dynamic allocator for most archs w/o custom percpu setup ]
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
    Acked-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Acked-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    Reviewed-by: default avatarChristoph Lameter <cl@linux.com>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Russell King <rmk@arm.linux.org.uk>
    Cc: Mikael Starvik <starvik@axis.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Bryan Wu <cooloney@kernel.org>
    Cc: Kyle McMartin <kyle@mcmartin.ca>
    Cc: Matthew Wilcox <matthew@wil.cx>
    Cc: Grant Grundler <grundler@parisc-linux.org>
    Cc: Hirokazu Takata <takata@linux-m32r.org>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    e74e3962