1 # Copyright (C) 2006-2013 OpenWrt.org
3 # This is free software, licensed under the GNU General Public License v2.
4 # See /LICENSE for more information.
8 bool "Compile the kernel with Debug FileSystem enabled"
11 debugfs is a virtual file system that kernel developers use to put
12 debugging files into. Enable this option to be able to read and
15 config KERNEL_PERF_EVENTS
19 config KERNEL_PROFILING
20 bool "Compile the kernel with profiling enabled"
22 select KERNEL_PERF_EVENTS
24 Enable the extended profiling support mechanisms used by profilers such
27 config KERNEL_KALLSYMS
28 bool "Compile the kernel with symbol table information"
31 This will give you more information in stack traces from kernel oopses
34 bool "Compile the kernel with tracing support"
37 config KERNEL_FTRACE_SYSCALLS
38 bool "Trace system calls"
39 depends on KERNEL_FTRACE
42 config KERNEL_ENABLE_DEFAULT_TRACERS
43 bool "Trace process context switches and events"
44 depends on KERNEL_FTRACE
47 config KERNEL_DEBUG_KERNEL
51 config KERNEL_DEBUG_INFO
52 bool "Compile the kernel with debug information"
54 select KERNEL_DEBUG_KERNEL
56 This will compile your kernel and modules with debug information.
58 config KERNEL_DEBUG_LL_UART_NONE
63 config KERNEL_DEBUG_LL
67 select KERNEL_DEBUG_LL_UART_NONE
69 ARM low level debugging
71 config KERNEL_DYNAMIC_DEBUG
72 bool "Compile the kernel with dynamic printk"
73 select KERNEL_DEBUG_FS
76 Compiles debug level messages into the kernel, which would not
77 otherwise be available at runtime. These messages can then be
78 enabled/disabled based on various levels of scope - per source file,
79 function, module, format string, and line number. This mechanism
80 implicitly compiles in all pr_debug() and dev_dbg() calls, which
81 enlarges the kernel text size by about 2%.
83 config KERNEL_EARLY_PRINTK
84 bool "Compile the kernel with early printk"
87 select KERNEL_DEBUG_KERNEL
88 select KERNEL_DEBUG_LL if arm
90 Compile the kernel with early printk support.
91 This is only useful for debugging purposes to send messages
92 over the serial console in early boot.
93 Enable this to debug early boot problems.
96 bool "Compile the kernel with asynchronous IO support"
99 config KERNEL_DIRECT_IO
100 bool "Compile the kernel with direct IO support"
103 config KERNEL_MAGIC_SYSRQ
104 bool "Compile the kernel with SysRq support"
107 config KERNEL_COREDUMP
110 config KERNEL_ELF_CORE
111 bool "Enable process core dump support"
112 select KERNEL_COREDUMP
115 config KERNEL_PROVE_LOCKING
116 bool "Enable kernel lock checking"
117 select KERNEL_DEBUG_KERNEL
120 config KERNEL_PRINTK_TIME
121 bool "Enable printk timestamps"
128 bool "Enable kexec support"
131 bool "Enable rfkill support"
132 default RFKILL_SUPPORT
135 # CGROUP support symbols
138 config KERNEL_CGROUPS
139 bool "Enable kernel cgroups"
144 config KERNEL_CGROUP_DEBUG
145 bool "Example debug cgroup subsystem"
148 This option enables a simple cgroup subsystem that
149 exports useful debugging information about the cgroups
152 config KERNEL_FREEZER
154 default y if KERNEL_CGROUP_FREEZER
156 config KERNEL_CGROUP_FREEZER
157 bool "Freezer cgroup subsystem"
160 Provides a way to freeze and unfreeze all tasks in a
163 config KERNEL_CGROUP_DEVICE
164 bool "Device controller for cgroups"
167 Provides a cgroup implementing whitelists for devices which
168 a process in the cgroup can mknod or open.
170 config KERNEL_CPUSETS
171 bool "Cpuset support"
174 This option will let you create and manage CPUSETs which
175 allow dynamically partitioning a system into sets of CPUs and
176 Memory Nodes and assigning tasks to run only within those sets.
177 This is primarily useful on large SMP or NUMA systems.
179 config KERNEL_PROC_PID_CPUSET
180 bool "Include legacy /proc/<pid>/cpuset file"
182 depends on KERNEL_CPUSETS
184 config KERNEL_CGROUP_CPUACCT
185 bool "Simple CPU accounting cgroup subsystem"
188 Provides a simple Resource Controller for monitoring the
189 total CPU consumed by the tasks in a cgroup.
191 config KERNEL_RESOURCE_COUNTERS
192 bool "Resource counters"
195 This option enables controller independent resource accounting
196 infrastructure that works with cgroups.
198 config KERNEL_MM_OWNER
200 default y if KERNEL_MEMCG
203 bool "Memory Resource Controller for Control Groups"
205 depends on KERNEL_RESOURCE_COUNTERS
207 Provides a memory resource controller that manages both anonymous
208 memory and page cache. (See Documentation/cgroups/memory.txt)
210 Note that setting this option increases fixed memory overhead
211 associated with each page of memory in the system. By this,
212 20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
213 usage tracking struct at boot. Total amount of this is printed out
216 Only enable when you're ok with these trade offs and really
217 sure you need the memory resource controller. Even when you enable
218 this, you can set "cgroup_disable=memory" at your boot option to
219 disable memory resource controller and you can avoid overheads.
220 (and lose benefits of memory resource controller)
222 This config option also selects MM_OWNER config option, which
223 could in turn add some fork/exit overhead.
225 config KERNEL_MEMCG_SWAP
226 bool "Memory Resource Controller Swap Extension"
228 depends on KERNEL_MEMCG
230 Add swap management feature to memory resource controller. When you
231 enable this, you can limit mem+swap usage per cgroup. In other words,
232 when you disable this, memory resource controller has no cares to
233 usage of swap...a process can exhaust all of the swap. This extension
234 is useful when you want to avoid exhaustion swap but this itself
235 adds more overheads and consumes memory for remembering information.
236 Especially if you use 32bit system or small memory system, please
237 be careful about enabling this. When memory resource controller
238 is disabled by boot option, this will be automatically disabled and
239 there will be no overhead from this. Even when you set this config=y,
240 if boot option "swapaccount=0" is set, swap will not be accounted.
241 Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
242 size is 4096bytes, 512k per 1Gbytes of swap.
244 config KERNEL_MEMCG_SWAP_ENABLED
245 bool "Memory Resource Controller Swap Extension enabled by default"
247 depends on KERNEL_MEMCG_SWAP
249 Memory Resource Controller Swap Extension comes with its price in
250 a bigger memory consumption. General purpose distribution kernels
251 which want to enable the feature but keep it disabled by default
252 and let the user enable it by swapaccount boot command line
253 parameter should have this option unselected.
254 For those who want to have the feature enabled by default should
255 select this option (if, for some reason, they need to disable it
256 then swapaccount=0 does the trick).
259 config KERNEL_MEMCG_KMEM
260 bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
262 depends on KERNEL_MEMCG
264 The Kernel Memory extension for Memory Resource Controller can limit
265 the amount of memory used by kernel objects in the system. Those are
266 fundamentally different from the entities handled by the standard
267 Memory Controller, which are page-based, and can be swapped. Users of
268 the kmem extension can use it to guarantee that no group of processes
269 will ever exhaust kernel resources alone.
271 config KERNEL_PERF_EVENTS
273 default y if KERNEL_CGROUP_PERF
275 config KERNEL_CGROUP_PERF
276 bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
279 This option extends the per-cpu mode to restrict monitoring to
280 threads which belong to the cgroup specified and run on the
283 menuconfig KERNEL_CGROUP_SCHED
284 bool "Group CPU scheduler"
287 This feature lets CPU scheduler recognize task groups and control CPU
288 bandwidth allocation to such task groups. It uses cgroups to group
291 if KERNEL_CGROUP_SCHED
293 config KERNEL_FAIR_GROUP_SCHED
294 bool "Group scheduling for SCHED_OTHER"
297 config KERNEL_CFS_BANDWIDTH
298 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
300 depends on KERNEL_FAIR_GROUP_SCHED
302 This option allows users to define CPU bandwidth rates (limits) for
303 tasks running within the fair group scheduler. Groups with no limit
304 set are considered to be unconstrained and will run with no
306 See tip/Documentation/scheduler/sched-bwc.txt for more information.
308 config KERNEL_RT_GROUP_SCHED
309 bool "Group scheduling for SCHED_RR/FIFO"
312 This feature lets you explicitly allocate real CPU bandwidth
313 to task groups. If enabled, it will also make it impossible to
314 schedule realtime tasks for non-root users until you allocate
315 realtime bandwidth for them.
319 config KERNEL_BLK_CGROUP
320 bool "Block IO controller"
323 Generic block IO controller cgroup interface. This is the common
324 cgroup interface which should be used by various IO controlling
327 Currently, CFQ IO scheduler uses it to recognize task groups and
328 control disk bandwidth allocation (proportional time slice allocation)
329 to such task groups. It is also used by bio throttling logic in
330 block layer to implement upper limit in IO rates on a device.
332 This option only enables generic Block IO controller infrastructure.
333 One needs to also enable actual IO controlling logic/policy. For
334 enabling proportional weight division of disk bandwidth in CFQ, set
335 CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
336 CONFIG_BLK_DEV_THROTTLING=y.
338 config KERNEL_DEBUG_BLK_CGROUP
339 bool "Enable Block IO controller debugging"
341 depends on KERNEL_BLK_CGROUP
343 Enable some debugging help. Currently it exports additional stat
344 files in a cgroup which can be useful for debugging.
346 config KERNEL_NET_CLS_CGROUP
347 bool "Control Group Classifier"
350 config KERNEL_NETPRIO_CGROUP
351 bool "Network priority cgroup"
357 # Namespace support symbols
360 config KERNEL_NAMESPACES
361 bool "Enable kernel namespaces"
370 In this namespace tasks see different info provided
371 with the uname() system call
377 In this namespace tasks work with IPC ids which correspond to
378 different IPC objects in different namespaces.
380 config KERNEL_USER_NS
381 bool "User namespace (EXPERIMENTAL)"
384 This allows containers, i.e. vservers, to use user namespaces
385 to provide different user info for different servers.
388 bool "PID Namespaces"
391 Support process id namespaces. This allows having multiple
392 processes with the same pid as long as they are in different
393 pid namespaces. This is a building block of containers.
396 bool "Network namespace"
399 Allow user space to create what appear to be multiple instances
400 of the network stack.
405 # LXC related symbols
408 config KERNEL_LXC_MISC
409 bool "Enable miscellaneous LXC related options"
414 config KERNEL_DEVPTS_MULTIPLE_INSTANCES
415 bool "Support multiple instances of devpts"
418 Enable support for multiple instances of devpts filesystem.
419 If you want to have isolated PTY namespaces (eg: in containers),
420 say Y here. Otherwise, say N. If enabled, each mount of devpts
421 filesystem with the '-o newinstance' option will create an
422 independent PTY namespace.
424 config KERNEL_POSIX_MQUEUE
425 bool "POSIX Message Queues"
428 POSIX variant of message queues is a part of IPC. In POSIX message
429 queues every message has a priority which decides about succession
430 of receiving it by a process. If you want to compile and run
431 programs written e.g. for Solaris with use of its POSIX message
432 queues (functions mq_*) say Y here.
434 POSIX message queues are visible as a filesystem called 'mqueue'
435 and can be mounted somewhere if you want to do filesystem
436 operations on message queues.