543b638f65157ed31ae88ab3e4011403506d4f4a
[15.05/openwrt.git] / config / Config-kernel.in
1 # Copyright (C) 2006-2014 OpenWrt.org
2 #
3 # This is free software, licensed under the GNU General Public License v2.
4 # See /LICENSE for more information.
5 #
6
7 config KERNEL_PRINTK
8         bool "Enable support for printk"
9         default y
10
11 config KERNEL_CRASHLOG
12         bool "Crash logging"
13         depends on !(arm || powerpc || sparc)
14         default y
15
16 config KERNEL_SWAP
17         bool "Support for paging of anonymous memory (swap)"
18         default y
19
20 config KERNEL_DEBUG_FS
21         bool "Compile the kernel with Debug FileSystem enabled"
22         default y
23         help
24           debugfs is a virtual file system that kernel developers use to put
25           debugging files into. Enable this option to be able to read and
26           write to these files.
27
28 config KERNEL_PERF_EVENTS
29         bool
30         default n
31
32 config KERNEL_PROFILING
33         bool "Compile the kernel with profiling enabled"
34         default n
35         select KERNEL_PERF_EVENTS
36         help
37           Enable the extended profiling support mechanisms used by profilers such
38           as OProfile.
39
40 config KERNEL_KALLSYMS
41         bool "Compile the kernel with symbol table information"
42         default y
43         help
44           This will give you more information in stack traces from kernel oopses
45
46 config KERNEL_FTRACE
47         bool "Compile the kernel with tracing support"
48         default n
49
50 config KERNEL_FTRACE_SYSCALLS
51         bool "Trace system calls"
52         depends on KERNEL_FTRACE
53         default n
54
55 config KERNEL_ENABLE_DEFAULT_TRACERS
56         bool "Trace process context switches and events"
57         depends on KERNEL_FTRACE
58         default n
59
60 config KERNEL_DEBUG_KERNEL
61         bool
62         default n
63
64 config KERNEL_DEBUG_INFO
65         bool "Compile the kernel with debug information"
66         default y
67         select KERNEL_DEBUG_KERNEL
68         help
69           This will compile your kernel and modules with debug information.
70
71 config KERNEL_DEBUG_LL_UART_NONE
72         bool
73         default n
74         depends on arm
75
76 config KERNEL_DEBUG_LL
77         bool
78         default n
79         depends on arm
80         select KERNEL_DEBUG_LL_UART_NONE
81         help
82           ARM low level debugging
83
84 config KERNEL_DYNAMIC_DEBUG 
85         bool "Compile the kernel with dynamic printk"
86         select KERNEL_DEBUG_FS
87         default n
88         help
89           Compiles debug level messages into the kernel, which would not
90           otherwise be available at runtime. These messages can then be
91           enabled/disabled based on various levels of scope - per source file,
92           function, module, format string, and line number. This mechanism
93           implicitly compiles in all pr_debug() and dev_dbg() calls, which
94           enlarges the kernel text size by about 2%.
95
96 config KERNEL_EARLY_PRINTK
97         bool "Compile the kernel with early printk"
98         default n
99         depends on arm
100         select KERNEL_DEBUG_KERNEL
101         select KERNEL_DEBUG_LL if arm
102         help
103           Compile the kernel with early printk support.
104           This is only useful for debugging purposes to send messages
105           over the serial console in early boot.
106           Enable this to debug early boot problems.
107
108 config KERNEL_AIO
109         bool "Compile the kernel with asynchronous IO support"
110         default n
111
112 config KERNEL_DIRECT_IO
113         bool "Compile the kernel with direct IO support"
114         default n
115
116 config KERNEL_MAGIC_SYSRQ
117         bool "Compile the kernel with SysRq support"
118         default y
119
120 config KERNEL_COREDUMP
121         bool
122
123 config KERNEL_ELF_CORE
124         bool "Enable process core dump support"
125         select KERNEL_COREDUMP
126         default y
127
128 config KERNEL_PROVE_LOCKING
129         bool "Enable kernel lock checking"
130         select KERNEL_DEBUG_KERNEL
131         default n
132
133 config KERNEL_PRINTK_TIME
134         bool "Enable printk timestamps"
135         default y
136
137 config KERNEL_PROC_PAGE_MONITOR
138         bool "Enable /proc page monitoring"
139
140 config KERNEL_RELAY
141         bool
142
143 config KERNEL_KEXEC
144         bool "Enable kexec support"
145
146 config USE_RFKILL
147         bool "Enable rfkill support"
148         default RFKILL_SUPPORT
149
150 config USE_SPARSE
151         bool "Enable sparse check during kernel build"
152         default n
153
154 #
155 # CGROUP support symbols
156 #
157
158 config KERNEL_CGROUPS
159         bool "Enable kernel cgroups"
160         default n
161
162 if KERNEL_CGROUPS
163
164         config KERNEL_CGROUP_DEBUG
165                 bool "Example debug cgroup subsystem"
166                 default n
167                 help
168                   This option enables a simple cgroup subsystem that
169                   exports useful debugging information about the cgroups
170                   framework.
171
172         config KERNEL_FREEZER
173                 bool
174                 default y if KERNEL_CGROUP_FREEZER
175
176         config KERNEL_CGROUP_FREEZER
177                 bool "Freezer cgroup subsystem"
178                 default n
179                 help
180                   Provides a way to freeze and unfreeze all tasks in a
181                   cgroup.
182
183         config KERNEL_CGROUP_DEVICE
184                 bool "Device controller for cgroups"
185                 default y
186                 help
187                   Provides a cgroup implementing whitelists for devices which
188                   a process in the cgroup can mknod or open.
189
190         config KERNEL_CPUSETS
191                 bool "Cpuset support"
192                 default n
193                 help
194                   This option will let you create and manage CPUSETs which
195                   allow dynamically partitioning a system into sets of CPUs and
196                   Memory Nodes and assigning tasks to run only within those sets.
197                   This is primarily useful on large SMP or NUMA systems.
198
199         config KERNEL_PROC_PID_CPUSET
200                 bool "Include legacy /proc/<pid>/cpuset file"
201                 default n
202                 depends on KERNEL_CPUSETS
203
204         config KERNEL_CGROUP_CPUACCT
205                 bool "Simple CPU accounting cgroup subsystem"
206                 default n
207                 help
208                   Provides a simple Resource Controller for monitoring the
209                   total CPU consumed by the tasks in a cgroup.
210
211         config KERNEL_RESOURCE_COUNTERS
212                 bool "Resource counters"
213                 default n
214                 help
215                   This option enables controller independent resource accounting
216                   infrastructure that works with cgroups.
217
218         config KERNEL_MM_OWNER
219                 bool
220                 default y if KERNEL_MEMCG
221
222         config KERNEL_MEMCG
223                 bool "Memory Resource Controller for Control Groups"
224                 default n
225                 depends on KERNEL_RESOURCE_COUNTERS
226                 help
227                   Provides a memory resource controller that manages both anonymous
228                   memory and page cache. (See Documentation/cgroups/memory.txt)
229
230                   Note that setting this option increases fixed memory overhead
231                   associated with each page of memory in the system. By this,
232                   20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
233                   usage tracking struct at boot. Total amount of this is printed out
234                   at boot.
235
236                   Only enable when you're ok with these trade offs and really
237                   sure you need the memory resource controller. Even when you enable
238                   this, you can set "cgroup_disable=memory" at your boot option to
239                   disable memory resource controller and you can avoid overheads.
240                   (and lose benefits of memory resource controller)
241
242                   This config option also selects MM_OWNER config option, which
243                   could in turn add some fork/exit overhead.
244
245         config KERNEL_MEMCG_SWAP
246                 bool "Memory Resource Controller Swap Extension"
247                 default n
248                 depends on KERNEL_MEMCG
249                 help
250                   Add swap management feature to memory resource controller. When you
251                   enable this, you can limit mem+swap usage per cgroup. In other words,
252                   when you disable this, memory resource controller has no cares to
253                   usage of swap...a process can exhaust all of the swap. This extension
254                   is useful when you want to avoid exhaustion swap but this itself
255                   adds more overheads and consumes memory for remembering information.
256                   Especially if you use 32bit system or small memory system, please
257                   be careful about enabling this. When memory resource controller
258                   is disabled by boot option, this will be automatically disabled and
259                   there will be no overhead from this. Even when you set this config=y,
260                   if boot option "swapaccount=0" is set, swap will not be accounted.
261                   Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
262                   size is 4096bytes, 512k per 1Gbytes of swap.
263
264         config KERNEL_MEMCG_SWAP_ENABLED
265                 bool "Memory Resource Controller Swap Extension enabled by default"
266                 default n
267                 depends on KERNEL_MEMCG_SWAP
268                 help
269                   Memory Resource Controller Swap Extension comes with its price in
270                   a bigger memory consumption. General purpose distribution kernels
271                   which want to enable the feature but keep it disabled by default
272                   and let the user enable it by swapaccount boot command line
273                   parameter should have this option unselected.
274                   For those who want to have the feature enabled by default should
275                   select this option (if, for some reason, they need to disable it
276                   then swapaccount=0 does the trick).
277
278
279         config KERNEL_MEMCG_KMEM
280                 bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
281                 default n
282                 depends on KERNEL_MEMCG
283                 help
284                   The Kernel Memory extension for Memory Resource Controller can limit
285                   the amount of memory used by kernel objects in the system. Those are
286                   fundamentally different from the entities handled by the standard
287                   Memory Controller, which are page-based, and can be swapped. Users of
288                   the kmem extension can use it to guarantee that no group of processes
289                   will ever exhaust kernel resources alone.
290
291         config KERNEL_PERF_EVENTS
292                 bool
293                 default y if KERNEL_CGROUP_PERF
294
295         config KERNEL_CGROUP_PERF
296                 bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
297                 default n
298                 help
299                   This option extends the per-cpu mode to restrict monitoring to
300                   threads which belong to the cgroup specified and run on the
301                   designated cpu.
302
303         menuconfig KERNEL_CGROUP_SCHED
304                 bool "Group CPU scheduler"
305                 default n
306                 help
307                   This feature lets CPU scheduler recognize task groups and control CPU
308                   bandwidth allocation to such task groups. It uses cgroups to group
309                   tasks.
310
311         if KERNEL_CGROUP_SCHED
312
313                 config KERNEL_FAIR_GROUP_SCHED
314                         bool "Group scheduling for SCHED_OTHER"
315                         default n
316
317                 config KERNEL_CFS_BANDWIDTH
318                         bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
319                         default n
320                         depends on KERNEL_FAIR_GROUP_SCHED
321                         help
322                           This option allows users to define CPU bandwidth rates (limits) for
323                           tasks running within the fair group scheduler.  Groups with no limit
324                           set are considered to be unconstrained and will run with no
325                           restriction.
326                           See tip/Documentation/scheduler/sched-bwc.txt for more information.
327
328                 config KERNEL_RT_GROUP_SCHED
329                         bool "Group scheduling for SCHED_RR/FIFO"
330                         default n
331                         help
332                           This feature lets you explicitly allocate real CPU bandwidth
333                           to task groups. If enabled, it will also make it impossible to
334                           schedule realtime tasks for non-root users until you allocate
335                           realtime bandwidth for them.
336
337         endif
338
339         config KERNEL_BLK_CGROUP
340                 bool "Block IO controller"
341                 default y
342                 help
343                   Generic block IO controller cgroup interface. This is the common
344                   cgroup interface which should be used by various IO controlling
345                   policies.
346
347                   Currently, CFQ IO scheduler uses it to recognize task groups and
348                   control disk bandwidth allocation (proportional time slice allocation)
349                   to such task groups. It is also used by bio throttling logic in
350                   block layer to implement upper limit in IO rates on a device.
351
352                   This option only enables generic Block IO controller infrastructure.
353                   One needs to also enable actual IO controlling logic/policy. For
354                   enabling proportional weight division of disk bandwidth in CFQ, set
355                   CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
356                   CONFIG_BLK_DEV_THROTTLING=y.
357
358         config KERNEL_DEBUG_BLK_CGROUP
359                 bool "Enable Block IO controller debugging"
360                 default n
361                 depends on KERNEL_BLK_CGROUP
362                 help
363                   Enable some debugging help. Currently it exports additional stat
364                   files in a cgroup which can be useful for debugging.
365
366         config KERNEL_NET_CLS_CGROUP
367                 bool "Control Group Classifier"
368                 default y
369
370         config KERNEL_NETPRIO_CGROUP
371                 bool "Network priority cgroup"
372                 default y
373
374 endif
375
376 #
377 # Namespace support symbols
378 #
379
380 config KERNEL_NAMESPACES
381         bool "Enable kernel namespaces"
382         default n
383
384 if KERNEL_NAMESPACES
385
386         config KERNEL_UTS_NS
387                 bool "UTS namespace"
388                 default y
389                 help
390                   In this namespace tasks see different info provided
391                   with the uname() system call
392
393         config KERNEL_IPC_NS
394                 bool "IPC namespace"
395                 default y
396                 help
397                   In this namespace tasks work with IPC ids which correspond to
398                   different IPC objects in different namespaces.
399
400         config KERNEL_USER_NS
401                 bool "User namespace (EXPERIMENTAL)"
402                 default y
403                 help
404                   This allows containers, i.e. vservers, to use user namespaces
405                   to provide different user info for different servers.
406
407         config KERNEL_PID_NS
408                 bool "PID Namespaces"
409                 default y
410                 help
411                   Support process id namespaces. This allows having multiple
412                   processes with the same pid as long as they are in different
413                   pid namespaces. This is a building block of containers.
414
415         config KERNEL_NET_NS
416                 bool "Network namespace"
417                 default y
418                 help
419                   Allow user space to create what appear to be multiple instances
420                   of the network stack.
421
422 endif
423
424 #
425 # LXC related symbols
426 #
427
428 config KERNEL_LXC_MISC
429         bool "Enable miscellaneous LXC related options"
430         default n
431
432 if KERNEL_LXC_MISC
433
434         config KERNEL_DEVPTS_MULTIPLE_INSTANCES
435                 bool "Support multiple instances of devpts"
436                 default y
437                 help
438                   Enable support for multiple instances of devpts filesystem.
439                   If you want to have isolated PTY namespaces (eg: in containers),
440                   say Y here. Otherwise, say N. If enabled, each mount of devpts
441                   filesystem with the '-o newinstance' option will create an
442                   independent PTY namespace.
443
444         config KERNEL_POSIX_MQUEUE
445                 bool "POSIX Message Queues"
446                 default y
447                 help
448                   POSIX variant of message queues is a part of IPC. In POSIX message
449                   queues every message has a priority which decides about succession
450                   of receiving it by a process. If you want to compile and run
451                   programs written e.g. for Solaris with use of its POSIX message
452                   queues (functions mq_*) say Y here.
453
454                   POSIX message queues are visible as a filesystem called 'mqueue'
455                   and can be mounted somewhere if you want to do filesystem
456                   operations on message queues.
457
458 endif