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"
9 default "builder" if BUILDBOT
12 Sets the Kernel build user string, which for example will be returned
13 by 'uname -a' on running systems.
14 If not set, uses system user at build time.
16 config KERNEL_BUILD_DOMAIN
17 string "Custom Kernel Build Domain Name"
18 default "buildhost" if BUILDBOT
21 Sets the Kernel build domain string, which for example will be
22 returned by 'uname -a' on running systems.
23 If not set, uses system hostname at build time.
26 bool "Enable support for printk"
29 config KERNEL_CRASHLOG
31 depends on !(arm || powerpc || sparc || TARGET_uml || i386 || x86_64)
35 bool "Support for paging of anonymous memory (swap)"
36 default y if !SMALL_FLASH
38 config KERNEL_DEBUG_FS
39 bool "Compile the kernel with debug filesystem enabled"
42 debugfs is a virtual file system that kernel developers use to put
43 debugging files into. Enable this option to be able to read and
44 write to these files. Many common debugging facilities, such as
45 ftrace, require the existence of debugfs.
47 config KERNEL_MIPS_FPU_EMULATOR
48 bool "Compile the kernel with MIPS FPU Emulator"
49 default y if TARGET_pistachio
50 depends on (mips || mipsel || mips64 || mips64el)
55 depends on (arm || aarch64)
57 config KERNEL_PERF_EVENTS
58 bool "Compile the kernel with performance events and counters"
60 select KERNEL_ARM_PMU if (arm || aarch64)
62 config KERNEL_PROFILING
63 bool "Compile the kernel with profiling enabled"
65 select KERNEL_PERF_EVENTS
67 Enable the extended profiling support mechanisms used by profilers such
70 config KERNEL_TASKSTATS
71 bool "Compile the kernel with task resource/io statistics and accounting"
74 Enable the collection and publishing of task/io statistics and
75 accounting. Enable this option to enable i/o monitoring in system
80 config KERNEL_TASK_DELAY_ACCT
83 config KERNEL_TASK_IO_ACCOUNTING
86 config KERNEL_TASK_XACCT
91 config KERNEL_KALLSYMS
92 bool "Compile the kernel with symbol table information"
93 default y if !SMALL_FLASH
95 This will give you more information in stack traces from kernel oopses.
98 bool "Compile the kernel with tracing support"
99 depends on !TARGET_uml
102 config KERNEL_FTRACE_SYSCALLS
103 bool "Trace system calls"
104 depends on KERNEL_FTRACE
107 config KERNEL_ENABLE_DEFAULT_TRACERS
108 bool "Trace process context switches and events"
109 depends on KERNEL_FTRACE
112 config KERNEL_FUNCTION_TRACER
113 bool "Function tracer"
114 depends on KERNEL_FTRACE
117 config KERNEL_FUNCTION_GRAPH_TRACER
118 bool "Function graph tracer"
119 depends on KERNEL_FUNCTION_TRACER
122 config KERNEL_DYNAMIC_FTRACE
123 bool "Enable/disable function tracing dynamically"
124 depends on KERNEL_FUNCTION_TRACER
127 config KERNEL_FUNCTION_PROFILER
128 bool "Function profiler"
129 depends on KERNEL_FUNCTION_TRACER
132 config KERNEL_DEBUG_KERNEL
136 config KERNEL_DEBUG_INFO
137 bool "Compile the kernel with debug information"
138 default y if !SMALL_FLASH
139 select KERNEL_DEBUG_KERNEL
141 This will compile your kernel and modules with debug information.
143 config KERNEL_DEBUG_LL_UART_NONE
148 config KERNEL_DEBUG_LL
152 select KERNEL_DEBUG_LL_UART_NONE
154 ARM low level debugging.
156 config KERNEL_DYNAMIC_DEBUG
157 bool "Compile the kernel with dynamic printk"
158 select KERNEL_DEBUG_FS
161 Compiles debug level messages into the kernel, which would not
162 otherwise be available at runtime. These messages can then be
163 enabled/disabled based on various levels of scope - per source file,
164 function, module, format string, and line number. This mechanism
165 implicitly compiles in all pr_debug() and dev_dbg() calls, which
166 enlarges the kernel text size by about 2%.
168 config KERNEL_EARLY_PRINTK
169 bool "Compile the kernel with early printk"
170 default y if TARGET_bcm53xx
173 select KERNEL_DEBUG_KERNEL
174 select KERNEL_DEBUG_LL if arm
176 Compile the kernel with early printk support. This is only useful for
177 debugging purposes to send messages over the serial console in early boot.
178 Enable this to debug early boot problems.
180 config KERNEL_KPROBES
181 bool "Compile the kernel with kprobes support"
184 select KERNEL_PERF_EVENTS
186 Compiles the kernel with KPROBES support, which allows you to trap
187 at almost any kernel address and execute a callback function.
188 register_kprobe() establishes a probepoint and specifies the
189 callback. Kprobes is useful for kernel debugging, non-intrusive
190 instrumentation and testing.
191 If in doubt, say "N".
193 config KERNEL_KPROBE_EVENT
195 default y if KERNEL_KPROBES
197 config KERNEL_KPROBE_EVENTS
199 default y if KERNEL_KPROBES
202 bool "Compile the kernel with asynchronous IO support"
203 default y if !SMALL_FLASH
205 config KERNEL_FHANDLE
206 bool "Compile the kernel with support for fhandle syscalls"
207 default y if !SMALL_FLASH
209 config KERNEL_FANOTIFY
210 bool "Compile the kernel with modern file notification support"
211 default y if !SMALL_FLASH
213 config KERNEL_BLK_DEV_BSG
214 bool "Compile the kernel with SCSI generic v4 support for any block device"
217 config KERNEL_MAGIC_SYSRQ
218 bool "Compile the kernel with SysRq support"
221 config KERNEL_DEBUG_PINCTRL
222 bool "Compile the kernel with pinctrl debugging"
223 select KERNEL_DEBUG_KERNEL
225 config KERNEL_DEBUG_GPIO
226 bool "Compile the kernel with gpio debugging"
227 select KERNEL_DEBUG_KERNEL
229 config KERNEL_COREDUMP
232 config KERNEL_ELF_CORE
233 bool "Enable process core dump support"
234 select KERNEL_COREDUMP
235 default y if !SMALL_FLASH
237 config KERNEL_PROVE_LOCKING
238 bool "Enable kernel lock checking"
239 select KERNEL_DEBUG_KERNEL
242 config KERNEL_PRINTK_TIME
243 bool "Enable printk timestamps"
246 config KERNEL_SLUB_DEBUG
249 config KERNEL_SLUB_DEBUG_ON
252 config KERNEL_SLABINFO
253 select KERNEL_SLUB_DEBUG
254 select KERNEL_SLUB_DEBUG_ON
255 bool "Enable /proc slab debug info"
257 config KERNEL_PROC_PAGE_MONITOR
258 bool "Enable /proc page monitoring"
264 bool "Enable kexec support"
266 config KERNEL_PROC_VMCORE
269 config KERNEL_CRASH_DUMP
270 depends on i386 || x86_64 || arm || armeb
272 select KERNEL_PROC_VMCORE
273 bool "Enable support for kexec crashdump"
277 bool "Enable rfkill support"
278 default RFKILL_SUPPORT
281 bool "Enable sparse check during kernel build"
284 config KERNEL_DEVTMPFS
285 bool "Compile the kernel with device tmpfs enabled"
288 devtmpfs is a simple, kernel-managed /dev filesystem. The kernel creates
289 devices nodes for all registered devices to simplify boot, but leaves more
290 complex tasks to userspace (e.g. udev).
294 config KERNEL_DEVTMPFS_MOUNT
295 bool "Automatically mount devtmpfs after root filesystem is mounted"
301 bool "Enable kernel access key retention support"
304 config KERNEL_PERSISTENT_KEYRINGS
305 bool "Enable kernel persistent keyrings"
306 depends on KERNEL_KEYS
309 config KERNEL_BIG_KEYS
310 bool "Enable large payload keys on kernel keyrings"
311 depends on KERNEL_KEYS
314 config KERNEL_ENCRYPTED_KEYS
315 tristate "Enable keys with encrypted payloads on kernel keyrings"
316 depends on KERNEL_KEYS
320 # CGROUP support symbols
323 config KERNEL_CGROUPS
324 bool "Enable kernel cgroups"
325 default y if !SMALL_FLASH
329 config KERNEL_CGROUP_DEBUG
330 bool "Example debug cgroup subsystem"
333 This option enables a simple cgroup subsystem that
334 exports useful debugging information about the cgroups
337 config KERNEL_FREEZER
339 default y if KERNEL_CGROUP_FREEZER
341 config KERNEL_CGROUP_FREEZER
342 bool "Freezer cgroup subsystem"
345 Provides a way to freeze and unfreeze all tasks in a
348 config KERNEL_CGROUP_DEVICE
349 bool "Device controller for cgroups"
352 Provides a cgroup implementing whitelists for devices which
353 a process in the cgroup can mknod or open.
355 config KERNEL_CGROUP_PIDS
356 bool "PIDs cgroup subsystem"
359 Provides enforcement of process number limits in the scope of a
362 config KERNEL_CPUSETS
363 bool "Cpuset support"
364 default y if !SMALL_FLASH
366 This option will let you create and manage CPUSETs which
367 allow dynamically partitioning a system into sets of CPUs and
368 Memory Nodes and assigning tasks to run only within those sets.
369 This is primarily useful on large SMP or NUMA systems.
371 config KERNEL_PROC_PID_CPUSET
372 bool "Include legacy /proc/<pid>/cpuset file"
374 depends on KERNEL_CPUSETS
376 config KERNEL_CGROUP_CPUACCT
377 bool "Simple CPU accounting cgroup subsystem"
378 default y if !SMALL_FLASH
380 Provides a simple Resource Controller for monitoring the
381 total CPU consumed by the tasks in a cgroup.
383 config KERNEL_RESOURCE_COUNTERS
384 bool "Resource counters"
385 default y if !SMALL_FLASH
387 This option enables controller independent resource accounting
388 infrastructure that works with cgroups.
390 config KERNEL_MM_OWNER
392 default y if KERNEL_MEMCG
395 bool "Memory Resource Controller for Control Groups"
396 default y if !SMALL_FLASH
397 depends on KERNEL_RESOURCE_COUNTERS || !LINUX_3_18
399 Provides a memory resource controller that manages both anonymous
400 memory and page cache. (See Documentation/cgroups/memory.txt)
402 Note that setting this option increases fixed memory overhead
403 associated with each page of memory in the system. By this,
404 20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
405 usage tracking struct at boot. Total amount of this is printed out
408 Only enable when you're ok with these tradeoffs and really
409 sure you need the memory resource controller. Even when you enable
410 this, you can set "cgroup_disable=memory" at your boot option to
411 disable memory resource controller and you can avoid overheads
412 (but lose benefits of memory resource controller).
414 This config option also selects MM_OWNER config option, which
415 could in turn add some fork/exit overhead.
417 config KERNEL_MEMCG_SWAP
418 bool "Memory Resource Controller Swap Extension"
420 depends on KERNEL_MEMCG
422 Add swap management feature to memory resource controller. When you
423 enable this, you can limit mem+swap usage per cgroup. In other words,
424 when you disable this, memory resource controller has no cares to
425 usage of swap...a process can exhaust all of the swap. This extension
426 is useful when you want to avoid exhaustion swap but this itself
427 adds more overheads and consumes memory for remembering information.
428 Especially if you use 32bit system or small memory system, please
429 be careful about enabling this. When memory resource controller
430 is disabled by boot option, this will be automatically disabled and
431 there will be no overhead from this. Even when you set this config=y,
432 if boot option "swapaccount=0" is set, swap will not be accounted.
433 Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
434 size is 4096bytes, 512k per 1Gbytes of swap.
436 config KERNEL_MEMCG_SWAP_ENABLED
437 bool "Memory Resource Controller Swap Extension enabled by default"
439 depends on KERNEL_MEMCG_SWAP
441 Memory Resource Controller Swap Extension comes with its price in
442 a bigger memory consumption. General purpose distribution kernels
443 which want to enable the feature but keep it disabled by default
444 and let the user enable it by swapaccount boot command line
445 parameter should have this option unselected.
447 Those who want to have the feature enabled by default should
448 select this option (if, for some reason, they need to disable it,
449 then swapaccount=0 does the trick).
452 config KERNEL_MEMCG_KMEM
453 bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
454 default y if !SMALL_FLASH
455 depends on KERNEL_MEMCG
457 The Kernel Memory extension for Memory Resource Controller can limit
458 the amount of memory used by kernel objects in the system. Those are
459 fundamentally different from the entities handled by the standard
460 Memory Controller, which are page-based, and can be swapped. Users of
461 the kmem extension can use it to guarantee that no group of processes
462 will ever exhaust kernel resources alone.
464 config KERNEL_CGROUP_PERF
465 bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
466 select KERNEL_PERF_EVENTS
469 This option extends the per-cpu mode to restrict monitoring to
470 threads which belong to the cgroup specified and run on the
473 menuconfig KERNEL_CGROUP_SCHED
474 bool "Group CPU scheduler"
475 default y if !SMALL_FLASH
477 This feature lets CPU scheduler recognize task groups and control CPU
478 bandwidth allocation to such task groups. It uses cgroups to group
481 if KERNEL_CGROUP_SCHED
483 config KERNEL_FAIR_GROUP_SCHED
484 bool "Group scheduling for SCHED_OTHER"
485 default y if !SMALL_FLASH
487 config KERNEL_CFS_BANDWIDTH
488 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
490 depends on KERNEL_FAIR_GROUP_SCHED
492 This option allows users to define CPU bandwidth rates (limits) for
493 tasks running within the fair group scheduler. Groups with no limit
494 set are considered to be unconstrained and will run with no
496 See tip/Documentation/scheduler/sched-bwc.txt for more information.
498 config KERNEL_RT_GROUP_SCHED
499 bool "Group scheduling for SCHED_RR/FIFO"
500 default y if !SMALL_FLASH
502 This feature lets you explicitly allocate real CPU bandwidth
503 to task groups. If enabled, it will also make it impossible to
504 schedule realtime tasks for non-root users until you allocate
505 realtime bandwidth for them.
509 config KERNEL_BLK_CGROUP
510 bool "Block IO controller"
513 Generic block IO controller cgroup interface. This is the common
514 cgroup interface which should be used by various IO controlling
517 Currently, CFQ IO scheduler uses it to recognize task groups and
518 control disk bandwidth allocation (proportional time slice allocation)
519 to such task groups. It is also used by bio throttling logic in
520 block layer to implement upper limit in IO rates on a device.
522 This option only enables generic Block IO controller infrastructure.
523 One needs to also enable actual IO controlling logic/policy. For
524 enabling proportional weight division of disk bandwidth in CFQ, set
525 CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
526 CONFIG_BLK_DEV_THROTTLING=y.
530 config KERNEL_CFQ_GROUP_IOSCHED
531 bool "Proportional weight of disk bandwidth in CFQ"
533 config KERNEL_BLK_DEV_THROTTLING
534 bool "Enable throttling policy"
535 default y if TARGET_brcm2708
537 config KERNEL_BLK_DEV_THROTTLING_LOW
538 bool "Block throttling .low limit interface support (EXPERIMENTAL)"
539 depends on KERNEL_BLK_DEV_THROTTLING
542 config KERNEL_DEBUG_BLK_CGROUP
543 bool "Enable Block IO controller debugging"
545 depends on KERNEL_BLK_CGROUP
547 Enable some debugging help. Currently it exports additional stat
548 files in a cgroup which can be useful for debugging.
550 config KERNEL_NET_CLS_CGROUP
551 bool "Control Group Classifier"
554 config KERNEL_NETPRIO_CGROUP
555 bool "Network priority cgroup"
561 # Namespace support symbols
564 config KERNEL_NAMESPACES
565 bool "Enable kernel namespaces"
566 default y if !SMALL_FLASH
574 In this namespace, tasks see different info provided
575 with the uname() system call.
581 In this namespace, tasks work with IPC ids which correspond to
582 different IPC objects in different namespaces.
584 config KERNEL_USER_NS
585 bool "User namespace (EXPERIMENTAL)"
588 This allows containers, i.e. vservers, to use user namespaces
589 to provide different user info for different servers.
592 bool "PID Namespaces"
595 Support process id namespaces. This allows having multiple
596 processes with the same pid as long as they are in different
597 pid namespaces. This is a building block of containers.
600 bool "Network namespace"
603 Allow user space to create what appear to be multiple instances
604 of the network stack.
609 # LXC related symbols
612 config KERNEL_LXC_MISC
613 bool "Enable miscellaneous LXC related options"
614 default y if !SMALL_FLASH
618 config KERNEL_DEVPTS_MULTIPLE_INSTANCES
619 bool "Support multiple instances of devpts"
622 Enable support for multiple instances of devpts filesystem.
623 If you want to have isolated PTY namespaces (eg: in containers),
624 say Y here. Otherwise, say N. If enabled, each mount of devpts
625 filesystem with the '-o newinstance' option will create an
626 independent PTY namespace.
628 config KERNEL_POSIX_MQUEUE
629 bool "POSIX Message Queues"
632 POSIX variant of message queues is a part of IPC. In POSIX message
633 queues every message has a priority which decides about succession
634 of receiving it by a process. If you want to compile and run
635 programs written e.g. for Solaris with use of its POSIX message
636 queues (functions mq_*) say Y here.
638 POSIX message queues are visible as a filesystem called 'mqueue'
639 and can be mounted somewhere if you want to do filesystem
640 operations on message queues.
644 config KERNEL_SECCOMP_FILTER
646 default y if !SMALL_FLASH
648 config KERNEL_SECCOMP
649 bool "Enable seccomp support"
650 depends on !(TARGET_uml)
651 select KERNEL_SECCOMP_FILTER
652 default y if !SMALL_FLASH
654 Build kernel with support for seccomp.
660 config KERNEL_IP_MROUTE
661 bool "Enable IPv4 multicast routing"
664 Multicast routing requires a multicast routing daemon in
665 addition to kernel support.
676 config KERNEL_IPV6_MULTIPLE_TABLES
679 config KERNEL_IPV6_SUBTREES
682 config KERNEL_IPV6_MROUTE
683 bool "Enable IPv6 multicast routing"
686 Multicast routing requires a multicast routing daemon in
687 addition to kernel support.
689 config KERNEL_IPV6_PIMSM_V2
695 # NFS related symbols
698 bool "Compile the kernel with rootfs on NFS"
700 If you want to make your kernel boot off a NFS server as root
701 filesystem, select Y here.
705 config KERNEL_IP_PNP_DHCP
708 config KERNEL_IP_PNP_BOOTP
711 config KERNEL_IP_PNP_RARP
723 config KERNEL_ROOT_NFS
728 menu "Filesystem ACL and attr support options"
729 config USE_FS_ACL_ATTR
730 bool "Use filesystem ACL and attr support by default"
733 Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default
734 for kernel and packages, except tmpfs, flash filesystems,
735 and old NFS. Also enable userspace extended attribute support
736 by default. (OpenWrt already has an expection it will be
737 present in the kernel).
739 config KERNEL_FS_POSIX_ACL
740 bool "Enable POSIX ACL support"
741 default y if USE_FS_ACL_ATTR
743 config KERNEL_BTRFS_FS_POSIX_ACL
744 bool "Enable POSIX ACL for BtrFS Filesystems"
745 select KERNEL_FS_POSIX_ACL
746 default y if USE_FS_ACL_ATTR
748 config KERNEL_EXT4_FS_POSIX_ACL
749 bool "Enable POSIX ACL for Ext4 Filesystems"
750 select KERNEL_FS_POSIX_ACL
751 default y if USE_FS_ACL_ATTR
753 config KERNEL_F2FS_FS_POSIX_ACL
754 bool "Enable POSIX ACL for F2FS Filesystems"
755 select KERNEL_FS_POSIX_ACL
758 config KERNEL_JFFS2_FS_POSIX_ACL
759 bool "Enable POSIX ACL for JFFS2 Filesystems"
760 select KERNEL_FS_POSIX_ACL
763 config KERNEL_TMPFS_POSIX_ACL
764 bool "Enable POSIX ACL for TMPFS Filesystems"
765 select KERNEL_FS_POSIX_ACL
768 config KERNEL_CIFS_ACL
769 bool "Enable CIFS ACLs"
770 select KERNEL_FS_POSIX_ACL
771 default y if USE_FS_ACL_ATTR
773 config KERNEL_HFS_FS_POSIX_ACL
774 bool "Enable POSIX ACL for HFS Filesystems"
775 select KERNEL_FS_POSIX_ACL
776 default y if USE_FS_ACL_ATTR
778 config KERNEL_HFSPLUG_FS_POSIX_ACL
779 bool "Enable POSIX ACL for HFS+ Filesystems"
780 select KERNEL_FS_POSIX_ACL
781 default y if USE_FS_ACL_ATTR
783 config KERNEL_NFS_ACL_SUPPORT
784 bool "Enable ACLs for NFS"
785 default y if USE_FS_ACL_ATTR
787 config KERNEL_NFS_V3_ACL_SUPPORT
788 bool "Enable ACLs for NFSv3"
791 config KERNEL_NFSD_V2_ACL_SUPPORT
792 bool "Enable ACLs for NFSDv2"
795 config KERNEL_NFSD_V3_ACL_SUPPORT
796 bool "Enable ACLs for NFSDv3"
799 config KERNEL_REISER_FS_POSIX_ACL
800 bool "Enable POSIX ACLs for ReiserFS"
801 select KERNEL_FS_POSIX_ACL
802 default y if USE_FS_ACL_ATTR
804 config KERNEL_XFS_POSIX_ACL
805 bool "Enable POSIX ACLs for XFS"
806 select KERNEL_FS_POSIX_ACL
807 default y if USE_FS_ACL_ATTR
809 config KERNEL_JFS_POSIX_ACL
810 bool "Enable POSIX ACLs for JFS"
811 select KERNEL_FS_POSIX_ACL
812 default y if USE_FS_ACL_ATTR
817 bool "/dev/mem virtual device support"
819 Say Y here if you want to support the /dev/mem device.
820 The /dev/mem device is used to access areas of physical
823 config KERNEL_DEVKMEM
824 bool "/dev/kmem virtual device support"
826 Say Y here if you want to support the /dev/kmem device. The
827 /dev/kmem device is rarely used, but can be used for certain
828 kind of kernel debugging operations.
830 config KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE
831 int "Number of squashfs fragments cached"
832 default 2 if (SMALL_FLASH && !LOW_MEMORY_FOOTPRINT)
836 # compile optimiziation setting
839 prompt "Compiler optimization level"
840 default KERNEL_CC_OPTIMIZE_FOR_SIZE if SMALL_FLASH
842 config KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE
843 bool "Optimize for performance"
845 This is the default optimization level for the kernel, building
846 with the "-O2" compiler flag for best performance and most
847 helpful compile-time warnings.
849 config KERNEL_CC_OPTIMIZE_FOR_SIZE
850 bool "Optimize for size"
852 Enabling this option will pass "-Os" instead of "-O2" to
853 your compiler resulting in a smaller kernel.