• Tejun Heo's avatar
    percpu: allow limited allocation before slab is online · 099a19d9
    Tejun Heo authored
    This patch updates percpu allocator such that it can serve limited
    amount of allocation before slab comes online.  This is primarily to
    allow slab to depend on working percpu allocator.
    
    Two parameters, PERCPU_DYNAMIC_EARLY_SIZE and SLOTS, determine how
    much memory space and allocation map slots are reserved.  If this
    reserved area is exhausted, WARN_ON_ONCE() will trigger and allocation
    will fail till slab comes online.
    
    The following changes are made to implement early alloc.
    
    * pcpu_mem_alloc() now checks slab_is_available()
    
    * Chunks are allocated using pcpu_mem_alloc()
    
    * Init paths make sure ai->dyn_size is at least as large as
      PERCPU_DYNAMIC_EARLY_SIZE.
    
    * Initial alloc maps are allocated in __initdata and copied to
      kmalloc'd areas once slab is online.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Christoph Lameter <cl@linux-foundation.org>
    099a19d9
percpu.c 53.7 KB