summaryrefslogtreecommitdiff
path: root/mm/Kconfig
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2010-09-03 18:22:48 +0200
committerTejun Heo <tj@kernel.org>2010-09-08 11:11:23 +0200
commitbbddff0545878a8649c091a9dd7c43ce91516734 (patch)
tree667714de4398d1589605555650cf7431a27e1a13 /mm/Kconfig
parent6abad5acac09921f4944af77d3860f82d49f528d (diff)
downloadlinux-3.10-bbddff0545878a8649c091a9dd7c43ce91516734.tar.gz
linux-3.10-bbddff0545878a8649c091a9dd7c43ce91516734.tar.bz2
linux-3.10-bbddff0545878a8649c091a9dd7c43ce91516734.zip
percpu: use percpu allocator on UP too
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: Tejun Heo <tj@kernel.org> Reviewed-by: Christoph Lameter <cl@linux-foundation.org> Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'mm/Kconfig')
-rw-r--r--mm/Kconfig8
1 files changed, 8 insertions, 0 deletions
diff --git a/mm/Kconfig b/mm/Kconfig
index f4e516e9c37..01a57447a41 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -301,3 +301,11 @@ config NOMMU_INITIAL_TRIM_EXCESS
of 1 says that all excess pages should be trimmed.
See Documentation/nommu-mmap.txt for more information.
+
+#
+# UP and nommu archs use km based percpu allocator
+#
+config NEED_PER_CPU_KM
+ depends on !SMP
+ bool
+ default y