1. 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
  2. 07 Sep, 2010 37 commits