Skip to content
  • Tejun Heo's avatar
    percpu: implement asynchronous chunk population · 1a4d7607
    Tejun Heo authored
    
    
    The percpu allocator now supports atomic allocations by only
    allocating from already populated areas but the mechanism to ensure
    that there's adequate amount of populated areas was missing.
    
    This patch expands pcpu_balance_work so that in addition to freeing
    excess free chunks it also populates chunks to maintain an adequate
    level of populated areas.  pcpu_alloc() schedules pcpu_balance_work if
    the amount of free populated areas is too low or after an atomic
    allocation failure.
    
    * PERPCU_DYNAMIC_RESERVE is increased by two pages to account for
      PCPU_EMPTY_POP_PAGES_LOW.
    
    * pcpu_async_enabled is added to gate both async jobs -
      chunk->map_extend_work and pcpu_balance_work - so that we don't end
      up scheduling them while the needed subsystems aren't up yet.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    1a4d7607