1 # Copyright (C) 2006-2014 OpenWrt.org
3 # This is free software, licensed under the GNU General Public License v2.
4 # See /LICENSE for more information.
7 config KERNEL_BUILD_USER
8 string "Custom Kernel Build User Name"
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.
15 config KERNEL_BUILD_DOMAIN
16 string "Custom Kernel Build Domain Name"
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.
24 bool "Enable support for printk"
27 config KERNEL_CRASHLOG
29 depends on !(arm || powerpc || sparc || TARGET_uml || i386 || x86_64)
33 bool "Support for paging of anonymous memory (swap)"
36 config KERNEL_DEBUG_FS
37 bool "Compile the kernel with debug filesystem enabled"
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.
45 config KERNEL_MIPS_FPU_EMULATOR
46 bool "Compile the kernel with MIPS FPU Emulator"
47 default y if TARGET_pistachio
48 depends on (mips || mipsel || mips64 || mips64el)
53 depends on (arm || aarch64)
55 config KERNEL_PERF_EVENTS
56 bool "Compile the kernel with performance events and counters"
58 select KERNEL_ARM_PMU if (arm || aarch64)
60 config KERNEL_PROFILING
61 bool "Compile the kernel with profiling enabled"
63 select KERNEL_PERF_EVENTS
65 Enable the extended profiling support mechanisms used by profilers such
68 config KERNEL_KALLSYMS
69 bool "Compile the kernel with symbol table information"
70 default y if !SMALL_FLASH
72 This will give you more information in stack traces from kernel oopses.
75 bool "Compile the kernel with tracing support"
76 depends on !TARGET_uml
79 config KERNEL_FTRACE_SYSCALLS
80 bool "Trace system calls"
81 depends on KERNEL_FTRACE
84 config KERNEL_ENABLE_DEFAULT_TRACERS
85 bool "Trace process context switches and events"
86 depends on KERNEL_FTRACE
89 config KERNEL_FUNCTION_TRACER
90 bool "Function tracer"
91 depends on KERNEL_FTRACE
94 config KERNEL_FUNCTION_GRAPH_TRACER
95 bool "Function graph tracer"
96 depends on KERNEL_FUNCTION_TRACER
99 config KERNEL_DYNAMIC_FTRACE
100 bool "Enable/disable function tracing dynamically"
101 depends on KERNEL_FUNCTION_TRACER
104 config KERNEL_FUNCTION_PROFILER
105 bool "Function profiler"
106 depends on KERNEL_FUNCTION_TRACER
109 config KERNEL_DEBUG_KERNEL
113 config KERNEL_DEBUG_INFO
114 bool "Compile the kernel with debug information"
116 select KERNEL_DEBUG_KERNEL
118 This will compile your kernel and modules with debug information.
120 config KERNEL_DEBUG_LL_UART_NONE
125 config KERNEL_DEBUG_LL
129 select KERNEL_DEBUG_LL_UART_NONE
131 ARM low level debugging.
133 config KERNEL_DYNAMIC_DEBUG
134 bool "Compile the kernel with dynamic printk"
135 select KERNEL_DEBUG_FS
138 Compiles debug level messages into the kernel, which would not
139 otherwise be available at runtime. These messages can then be
140 enabled/disabled based on various levels of scope - per source file,
141 function, module, format string, and line number. This mechanism
142 implicitly compiles in all pr_debug() and dev_dbg() calls, which
143 enlarges the kernel text size by about 2%.
145 config KERNEL_EARLY_PRINTK
146 bool "Compile the kernel with early printk"
147 default y if TARGET_bcm53xx
150 select KERNEL_DEBUG_KERNEL
151 select KERNEL_DEBUG_LL if arm
153 Compile the kernel with early printk support. This is only useful for
154 debugging purposes to send messages over the serial console in early boot.
155 Enable this to debug early boot problems.
157 config KERNEL_KPROBES
158 bool "Compile the kernel with kprobes support"
161 select KERNEL_PERF_EVENTS
163 Compiles the kernel with KPROBES support, which allows you to trap
164 at almost any kernel address and execute a callback function.
165 register_kprobe() establishes a probepoint and specifies the
166 callback. Kprobes is useful for kernel debugging, non-intrusive
167 instrumentation and testing.
168 If in doubt, say "N".
170 config KERNEL_KPROBE_EVENT
172 default y if KERNEL_KPROBES
175 bool "Compile the kernel with asynchronous IO support"
178 config KERNEL_FHANDLE
179 bool "Compile the kernel with support for fhandle syscalls"
182 config KERNEL_FANOTIFY
183 bool "Compile the kernel with modern file notification support"
186 config KERNEL_BLK_DEV_BSG
187 bool "Compile the kernel with SCSI generic v4 support for any block device"
190 config KERNEL_MAGIC_SYSRQ
191 bool "Compile the kernel with SysRq support"
194 config KERNEL_DEBUG_PINCTRL
195 bool "Compile the kernel with pinctrl debugging"
196 select KERNEL_DEBUG_KERNEL
198 config KERNEL_DEBUG_GPIO
199 bool "Compile the kernel with gpio debugging"
200 select KERNEL_DEBUG_KERNEL
202 config KERNEL_COREDUMP
205 config KERNEL_ELF_CORE
206 bool "Enable process core dump support"
207 select KERNEL_COREDUMP
210 config KERNEL_PROVE_LOCKING
211 bool "Enable kernel lock checking"
212 select KERNEL_DEBUG_KERNEL
215 config KERNEL_PRINTK_TIME
216 bool "Enable printk timestamps"
219 config KERNEL_SLUB_DEBUG
222 config KERNEL_SLUB_DEBUG_ON
225 config KERNEL_SLABINFO
226 select KERNEL_SLUB_DEBUG
227 select KERNEL_SLUB_DEBUG_ON
228 bool "Enable /proc slab debug info"
230 config KERNEL_PROC_PAGE_MONITOR
231 bool "Enable /proc page monitoring"
237 bool "Enable kexec support"
239 config KERNEL_PROC_VMCORE
242 config KERNEL_CRASH_DUMP
243 depends on i386 || x86_64 || arm || armeb
245 select KERNEL_PROC_VMCORE
246 bool "Enable support for kexec crashdump"
250 bool "Enable rfkill support"
251 default RFKILL_SUPPORT
254 bool "Enable sparse check during kernel build"
257 config KERNEL_DEVTMPFS
258 bool "Compile the kernel with device tmpfs enabled"
261 devtmpfs is a simple, kernel-managed /dev filesystem. The kernel creates
262 devices nodes for all registered devices to simplify boot, but leaves more
263 complex tasks to userspace (e.g. udev).
267 config KERNEL_DEVTMPFS_MOUNT
268 bool "Automatically mount devtmpfs after root filesystem is mounted"
274 bool "Enable kernel access key retention support"
277 config KERNEL_PERSISTENT_KEYRINGS
278 bool "Enable kernel persistent keyrings"
279 depends on KERNEL_KEYS
282 config KERNEL_BIG_KEYS
283 bool "Enable large payload keys on kernel keyrings"
284 depends on KERNEL_KEYS
287 config KERNEL_ENCRYPTED_KEYS
288 tristate "Enable keys with encrypted payloads on kernel keyrings"
289 depends on KERNEL_KEYS
293 # CGROUP support symbols
296 config KERNEL_CGROUPS
297 bool "Enable kernel cgroups"
302 config KERNEL_CGROUP_DEBUG
303 bool "Example debug cgroup subsystem"
306 This option enables a simple cgroup subsystem that
307 exports useful debugging information about the cgroups
310 config KERNEL_FREEZER
312 default y if KERNEL_CGROUP_FREEZER
314 config KERNEL_CGROUP_FREEZER
315 bool "Freezer cgroup subsystem"
318 Provides a way to freeze and unfreeze all tasks in a
321 config KERNEL_CGROUP_DEVICE
322 bool "Device controller for cgroups"
325 Provides a cgroup implementing whitelists for devices which
326 a process in the cgroup can mknod or open.
328 config KERNEL_CGROUP_PIDS
329 bool "PIDs cgroup subsystem"
332 Provides enforcement of process number limits in the scope of a
335 config KERNEL_CPUSETS
336 bool "Cpuset support"
339 This option will let you create and manage CPUSETs which
340 allow dynamically partitioning a system into sets of CPUs and
341 Memory Nodes and assigning tasks to run only within those sets.
342 This is primarily useful on large SMP or NUMA systems.
344 config KERNEL_PROC_PID_CPUSET
345 bool "Include legacy /proc/<pid>/cpuset file"
347 depends on KERNEL_CPUSETS
349 config KERNEL_CGROUP_CPUACCT
350 bool "Simple CPU accounting cgroup subsystem"
353 Provides a simple Resource Controller for monitoring the
354 total CPU consumed by the tasks in a cgroup.
356 config KERNEL_RESOURCE_COUNTERS
357 bool "Resource counters"
360 This option enables controller independent resource accounting
361 infrastructure that works with cgroups.
363 config KERNEL_MM_OWNER
365 default y if KERNEL_MEMCG
368 bool "Memory Resource Controller for Control Groups"
370 depends on KERNEL_RESOURCE_COUNTERS || !LINUX_3_18
372 Provides a memory resource controller that manages both anonymous
373 memory and page cache. (See Documentation/cgroups/memory.txt)
375 Note that setting this option increases fixed memory overhead
376 associated with each page of memory in the system. By this,
377 20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
378 usage tracking struct at boot. Total amount of this is printed out
381 Only enable when you're ok with these tradeoffs and really
382 sure you need the memory resource controller. Even when you enable
383 this, you can set "cgroup_disable=memory" at your boot option to
384 disable memory resource controller and you can avoid overheads
385 (but lose benefits of memory resource controller).
387 This config option also selects MM_OWNER config option, which
388 could in turn add some fork/exit overhead.
390 config KERNEL_MEMCG_SWAP
391 bool "Memory Resource Controller Swap Extension"
393 depends on KERNEL_MEMCG
395 Add swap management feature to memory resource controller. When you
396 enable this, you can limit mem+swap usage per cgroup. In other words,
397 when you disable this, memory resource controller has no cares to
398 usage of swap...a process can exhaust all of the swap. This extension
399 is useful when you want to avoid exhaustion swap but this itself
400 adds more overheads and consumes memory for remembering information.
401 Especially if you use 32bit system or small memory system, please
402 be careful about enabling this. When memory resource controller
403 is disabled by boot option, this will be automatically disabled and
404 there will be no overhead from this. Even when you set this config=y,
405 if boot option "swapaccount=0" is set, swap will not be accounted.
406 Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
407 size is 4096bytes, 512k per 1Gbytes of swap.
409 config KERNEL_MEMCG_SWAP_ENABLED
410 bool "Memory Resource Controller Swap Extension enabled by default"
412 depends on KERNEL_MEMCG_SWAP
414 Memory Resource Controller Swap Extension comes with its price in
415 a bigger memory consumption. General purpose distribution kernels
416 which want to enable the feature but keep it disabled by default
417 and let the user enable it by swapaccount boot command line
418 parameter should have this option unselected.
420 Those who want to have the feature enabled by default should
421 select this option (if, for some reason, they need to disable it,
422 then swapaccount=0 does the trick).
425 config KERNEL_MEMCG_KMEM
426 bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
428 depends on KERNEL_MEMCG
430 The Kernel Memory extension for Memory Resource Controller can limit
431 the amount of memory used by kernel objects in the system. Those are
432 fundamentally different from the entities handled by the standard
433 Memory Controller, which are page-based, and can be swapped. Users of
434 the kmem extension can use it to guarantee that no group of processes
435 will ever exhaust kernel resources alone.
437 config KERNEL_CGROUP_PERF
438 bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
439 select KERNEL_PERF_EVENTS
442 This option extends the per-cpu mode to restrict monitoring to
443 threads which belong to the cgroup specified and run on the
446 menuconfig KERNEL_CGROUP_SCHED
447 bool "Group CPU scheduler"
450 This feature lets CPU scheduler recognize task groups and control CPU
451 bandwidth allocation to such task groups. It uses cgroups to group
454 if KERNEL_CGROUP_SCHED
456 config KERNEL_FAIR_GROUP_SCHED
457 bool "Group scheduling for SCHED_OTHER"
460 config KERNEL_CFS_BANDWIDTH
461 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
463 depends on KERNEL_FAIR_GROUP_SCHED
465 This option allows users to define CPU bandwidth rates (limits) for
466 tasks running within the fair group scheduler. Groups with no limit
467 set are considered to be unconstrained and will run with no
469 See tip/Documentation/scheduler/sched-bwc.txt for more information.
471 config KERNEL_RT_GROUP_SCHED
472 bool "Group scheduling for SCHED_RR/FIFO"
475 This feature lets you explicitly allocate real CPU bandwidth
476 to task groups. If enabled, it will also make it impossible to
477 schedule realtime tasks for non-root users until you allocate
478 realtime bandwidth for them.
482 config KERNEL_BLK_CGROUP
483 bool "Block IO controller"
486 Generic block IO controller cgroup interface. This is the common
487 cgroup interface which should be used by various IO controlling
490 Currently, CFQ IO scheduler uses it to recognize task groups and
491 control disk bandwidth allocation (proportional time slice allocation)
492 to such task groups. It is also used by bio throttling logic in
493 block layer to implement upper limit in IO rates on a device.
495 This option only enables generic Block IO controller infrastructure.
496 One needs to also enable actual IO controlling logic/policy. For
497 enabling proportional weight division of disk bandwidth in CFQ, set
498 CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
499 CONFIG_BLK_DEV_THROTTLING=y.
501 config KERNEL_DEBUG_BLK_CGROUP
502 bool "Enable Block IO controller debugging"
504 depends on KERNEL_BLK_CGROUP
506 Enable some debugging help. Currently it exports additional stat
507 files in a cgroup which can be useful for debugging.
509 config KERNEL_NET_CLS_CGROUP
510 bool "Control Group Classifier"
513 config KERNEL_NETPRIO_CGROUP
514 bool "Network priority cgroup"
520 # Namespace support symbols
523 config KERNEL_NAMESPACES
524 bool "Enable kernel namespaces"
533 In this namespace, tasks see different info provided
534 with the uname() system call.
540 In this namespace, tasks work with IPC ids which correspond to
541 different IPC objects in different namespaces.
543 config KERNEL_USER_NS
544 bool "User namespace (EXPERIMENTAL)"
547 This allows containers, i.e. vservers, to use user namespaces
548 to provide different user info for different servers.
551 bool "PID Namespaces"
554 Support process id namespaces. This allows having multiple
555 processes with the same pid as long as they are in different
556 pid namespaces. This is a building block of containers.
559 bool "Network namespace"
562 Allow user space to create what appear to be multiple instances
563 of the network stack.
568 # LXC related symbols
571 config KERNEL_LXC_MISC
572 bool "Enable miscellaneous LXC related options"
577 config KERNEL_DEVPTS_MULTIPLE_INSTANCES
578 bool "Support multiple instances of devpts"
581 Enable support for multiple instances of devpts filesystem.
582 If you want to have isolated PTY namespaces (eg: in containers),
583 say Y here. Otherwise, say N. If enabled, each mount of devpts
584 filesystem with the '-o newinstance' option will create an
585 independent PTY namespace.
587 config KERNEL_POSIX_MQUEUE
588 bool "POSIX Message Queues"
591 POSIX variant of message queues is a part of IPC. In POSIX message
592 queues every message has a priority which decides about succession
593 of receiving it by a process. If you want to compile and run
594 programs written e.g. for Solaris with use of its POSIX message
595 queues (functions mq_*) say Y here.
597 POSIX message queues are visible as a filesystem called 'mqueue'
598 and can be mounted somewhere if you want to do filesystem
599 operations on message queues.
603 config KERNEL_SECCOMP_FILTER
607 config KERNEL_SECCOMP
608 bool "Enable seccomp support"
609 depends on !(TARGET_uml)
610 select KERNEL_SECCOMP_FILTER
613 Build kernel with support for seccomp.
619 config KERNEL_IP_MROUTE
620 bool "Enable IPv4 multicast routing"
623 Multicast routing requires a multicast routing daemon in
624 addition to kernel support.
635 config KERNEL_IPV6_MULTIPLE_TABLES
638 config KERNEL_IPV6_SUBTREES
641 config KERNEL_IPV6_MROUTE
642 bool "Enable IPv6 multicast routing"
645 Multicast routing requires a multicast routing daemon in
646 addition to kernel support.
648 config KERNEL_IPV6_PIMSM_V2
654 # NFS related symbols
657 bool "Compile the kernel with rootfs on NFS"
659 If you want to make your kernel boot off a NFS server as root
660 filesystem, select Y here.
664 config KERNEL_IP_PNP_DHCP
667 config KERNEL_IP_PNP_BOOTP
670 config KERNEL_IP_PNP_RARP
682 config KERNEL_ROOT_NFS
687 menu "Filesystem ACL and attr support options"
688 config USE_FS_ACL_ATTR
689 bool "Use filesystem ACL and attr support by default"
692 Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default
693 for kernel and packages, except tmpfs, flash filesystems,
694 and old NFS. Also enable userspace extended attribute support
695 by default. (OpenWrt already has an expection it will be
696 present in the kernel).
698 config KERNEL_FS_POSIX_ACL
699 bool "Enable POSIX ACL support"
700 default y if USE_FS_ACL_ATTR
702 config KERNEL_BTRFS_FS_POSIX_ACL
703 bool "Enable POSIX ACL for BtrFS Filesystems"
704 select KERNEL_FS_POSIX_ACL
705 default y if USE_FS_ACL_ATTR
707 config KERNEL_EXT4_FS_POSIX_ACL
708 bool "Enable POSIX ACL for Ext4 Filesystems"
709 select KERNEL_FS_POSIX_ACL
710 default y if USE_FS_ACL_ATTR
712 config KERNEL_F2FS_FS_POSIX_ACL
713 bool "Enable POSIX ACL for F2FS Filesystems"
714 select KERNEL_FS_POSIX_ACL
717 config KERNEL_JFFS2_FS_POSIX_ACL
718 bool "Enable POSIX ACL for JFFS2 Filesystems"
719 select KERNEL_FS_POSIX_ACL
722 config KERNEL_TMPFS_POSIX_ACL
723 bool "Enable POSIX ACL for TMPFS Filesystems"
724 select KERNEL_FS_POSIX_ACL
727 config KERNEL_CIFS_ACL
728 bool "Enable CIFS ACLs"
729 select KERNEL_FS_POSIX_ACL
730 default y if USE_FS_ACL_ATTR
732 config KERNEL_HFS_FS_POSIX_ACL
733 bool "Enable POSIX ACL for HFS Filesystems"
734 select KERNEL_FS_POSIX_ACL
735 default y if USE_FS_ACL_ATTR
737 config KERNEL_HFSPLUG_FS_POSIX_ACL
738 bool "Enable POSIX ACL for HFS+ Filesystems"
739 select KERNEL_FS_POSIX_ACL
740 default y if USE_FS_ACL_ATTR
742 config KERNEL_NFS_ACL_SUPPORT
743 bool "Enable ACLs for NFS"
744 default y if USE_FS_ACL_ATTR
746 config KERNEL_NFS_V3_ACL_SUPPORT
747 bool "Enable ACLs for NFSv3"
750 config KERNEL_NFSD_V2_ACL_SUPPORT
751 bool "Enable ACLs for NFSDv2"
754 config KERNEL_NFSD_V3_ACL_SUPPORT
755 bool "Enable ACLs for NFSDv3"
758 config KERNEL_REISER_FS_POSIX_ACL
759 bool "Enable POSIX ACLs for ReiserFS"
760 select KERNEL_FS_POSIX_ACL
761 default y if USE_FS_ACL_ATTR
763 config KERNEL_XFS_POSIX_ACL
764 bool "Enable POSIX ACLs for XFS"
765 select KERNEL_FS_POSIX_ACL
766 default y if USE_FS_ACL_ATTR
768 config KERNEL_JFS_POSIX_ACL
769 bool "Enable POSIX ACLs for JFS"
770 select KERNEL_FS_POSIX_ACL
771 default y if USE_FS_ACL_ATTR
776 bool "/dev/mem virtual device support"
778 Say Y here if you want to support the /dev/mem device.
779 The /dev/mem device is used to access areas of physical
782 config KERNEL_DEVKMEM
783 bool "/dev/kmem virtual device support"
785 Say Y here if you want to support the /dev/kmem device. The
786 /dev/kmem device is rarely used, but can be used for certain
787 kind of kernel debugging operations.