d8ca76cf1d96dc0ab8f2a2f60b465e62c34b776f
[oweals/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_BUILD_USER
8         string "Custom Kernel Build User Name"
9         default ""
10         help
11           Sets the Kernel build user string, which for example will be returned
12           by 'uname -a' on running systems.
13           If not set, uses system user at build time.
14
15 config KERNEL_BUILD_DOMAIN
16         string "Custom Kernel Build Domain Name"
17         default ""
18         help
19           Sets the Kernel build domain string, which for example will be
20           returned by 'uname -a' on running systems.
21           If not set, uses system hostname at build time.
22
23 config KERNEL_PRINTK
24         bool "Enable support for printk"
25         default y
26
27 config KERNEL_CRASHLOG
28         bool "Crash logging"
29         depends on !(arm || powerpc || sparc || TARGET_uml)
30         default y
31
32 config KERNEL_SWAP
33         bool "Support for paging of anonymous memory (swap)"
34         default y
35
36 config KERNEL_DEBUG_FS
37         bool "Compile the kernel with debug filesystem enabled"
38         default y
39         help
40           debugfs is a virtual file system that kernel developers use to put
41           debugging files into. Enable this option to be able to read and
42           write to these files. Many common debugging facilities, such as
43           ftrace, require the existence of debugfs.
44
45 config KERNEL_ARM_PMU
46         bool
47         default n
48         depends on (arm || arm64)
49
50 config KERNEL_PERF_EVENTS
51         bool
52         default n
53         select KERNEL_ARM_PMU if (arm || arm64)
54
55 config KERNEL_PROFILING
56         bool "Compile the kernel with profiling enabled"
57         default n
58         select KERNEL_PERF_EVENTS
59         help
60           Enable the extended profiling support mechanisms used by profilers such
61           as OProfile.
62
63 config KERNEL_KALLSYMS
64         bool "Compile the kernel with symbol table information"
65         default y if !SMALL_FLASH
66         help
67           This will give you more information in stack traces from kernel oopses.
68
69 config KERNEL_FTRACE
70         bool "Compile the kernel with tracing support"
71         depends on !TARGET_uml
72         default n
73
74 config KERNEL_FTRACE_SYSCALLS
75         bool "Trace system calls"
76         depends on KERNEL_FTRACE
77         default n
78
79 config KERNEL_ENABLE_DEFAULT_TRACERS
80         bool "Trace process context switches and events"
81         depends on KERNEL_FTRACE
82         default n
83
84 config KERNEL_FUNCTION_TRACER
85         bool "Function tracer"
86         depends on KERNEL_FTRACE
87         default n
88
89 config KERNEL_FUNCTION_GRAPH_TRACER
90         bool "Function graph tracer"
91         depends on KERNEL_FUNCTION_TRACER
92         default n
93
94 config KERNEL_DYNAMIC_FTRACE
95         bool "Enable/disable function tracing dynamically"
96         depends on KERNEL_FUNCTION_TRACER
97         default n
98
99 config KERNEL_FUNCTION_PROFILER
100         bool "Function profiler"
101         depends on KERNEL_FUNCTION_TRACER
102         default n
103
104 config KERNEL_DEBUG_KERNEL
105         bool
106         default n
107
108 config KERNEL_DEBUG_INFO
109         bool "Compile the kernel with debug information"
110         default y
111         select KERNEL_DEBUG_KERNEL
112         help
113           This will compile your kernel and modules with debug information.
114
115 config KERNEL_DEBUG_LL_UART_NONE
116         bool
117         default n
118         depends on arm
119
120 config KERNEL_DEBUG_LL
121         bool
122         default n
123         depends on arm
124         select KERNEL_DEBUG_LL_UART_NONE
125         help
126           ARM low level debugging.
127
128 config KERNEL_DYNAMIC_DEBUG
129         bool "Compile the kernel with dynamic printk"
130         select KERNEL_DEBUG_FS
131         default n
132         help
133           Compiles debug level messages into the kernel, which would not
134           otherwise be available at runtime. These messages can then be
135           enabled/disabled based on various levels of scope - per source file,
136           function, module, format string, and line number. This mechanism
137           implicitly compiles in all pr_debug() and dev_dbg() calls, which
138           enlarges the kernel text size by about 2%.
139
140 config KERNEL_EARLY_PRINTK
141         bool "Compile the kernel with early printk"
142         default y if TARGET_bcm53xx
143         default n
144         depends on arm
145         select KERNEL_DEBUG_KERNEL
146         select KERNEL_DEBUG_LL if arm
147         help
148           Compile the kernel with early printk support.  This is only useful for
149           debugging purposes to send messages over the serial console in early boot.
150           Enable this to debug early boot problems.
151
152 config KERNEL_KPROBES
153         bool "Compile the kernel with kprobes support"
154         default n
155         select KERNEL_FTRACE
156         select KERNEL_PERF_EVENTS
157         help
158           Compiles the kernel with KPROBES support, which allows you to trap
159           at almost any kernel address and execute a callback function.
160           register_kprobe() establishes a probepoint and specifies the
161           callback. Kprobes is useful for kernel debugging, non-intrusive
162           instrumentation and testing.
163           If in doubt, say "N".
164
165 config KERNEL_KPROBE_EVENT
166         bool
167         default y if KERNEL_KPROBES
168
169 config KERNEL_AIO
170         bool "Compile the kernel with asynchronous IO support"
171         default n
172
173 config KERNEL_DIRECT_IO
174         bool "Compile the kernel with direct IO support"
175         default n
176
177 config KERNEL_FHANDLE
178         bool "Compile the kernel with support for fhandle syscalls"
179         default n
180
181 config KERNEL_FANOTIFY
182         bool "Compile the kernel with modern file notification support"
183         default n
184
185 config KERNEL_BLK_DEV_BSG
186         bool "Compile the kernel with SCSI generic v4 support for any block device"
187         default n
188
189 config KERNEL_MAGIC_SYSRQ
190         bool "Compile the kernel with SysRq support"
191         default y
192
193 config KERNEL_COREDUMP
194         bool
195
196 config KERNEL_ELF_CORE
197         bool "Enable process core dump support"
198         select KERNEL_COREDUMP
199         default y
200
201 config KERNEL_PROVE_LOCKING
202         bool "Enable kernel lock checking"
203         select KERNEL_DEBUG_KERNEL
204         default n
205
206 config KERNEL_PRINTK_TIME
207         bool "Enable printk timestamps"
208         default y
209
210 config KERNEL_SLUB_DEBUG
211         bool
212
213 config KERNEL_SLUB_DEBUG_ON
214         bool
215
216 config KERNEL_SLABINFO
217         select KERNEL_SLUB_DEBUG
218         select KERNEL_SLUB_DEBUG_ON
219         bool "Enable /proc slab debug info"
220
221 config KERNEL_PROC_PAGE_MONITOR
222         bool "Enable /proc page monitoring"
223
224 config KERNEL_RELAY
225         bool
226
227 config KERNEL_KEXEC
228         bool "Enable kexec support"
229
230 config USE_RFKILL
231         bool "Enable rfkill support"
232         default RFKILL_SUPPORT
233
234 config USE_SPARSE
235         bool "Enable sparse check during kernel build"
236         default n
237
238 config KERNEL_DEVTMPFS
239         bool "Compile the kernel with device tmpfs enabled"
240         default n
241         help
242           devtmpfs is a simple, kernel-managed /dev filesystem. The kernel creates
243           devices nodes for all registered devices ti simplify boot, but leaves more
244           complex tasks to userspace (e.g. udev).
245
246 if KERNEL_DEVTMPFS
247
248         config KERNEL_DEVTMPFS_MOUNT
249                 bool "Automatically mount devtmpfs after root filesystem is mounted"
250                 default n
251
252 endif
253
254 config KERNEL_KEYS
255     bool "Enable kernel access key retention support"
256     default n
257
258 config KERNEL_PERSISTENT_KEYRINGS
259     bool "Enable kernel persistent keyrings"
260     depends on KERNEL_KEYS
261     default n
262
263 config KERNEL_BIG_KEYS
264     bool "Enable large payload keys on kernel keyrings"
265     depends on KERNEL_KEYS
266     default n
267
268 config KERNEL_ENCRYPTED_KEYS
269     tristate "Enable keys with encrypted payloads on kernel keyrings"
270     depends on KERNEL_KEYS
271     default n
272
273 #
274 # CGROUP support symbols
275 #
276
277 config KERNEL_CGROUPS
278         bool "Enable kernel cgroups"
279         default n
280
281 if KERNEL_CGROUPS
282
283         config KERNEL_CGROUP_DEBUG
284                 bool "Example debug cgroup subsystem"
285                 default n
286                 help
287                   This option enables a simple cgroup subsystem that
288                   exports useful debugging information about the cgroups
289                   framework.
290
291         config KERNEL_FREEZER
292                 bool
293                 default y if KERNEL_CGROUP_FREEZER
294
295         config KERNEL_CGROUP_FREEZER
296                 bool "Freezer cgroup subsystem"
297                 default y
298                 help
299                   Provides a way to freeze and unfreeze all tasks in a
300                   cgroup.
301
302         config KERNEL_CGROUP_DEVICE
303                 bool "Device controller for cgroups"
304                 default y
305                 help
306                   Provides a cgroup implementing whitelists for devices which
307                   a process in the cgroup can mknod or open.
308
309         config KERNEL_CGROUP_PIDS
310                 bool "PIDs cgroup subsystem"
311                 default y
312                 help
313                   Provides enforcement of process number limits in the scope of a
314                   cgroup.
315
316         config KERNEL_CPUSETS
317                 bool "Cpuset support"
318                 default n
319                 help
320                   This option will let you create and manage CPUSETs which
321                   allow dynamically partitioning a system into sets of CPUs and
322                   Memory Nodes and assigning tasks to run only within those sets.
323                   This is primarily useful on large SMP or NUMA systems.
324
325         config KERNEL_PROC_PID_CPUSET
326                 bool "Include legacy /proc/<pid>/cpuset file"
327                 default n
328                 depends on KERNEL_CPUSETS
329
330         config KERNEL_CGROUP_CPUACCT
331                 bool "Simple CPU accounting cgroup subsystem"
332                 default n
333                 help
334                   Provides a simple Resource Controller for monitoring the
335                   total CPU consumed by the tasks in a cgroup.
336
337         config KERNEL_RESOURCE_COUNTERS
338                 bool "Resource counters"
339                 default n
340                 help
341                   This option enables controller independent resource accounting
342                   infrastructure that works with cgroups.
343
344         config KERNEL_MM_OWNER
345                 bool
346                 default y if KERNEL_MEMCG
347
348         config KERNEL_MEMCG
349                 bool "Memory Resource Controller for Control Groups"
350                 default n
351                 depends on KERNEL_RESOURCE_COUNTERS || !LINUX_3_18
352                 help
353                   Provides a memory resource controller that manages both anonymous
354                   memory and page cache. (See Documentation/cgroups/memory.txt)
355
356                   Note that setting this option increases fixed memory overhead
357                   associated with each page of memory in the system. By this,
358                   20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
359                   usage tracking struct at boot. Total amount of this is printed out
360                   at boot.
361
362                   Only enable when you're ok with these tradeoffs and really
363                   sure you need the memory resource controller. Even when you enable
364                   this, you can set "cgroup_disable=memory" at your boot option to
365                   disable memory resource controller and you can avoid overheads
366                   (but lose benefits of memory resource controller).
367
368                   This config option also selects MM_OWNER config option, which
369                   could in turn add some fork/exit overhead.
370
371         config KERNEL_MEMCG_SWAP
372                 bool "Memory Resource Controller Swap Extension"
373                 default n
374                 depends on KERNEL_MEMCG
375                 help
376                   Add swap management feature to memory resource controller. When you
377                   enable this, you can limit mem+swap usage per cgroup. In other words,
378                   when you disable this, memory resource controller has no cares to
379                   usage of swap...a process can exhaust all of the swap. This extension
380                   is useful when you want to avoid exhaustion swap but this itself
381                   adds more overheads and consumes memory for remembering information.
382                   Especially if you use 32bit system or small memory system, please
383                   be careful about enabling this. When memory resource controller
384                   is disabled by boot option, this will be automatically disabled and
385                   there will be no overhead from this. Even when you set this config=y,
386                   if boot option "swapaccount=0" is set, swap will not be accounted.
387                   Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
388                   size is 4096bytes, 512k per 1Gbytes of swap.
389
390         config KERNEL_MEMCG_SWAP_ENABLED
391                 bool "Memory Resource Controller Swap Extension enabled by default"
392                 default n
393                 depends on KERNEL_MEMCG_SWAP
394                 help
395                   Memory Resource Controller Swap Extension comes with its price in
396                   a bigger memory consumption. General purpose distribution kernels
397                   which want to enable the feature but keep it disabled by default
398                   and let the user enable it by swapaccount boot command line
399                   parameter should have this option unselected.
400
401                   Those who want to have the feature enabled by default should
402                   select this option (if, for some reason, they need to disable it,
403                   then swapaccount=0 does the trick).
404
405
406         config KERNEL_MEMCG_KMEM
407                 bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
408                 default n
409                 depends on KERNEL_MEMCG
410                 help
411                   The Kernel Memory extension for Memory Resource Controller can limit
412                   the amount of memory used by kernel objects in the system. Those are
413                   fundamentally different from the entities handled by the standard
414                   Memory Controller, which are page-based, and can be swapped. Users of
415                   the kmem extension can use it to guarantee that no group of processes
416                   will ever exhaust kernel resources alone.
417
418         config KERNEL_CGROUP_PERF
419                 bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
420                 select KERNEL_PERF_EVENTS
421                 default n
422                 help
423                   This option extends the per-cpu mode to restrict monitoring to
424                   threads which belong to the cgroup specified and run on the
425                   designated cpu.
426
427         menuconfig KERNEL_CGROUP_SCHED
428                 bool "Group CPU scheduler"
429                 default n
430                 help
431                   This feature lets CPU scheduler recognize task groups and control CPU
432                   bandwidth allocation to such task groups. It uses cgroups to group
433                   tasks.
434
435         if KERNEL_CGROUP_SCHED
436
437                 config KERNEL_FAIR_GROUP_SCHED
438                         bool "Group scheduling for SCHED_OTHER"
439                         default n
440
441                 config KERNEL_CFS_BANDWIDTH
442                         bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
443                         default n
444                         depends on KERNEL_FAIR_GROUP_SCHED
445                         help
446                           This option allows users to define CPU bandwidth rates (limits) for
447                           tasks running within the fair group scheduler.  Groups with no limit
448                           set are considered to be unconstrained and will run with no
449                           restriction.
450                           See tip/Documentation/scheduler/sched-bwc.txt for more information.
451
452                 config KERNEL_RT_GROUP_SCHED
453                         bool "Group scheduling for SCHED_RR/FIFO"
454                         default n
455                         help
456                           This feature lets you explicitly allocate real CPU bandwidth
457                           to task groups. If enabled, it will also make it impossible to
458                           schedule realtime tasks for non-root users until you allocate
459                           realtime bandwidth for them.
460
461         endif
462
463         config KERNEL_BLK_CGROUP
464                 bool "Block IO controller"
465                 default y
466                 help
467                   Generic block IO controller cgroup interface. This is the common
468                   cgroup interface which should be used by various IO controlling
469                   policies.
470
471                   Currently, CFQ IO scheduler uses it to recognize task groups and
472                   control disk bandwidth allocation (proportional time slice allocation)
473                   to such task groups. It is also used by bio throttling logic in
474                   block layer to implement upper limit in IO rates on a device.
475
476                   This option only enables generic Block IO controller infrastructure.
477                   One needs to also enable actual IO controlling logic/policy. For
478                   enabling proportional weight division of disk bandwidth in CFQ, set
479                   CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
480                   CONFIG_BLK_DEV_THROTTLING=y.
481
482         config KERNEL_DEBUG_BLK_CGROUP
483                 bool "Enable Block IO controller debugging"
484                 default n
485                 depends on KERNEL_BLK_CGROUP
486                 help
487                   Enable some debugging help. Currently it exports additional stat
488                   files in a cgroup which can be useful for debugging.
489
490         config KERNEL_NET_CLS_CGROUP
491                 bool "Control Group Classifier"
492                 default y
493
494         config KERNEL_NETPRIO_CGROUP
495                 bool "Network priority cgroup"
496                 default y
497
498 endif
499
500 #
501 # Namespace support symbols
502 #
503
504 config KERNEL_NAMESPACES
505         bool "Enable kernel namespaces"
506         default n
507
508 if KERNEL_NAMESPACES
509
510         config KERNEL_UTS_NS
511                 bool "UTS namespace"
512                 default y
513                 help
514                   In this namespace, tasks see different info provided
515                   with the uname() system call.
516
517         config KERNEL_IPC_NS
518                 bool "IPC namespace"
519                 default y
520                 help
521                   In this namespace, tasks work with IPC ids which correspond to
522                   different IPC objects in different namespaces.
523
524         config KERNEL_USER_NS
525                 bool "User namespace (EXPERIMENTAL)"
526                 default y
527                 help
528                   This allows containers, i.e. vservers, to use user namespaces
529                   to provide different user info for different servers.
530
531         config KERNEL_PID_NS
532                 bool "PID Namespaces"
533                 default y
534                 help
535                   Support process id namespaces. This allows having multiple
536                   processes with the same pid as long as they are in different
537                   pid namespaces. This is a building block of containers.
538
539         config KERNEL_NET_NS
540                 bool "Network namespace"
541                 default y
542                 help
543                   Allow user space to create what appear to be multiple instances
544                   of the network stack.
545
546 endif
547
548 #
549 # LXC related symbols
550 #
551
552 config KERNEL_LXC_MISC
553         bool "Enable miscellaneous LXC related options"
554         default n
555
556 if KERNEL_LXC_MISC
557
558         config KERNEL_DEVPTS_MULTIPLE_INSTANCES
559                 bool "Support multiple instances of devpts"
560                 default y
561                 help
562                   Enable support for multiple instances of devpts filesystem.
563                   If you want to have isolated PTY namespaces (eg: in containers),
564                   say Y here. Otherwise, say N. If enabled, each mount of devpts
565                   filesystem with the '-o newinstance' option will create an
566                   independent PTY namespace.
567
568         config KERNEL_POSIX_MQUEUE
569                 bool "POSIX Message Queues"
570                 default y
571                 help
572                   POSIX variant of message queues is a part of IPC. In POSIX message
573                   queues every message has a priority which decides about succession
574                   of receiving it by a process. If you want to compile and run
575                   programs written e.g. for Solaris with use of its POSIX message
576                   queues (functions mq_*) say Y here.
577
578                   POSIX message queues are visible as a filesystem called 'mqueue'
579                   and can be mounted somewhere if you want to do filesystem
580                   operations on message queues.
581
582 endif
583
584 config KERNEL_SECCOMP_FILTER
585         bool
586         default n
587
588 config KERNEL_SECCOMP
589         bool "Enable seccomp support"
590                 depends on !(TARGET_uml)
591                 select KERNEL_SECCOMP_FILTER
592                 default n
593                 help
594                   Build kernel with support for seccomp.
595
596 #
597 # IPv6 configuration
598 #
599
600 config KERNEL_IPV6
601         def_bool IPV6
602
603 if KERNEL_IPV6
604
605         config KERNEL_IPV6_MULTIPLE_TABLES
606                 def_bool y
607
608         config KERNEL_IPV6_SUBTREES
609                 def_bool y
610
611         config KERNEL_IPV6_MROUTE
612                 def_bool y
613
614         config KERNEL_IPV6_PIMSM_V2
615                 def_bool n
616
617 endif
618
619 #
620 # NFS related symbols
621 #
622 config KERNEL_IP_PNP
623         bool "Compile the kernel with rootfs on NFS"
624         help
625            If you want to make your kernel boot off a NFS server as root
626            filesystem, select Y here.
627
628 if KERNEL_IP_PNP
629
630         config KERNEL_IP_PNP_DHCP
631                 def_bool y
632
633         config KERNEL_IP_PNP_BOOTP
634                 def_bool n
635
636         config KERNEL_IP_PNP_RARP
637                 def_bool n
638
639         config KERNEL_NFS_FS
640                 def_bool y
641
642         config KERNEL_NFS_V2
643                 def_bool y
644
645         config KERNEL_NFS_V3
646                 def_bool y
647
648         config KERNEL_ROOT_NFS
649                 def_bool y
650
651 endif
652
653 menu "Filesystem ACL and attr support options"
654         config USE_FS_ACL_ATTR
655                 bool "Use filesystem ACL and attr support by default"
656                 default n
657                 help
658                   Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default
659                   for kernel and packages, except tmpfs, flash filesystems,
660                   and old NFS.  Also enable userspace extended attribute support
661                   by default.  (OpenWrt already has an expection it will be
662                   present in the kernel).
663
664         config KERNEL_FS_POSIX_ACL
665                 bool "Enable POSIX ACL support"
666                 default y if USE_FS_ACL_ATTR
667
668         config KERNEL_BTRFS_FS_POSIX_ACL
669                 bool "Enable POSIX ACL for BtrFS Filesystems"
670                 select KERNEL_FS_POSIX_ACL
671                 default y if USE_FS_ACL_ATTR
672
673         config KERNEL_EXT4_FS_POSIX_ACL
674                 bool "Enable POSIX ACL for Ext4 Filesystems"
675                 select KERNEL_FS_POSIX_ACL
676                 default y if USE_FS_ACL_ATTR
677
678         config KERNEL_F2FS_FS_POSIX_ACL
679                 bool "Enable POSIX ACL for F2FS Filesystems"
680                 select KERNEL_FS_POSIX_ACL
681                 default n
682
683         config KERNEL_JFFS2_FS_POSIX_ACL
684                 bool "Enable POSIX ACL for JFFS2 Filesystems"
685                 select KERNEL_FS_POSIX_ACL
686                 default n
687
688         config KERNEL_TMPFS_POSIX_ACL
689                 bool "Enable POSIX ACL for TMPFS Filesystems"
690                 select KERNEL_FS_POSIX_ACL
691                 default n
692
693         config KERNEL_CIFS_ACL
694                 bool "Enable CIFS ACLs"
695                 select KERNEL_FS_POSIX_ACL
696                 default y if USE_FS_ACL_ATTR
697
698         config KERNEL_HFS_FS_POSIX_ACL
699                 bool "Enable POSIX ACL for HFS Filesystems"
700                 select KERNEL_FS_POSIX_ACL
701                 default y if USE_FS_ACL_ATTR
702
703         config KERNEL_HFSPLUG_FS_POSIX_ACL
704                 bool "Enable POSIX ACL for HFS+ Filesystems"
705                 select KERNEL_FS_POSIX_ACL
706                 default y if USE_FS_ACL_ATTR
707
708         config KERNEL_NFS_ACL_SUPPORT
709                 bool "Enable ACLs for NFS"
710                 default y if USE_FS_ACL_ATTR
711
712         config KERNEL_NFS_V3_ACL_SUPPORT
713                 bool "Enable ACLs for NFSv3"
714                 default n
715
716         config KERNEL_NFSD_V2_ACL_SUPPORT
717                 bool "Enable ACLs for NFSDv2"
718                 default n
719
720         config KERNEL_NFSD_V3_ACL_SUPPORT
721                 bool "Enable ACLs for NFSDv3"
722                 default n
723
724         config KERNEL_REISER_FS_POSIX_ACL
725                 bool "Enable POSIX ACLs for ReiserFS"
726                 select KERNEL_FS_POSIX_ACL
727                 default y if USE_FS_ACL_ATTR
728
729         config KERNEL_XFS_POSIX_ACL
730                 bool "Enable POSIX ACLs for XFS"
731                 select KERNEL_FS_POSIX_ACL
732                 default y if USE_FS_ACL_ATTR
733
734         config KERNEL_JFS_POSIX_ACL
735                 bool "Enable POSIX ACLs for JFS"
736                 select KERNEL_FS_POSIX_ACL
737                 default y if USE_FS_ACL_ATTR
738
739 endmenu