1. 10 Sep, 2010 1 commit
  2. 09 Sep, 2010 1 commit
    • Tejun Heo's avatar
      percpu: fix build breakage on s390 and cleanup build configuration tests · 3c9a024f
      Tejun Heo authored
      Commit bbddff05 (percpu: use percpu allocator on UP too) incorrectly
      excluded pcpu_build_alloc_info() on SMP configurations which use
      generic setup_per_cpu_area() like s390.  The config ifdefs are
      becoming confusing.  Fix and clean it up by,
      
      * Move pcpu_build_alloc_info() right on top of its two users -
        pcpu_{embed|page}_first_chunk() which are already in CONFIG_SMP
        block.
      
      * Define BUILD_{EMBED|PAGE}_FIRST_CHUNK which indicate whether each
        first chunk function needs to be included and use them to control
        inclusion of the three functions to reduce confusion.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarSachin Sant <sachinp@in.ibm.com>
      3c9a024f
  3. 08 Sep, 2010 3 commits
    • Tejun Heo's avatar
      percpu: use percpu allocator on UP too · bbddff05
      Tejun Heo authored
      On UP, percpu allocations were redirected to kmalloc.  This has the
      following problems.
      
      * For certain amount of allocations (determined by
        PERCPU_DYNAMIC_EARLY_SLOTS and PERCPU_DYNAMIC_EARLY_SIZE), percpu
        allocator can be used before the usual kernel memory allocator is
        brought online.  On SMP, this is used to initialize the kernel
        memory allocator.
      
      * percpu allocator honors alignment upto PAGE_SIZE but kmalloc()
        doesn't.  For example, workqueue makes use of larger alignments for
        cpu_workqueues.
      
      Currently, users of percpu allocators need to handle UP differently,
      which is somewhat fragile and ugly.  Other than small amount of
      memory, there isn't much to lose by enabling percpu allocator on UP.
      It can simply use kernel memory based chunk allocation which was added
      for SMP archs w/o MMUs.
      
      This patch removes mm/percpu_up.c, builds mm/percpu.c on UP too and
      makes UP build use percpu-km.  As percpu addresses and kernel
      addresses are always identity mapped and static percpu variables don't
      need any special treatment, nothing is arch dependent and mm/percpu.c
      implements generic setup_per_cpu_areas() for UP.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarChristoph Lameter <cl@linux-foundation.org>
      Acked-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
      bbddff05
    • Tejun Heo's avatar
      percpu: reduce PCPU_MIN_UNIT_SIZE to 32k · 6abad5ac
      Tejun Heo authored
      In preparation of enabling percpu allocator for UP, reduce
      PCPU_MIN_UNIT_SIZE to 32k.  On UP, the first chunk doesn't have to
      include static percpu variables and chunk size can be smaller which is
      important as UP percpu allocator will use contiguous kernel memory to
      populate chunks.
      
      PCPU_MIN_UNIT_SIZE also determines the maximum supported allocation
      size but 32k should still be enough.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarChristoph Lameter <cl@linux.com>
      6abad5ac
    • Tejun Heo's avatar
      vmalloc: pcpu_get/free_vm_areas() aren't needed on UP · 4f8b02b4
      Tejun Heo authored
      These functions are used only by percpu memory allocator on SMP.
      Don't build them on UP.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Nick Piggin <npiggin@kernel.dk>
      Reviewed-by: default avatarChrsitoph Lameter <cl@linux.com>
      4f8b02b4
  4. 07 Sep, 2010 35 commits