build: Add option KERNEL_KASAN
[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 "builder" if BUILDBOT
10         default ""
11         help
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.
15
16 config KERNEL_BUILD_DOMAIN
17         string "Custom Kernel Build Domain Name"
18         default "buildhost" if BUILDBOT
19         default ""
20         help
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.
24
25 config KERNEL_PRINTK
26         bool "Enable support for printk"
27         default y
28
29 config KERNEL_CRASHLOG
30         bool "Crash logging"
31         depends on !(arm || powerpc || sparc || TARGET_uml || i386 || x86_64)
32         default y
33
34 config KERNEL_SWAP
35         bool "Support for paging of anonymous memory (swap)"
36         default y if !SMALL_FLASH
37
38 config KERNEL_DEBUG_FS
39         bool "Compile the kernel with debug filesystem enabled"
40         default y
41         help
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.
46
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)
51
52 config KERNEL_ARM_PMU
53         bool
54         default n
55         depends on (arm || aarch64)
56
57 config KERNEL_X86_VSYSCALL_EMULATION
58         bool "Enable vsyscall emulation"
59         default n
60         depends on x86_64
61         help
62           This enables emulation of the legacy vsyscall page.  Disabling
63           it is roughly equivalent to booting with vsyscall=none, except
64           that it will also disable the helpful warning if a program
65           tries to use a vsyscall.  With this option set to N, offending
66           programs will just segfault, citing addresses of the form
67           0xffffffffff600?00.
68
69           This option is required by many programs built before 2013, and
70           care should be used even with newer programs if set to N.
71
72           Disabling this option saves about 7K of kernel size and
73           possibly 4K of additional runtime pagetable memory.
74
75 config KERNEL_PERF_EVENTS
76         bool "Compile the kernel with performance events and counters"
77         default n
78         select KERNEL_ARM_PMU if (arm || aarch64)
79
80 config KERNEL_PROFILING
81         bool "Compile the kernel with profiling enabled"
82         default n
83         select KERNEL_PERF_EVENTS
84         help
85           Enable the extended profiling support mechanisms used by profilers such
86           as OProfile.
87
88 config KERNEL_UBSAN
89         bool "Compile the kernel with undefined behaviour sanity checker"
90         help
91           This option enables undefined behaviour sanity checker
92           Compile-time instrumentation is used to detect various undefined
93           behaviours in runtime. Various types of checks may be enabled
94           via boot parameter ubsan_handle
95           (see: Documentation/dev-tools/ubsan.rst).
96
97 config KERNEL_UBSAN_SANITIZE_ALL
98         bool "Enable instrumentation for the entire kernel"
99         depends on KERNEL_UBSAN
100         default y
101         help
102           This option activates instrumentation for the entire kernel.
103           If you don't enable this option, you have to explicitly specify
104           UBSAN_SANITIZE := y for the files/directories you want to check for UB.
105           Enabling this option will get kernel image size increased
106           significantly.
107
108 config KERNEL_UBSAN_ALIGNMENT
109         bool "Enable checking of pointers alignment"
110         depends on KERNEL_UBSAN
111         help
112           This option enables detection of unaligned memory accesses.
113           Enabling this option on architectures that support unaligned
114           accesses may produce a lot of false positives.
115
116 config KERNEL_UBSAN_NULL
117         bool "Enable checking of null pointers"
118         depends on KERNEL_UBSAN
119         help
120           This option enables detection of memory accesses via a
121           null pointer.
122
123 config KERNEL_KASAN
124         bool "Compile the kernel with KASan: runtime memory debugger"
125         select KERNEL_SLUB_DEBUG
126         depends on (x86_64 || aarch64)
127         help
128           Enables kernel address sanitizer - runtime memory debugger,
129           designed to find out-of-bounds accesses and use-after-free bugs.
130           This is strictly a debugging feature and it requires a gcc version
131           of 4.9.2 or later. Detection of out of bounds accesses to stack or
132           global variables requires gcc 5.0 or later.
133           This feature consumes about 1/8 of available memory and brings about
134           ~x3 performance slowdown.
135           For better error detection enable CONFIG_STACKTRACE.
136           Currently CONFIG_KASAN doesn't work with CONFIG_DEBUG_SLAB
137           (the resulting kernel does not boot).
138
139 config KERNEL_KASAN_EXTRA
140         bool "KAsan: extra checks"
141         depends on KERNEL_KASAN && KERNEL_DEBUG_KERNEL
142         help
143           This enables further checks in the kernel address sanitizer, for now
144           it only includes the address-use-after-scope check that can lead
145           to excessive kernel stack usage, frame size warnings and longer
146           compile time.
147           https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715 has more
148
149
150 choice
151         prompt "Instrumentation type"
152         depends on KERNEL_KASAN
153         default KERNEL_KASAN_OUTLINE
154
155 config KERNEL_KASAN_OUTLINE
156         bool "Outline instrumentation"
157         help
158           Before every memory access compiler insert function call
159           __asan_load*/__asan_store*. These functions performs check
160           of shadow memory. This is slower than inline instrumentation,
161           however it doesn't bloat size of kernel's .text section so
162           much as inline does.
163
164 config KERNEL_KASAN_INLINE
165         bool "Inline instrumentation"
166         help
167           Compiler directly inserts code checking shadow memory before
168           memory accesses. This is faster than outline (in some workloads
169           it gives about x2 boost over outline instrumentation), but
170           make kernel's .text size much bigger.
171           This requires a gcc version of 5.0 or later.
172
173 endchoice
174
175 config KERNEL_TASKSTATS
176         bool "Compile the kernel with task resource/io statistics and accounting"
177         default n
178         help
179           Enable the collection and publishing of task/io statistics and
180           accounting.  Enable this option to enable i/o monitoring in system
181           monitors.
182
183 if KERNEL_TASKSTATS
184
185         config KERNEL_TASK_DELAY_ACCT
186                 def_bool y
187
188         config KERNEL_TASK_IO_ACCOUNTING
189                 def_bool y
190
191         config KERNEL_TASK_XACCT
192                 def_bool y
193
194 endif
195
196 config KERNEL_KALLSYMS
197         bool "Compile the kernel with symbol table information"
198         default y if !SMALL_FLASH
199         help
200           This will give you more information in stack traces from kernel oopses.
201
202 config KERNEL_FTRACE
203         bool "Compile the kernel with tracing support"
204         depends on !TARGET_uml
205         default n
206
207 config KERNEL_FTRACE_SYSCALLS
208         bool "Trace system calls"
209         depends on KERNEL_FTRACE
210         default n
211
212 config KERNEL_ENABLE_DEFAULT_TRACERS
213         bool "Trace process context switches and events"
214         depends on KERNEL_FTRACE
215         default n
216
217 config KERNEL_FUNCTION_TRACER
218         bool "Function tracer"
219         depends on KERNEL_FTRACE
220         default n
221
222 config KERNEL_FUNCTION_GRAPH_TRACER
223         bool "Function graph tracer"
224         depends on KERNEL_FUNCTION_TRACER
225         default n
226
227 config KERNEL_DYNAMIC_FTRACE
228         bool "Enable/disable function tracing dynamically"
229         depends on KERNEL_FUNCTION_TRACER
230         default n
231
232 config KERNEL_FUNCTION_PROFILER
233         bool "Function profiler"
234         depends on KERNEL_FUNCTION_TRACER
235         default n
236
237 config KERNEL_DEBUG_KERNEL
238         bool
239         default n
240
241 config KERNEL_DEBUG_INFO
242         bool "Compile the kernel with debug information"
243         default y if !SMALL_FLASH
244         select KERNEL_DEBUG_KERNEL
245         help
246           This will compile your kernel and modules with debug information.
247
248 config KERNEL_DEBUG_LL_UART_NONE
249         bool
250         default n
251         depends on arm
252
253 config KERNEL_DEBUG_LL
254         bool
255         default n
256         depends on arm
257         select KERNEL_DEBUG_LL_UART_NONE
258         help
259           ARM low level debugging.
260
261 config KERNEL_DYNAMIC_DEBUG
262         bool "Compile the kernel with dynamic printk"
263         select KERNEL_DEBUG_FS
264         default n
265         help
266           Compiles debug level messages into the kernel, which would not
267           otherwise be available at runtime. These messages can then be
268           enabled/disabled based on various levels of scope - per source file,
269           function, module, format string, and line number. This mechanism
270           implicitly compiles in all pr_debug() and dev_dbg() calls, which
271           enlarges the kernel text size by about 2%.
272
273 config KERNEL_EARLY_PRINTK
274         bool "Compile the kernel with early printk"
275         default y if TARGET_bcm53xx
276         default n
277         depends on arm
278         select KERNEL_DEBUG_KERNEL
279         select KERNEL_DEBUG_LL if arm
280         help
281           Compile the kernel with early printk support.  This is only useful for
282           debugging purposes to send messages over the serial console in early boot.
283           Enable this to debug early boot problems.
284
285 config KERNEL_KPROBES
286         bool "Compile the kernel with kprobes support"
287         default n
288         select KERNEL_FTRACE
289         select KERNEL_PERF_EVENTS
290         help
291           Compiles the kernel with KPROBES support, which allows you to trap
292           at almost any kernel address and execute a callback function.
293           register_kprobe() establishes a probepoint and specifies the
294           callback. Kprobes is useful for kernel debugging, non-intrusive
295           instrumentation and testing.
296           If in doubt, say "N".
297
298 config KERNEL_KPROBE_EVENT
299         bool
300         default y if KERNEL_KPROBES
301
302 config KERNEL_KPROBE_EVENTS
303         bool
304         default y if KERNEL_KPROBES
305
306 config KERNEL_AIO
307         bool "Compile the kernel with asynchronous IO support"
308         default y if !SMALL_FLASH
309
310 config KERNEL_FHANDLE
311         bool "Compile the kernel with support for fhandle syscalls"
312         default y if !SMALL_FLASH
313
314 config KERNEL_FANOTIFY
315         bool "Compile the kernel with modern file notification support"
316         default y if !SMALL_FLASH
317
318 config KERNEL_BLK_DEV_BSG
319         bool "Compile the kernel with SCSI generic v4 support for any block device"
320         default n
321
322 config KERNEL_MAGIC_SYSRQ
323         bool "Compile the kernel with SysRq support"
324         default y
325
326 config KERNEL_DEBUG_PINCTRL
327         bool "Compile the kernel with pinctrl debugging"
328         select KERNEL_DEBUG_KERNEL
329
330 config KERNEL_DEBUG_GPIO
331         bool "Compile the kernel with gpio debugging"
332         select KERNEL_DEBUG_KERNEL
333
334 config KERNEL_COREDUMP
335         bool
336
337 config KERNEL_ELF_CORE
338         bool "Enable process core dump support"
339         select KERNEL_COREDUMP
340         default y if !SMALL_FLASH
341
342 config KERNEL_PROVE_LOCKING
343         bool "Enable kernel lock checking"
344         select KERNEL_DEBUG_KERNEL
345         default n
346
347 config KERNEL_PRINTK_TIME
348         bool "Enable printk timestamps"
349         default y
350
351 config KERNEL_SLUB_DEBUG
352         bool
353
354 config KERNEL_SLUB_DEBUG_ON
355         bool
356
357 config KERNEL_SLABINFO
358         select KERNEL_SLUB_DEBUG
359         select KERNEL_SLUB_DEBUG_ON
360         bool "Enable /proc slab debug info"
361
362 config KERNEL_PROC_PAGE_MONITOR
363         bool "Enable /proc page monitoring"
364
365 config KERNEL_RELAY
366         bool
367
368 config KERNEL_KEXEC
369         bool "Enable kexec support"
370
371 config KERNEL_PROC_VMCORE
372         bool
373
374 config KERNEL_CRASH_DUMP
375         depends on i386 || x86_64 || arm || armeb
376         select KERNEL_KEXEC
377         select KERNEL_PROC_VMCORE
378         bool "Enable support for kexec crashdump"
379         default y
380
381 config USE_RFKILL
382         bool "Enable rfkill support"
383         default RFKILL_SUPPORT
384
385 config USE_SPARSE
386         bool "Enable sparse check during kernel build"
387         default n
388
389 config KERNEL_DEVTMPFS
390         bool "Compile the kernel with device tmpfs enabled"
391         default n
392         help
393           devtmpfs is a simple, kernel-managed /dev filesystem. The kernel creates
394           devices nodes for all registered devices to simplify boot, but leaves more
395           complex tasks to userspace (e.g. udev).
396
397 if KERNEL_DEVTMPFS
398
399         config KERNEL_DEVTMPFS_MOUNT
400                 bool "Automatically mount devtmpfs after root filesystem is mounted"
401                 default n
402
403 endif
404
405 config KERNEL_KEYS
406     bool "Enable kernel access key retention support"
407     default n
408
409 config KERNEL_PERSISTENT_KEYRINGS
410     bool "Enable kernel persistent keyrings"
411     depends on KERNEL_KEYS
412     default n
413
414 config KERNEL_BIG_KEYS
415     bool "Enable large payload keys on kernel keyrings"
416     depends on KERNEL_KEYS
417     default n
418
419 config KERNEL_ENCRYPTED_KEYS
420     tristate "Enable keys with encrypted payloads on kernel keyrings"
421     depends on KERNEL_KEYS
422     default n
423
424 #
425 # CGROUP support symbols
426 #
427
428 config KERNEL_CGROUPS
429         bool "Enable kernel cgroups"
430         default y if !SMALL_FLASH
431
432 if KERNEL_CGROUPS
433
434         config KERNEL_CGROUP_DEBUG
435                 bool "Example debug cgroup subsystem"
436                 default n
437                 help
438                   This option enables a simple cgroup subsystem that
439                   exports useful debugging information about the cgroups
440                   framework.
441
442         config KERNEL_FREEZER
443                 bool
444                 default y if KERNEL_CGROUP_FREEZER
445
446         config KERNEL_CGROUP_FREEZER
447                 bool "Freezer cgroup subsystem"
448                 default y
449                 help
450                   Provides a way to freeze and unfreeze all tasks in a
451                   cgroup.
452
453         config KERNEL_CGROUP_DEVICE
454                 bool "Device controller for cgroups"
455                 default y
456                 help
457                   Provides a cgroup implementing whitelists for devices which
458                   a process in the cgroup can mknod or open.
459
460         config KERNEL_CGROUP_PIDS
461                 bool "PIDs cgroup subsystem"
462                 default y
463                 help
464                   Provides enforcement of process number limits in the scope of a
465                   cgroup.
466
467         config KERNEL_CPUSETS
468                 bool "Cpuset support"
469                 default y if !SMALL_FLASH
470                 help
471                   This option will let you create and manage CPUSETs which
472                   allow dynamically partitioning a system into sets of CPUs and
473                   Memory Nodes and assigning tasks to run only within those sets.
474                   This is primarily useful on large SMP or NUMA systems.
475
476         config KERNEL_PROC_PID_CPUSET
477                 bool "Include legacy /proc/<pid>/cpuset file"
478                 default n
479                 depends on KERNEL_CPUSETS
480
481         config KERNEL_CGROUP_CPUACCT
482                 bool "Simple CPU accounting cgroup subsystem"
483                 default y if !SMALL_FLASH
484                 help
485                   Provides a simple Resource Controller for monitoring the
486                   total CPU consumed by the tasks in a cgroup.
487
488         config KERNEL_RESOURCE_COUNTERS
489                 bool "Resource counters"
490                 default y if !SMALL_FLASH
491                 help
492                   This option enables controller independent resource accounting
493                   infrastructure that works with cgroups.
494
495         config KERNEL_MM_OWNER
496                 bool
497                 default y if KERNEL_MEMCG
498
499         config KERNEL_MEMCG
500                 bool "Memory Resource Controller for Control Groups"
501                 default y if !SMALL_FLASH
502                 depends on KERNEL_RESOURCE_COUNTERS || !LINUX_3_18
503                 help
504                   Provides a memory resource controller that manages both anonymous
505                   memory and page cache. (See Documentation/cgroups/memory.txt)
506
507                   Note that setting this option increases fixed memory overhead
508                   associated with each page of memory in the system. By this,
509                   20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
510                   usage tracking struct at boot. Total amount of this is printed out
511                   at boot.
512
513                   Only enable when you're ok with these tradeoffs and really
514                   sure you need the memory resource controller. Even when you enable
515                   this, you can set "cgroup_disable=memory" at your boot option to
516                   disable memory resource controller and you can avoid overheads
517                   (but lose benefits of memory resource controller).
518
519                   This config option also selects MM_OWNER config option, which
520                   could in turn add some fork/exit overhead.
521
522         config KERNEL_MEMCG_SWAP
523                 bool "Memory Resource Controller Swap Extension"
524                 default n
525                 depends on KERNEL_MEMCG
526                 help
527                   Add swap management feature to memory resource controller. When you
528                   enable this, you can limit mem+swap usage per cgroup. In other words,
529                   when you disable this, memory resource controller has no cares to
530                   usage of swap...a process can exhaust all of the swap. This extension
531                   is useful when you want to avoid exhaustion swap but this itself
532                   adds more overheads and consumes memory for remembering information.
533                   Especially if you use 32bit system or small memory system, please
534                   be careful about enabling this. When memory resource controller
535                   is disabled by boot option, this will be automatically disabled and
536                   there will be no overhead from this. Even when you set this config=y,
537                   if boot option "swapaccount=0" is set, swap will not be accounted.
538                   Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
539                   size is 4096bytes, 512k per 1Gbytes of swap.
540
541         config KERNEL_MEMCG_SWAP_ENABLED
542                 bool "Memory Resource Controller Swap Extension enabled by default"
543                 default n
544                 depends on KERNEL_MEMCG_SWAP
545                 help
546                   Memory Resource Controller Swap Extension comes with its price in
547                   a bigger memory consumption. General purpose distribution kernels
548                   which want to enable the feature but keep it disabled by default
549                   and let the user enable it by swapaccount boot command line
550                   parameter should have this option unselected.
551
552                   Those who want to have the feature enabled by default should
553                   select this option (if, for some reason, they need to disable it,
554                   then swapaccount=0 does the trick).
555
556
557         config KERNEL_MEMCG_KMEM
558                 bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
559                 default y if !SMALL_FLASH
560                 depends on KERNEL_MEMCG
561                 help
562                   The Kernel Memory extension for Memory Resource Controller can limit
563                   the amount of memory used by kernel objects in the system. Those are
564                   fundamentally different from the entities handled by the standard
565                   Memory Controller, which are page-based, and can be swapped. Users of
566                   the kmem extension can use it to guarantee that no group of processes
567                   will ever exhaust kernel resources alone.
568
569         config KERNEL_CGROUP_PERF
570                 bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
571                 select KERNEL_PERF_EVENTS
572                 default n
573                 help
574                   This option extends the per-cpu mode to restrict monitoring to
575                   threads which belong to the cgroup specified and run on the
576                   designated cpu.
577
578         menuconfig KERNEL_CGROUP_SCHED
579                 bool "Group CPU scheduler"
580                 default y if !SMALL_FLASH
581                 help
582                   This feature lets CPU scheduler recognize task groups and control CPU
583                   bandwidth allocation to such task groups. It uses cgroups to group
584                   tasks.
585
586         if KERNEL_CGROUP_SCHED
587
588                 config KERNEL_FAIR_GROUP_SCHED
589                         bool "Group scheduling for SCHED_OTHER"
590                         default y if !SMALL_FLASH
591
592                 config KERNEL_CFS_BANDWIDTH
593                         bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
594                         default n
595                         depends on KERNEL_FAIR_GROUP_SCHED
596                         help
597                           This option allows users to define CPU bandwidth rates (limits) for
598                           tasks running within the fair group scheduler.  Groups with no limit
599                           set are considered to be unconstrained and will run with no
600                           restriction.
601                           See tip/Documentation/scheduler/sched-bwc.txt for more information.
602
603                 config KERNEL_RT_GROUP_SCHED
604                         bool "Group scheduling for SCHED_RR/FIFO"
605                         default y if !SMALL_FLASH
606                         help
607                           This feature lets you explicitly allocate real CPU bandwidth
608                           to task groups. If enabled, it will also make it impossible to
609                           schedule realtime tasks for non-root users until you allocate
610                           realtime bandwidth for them.
611
612         endif
613
614         config KERNEL_BLK_CGROUP
615                 bool "Block IO controller"
616                 default y
617                 help
618                   Generic block IO controller cgroup interface. This is the common
619                   cgroup interface which should be used by various IO controlling
620                   policies.
621
622                   Currently, CFQ IO scheduler uses it to recognize task groups and
623                   control disk bandwidth allocation (proportional time slice allocation)
624                   to such task groups. It is also used by bio throttling logic in
625                   block layer to implement upper limit in IO rates on a device.
626
627                   This option only enables generic Block IO controller infrastructure.
628                   One needs to also enable actual IO controlling logic/policy. For
629                   enabling proportional weight division of disk bandwidth in CFQ, set
630                   CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
631                   CONFIG_BLK_DEV_THROTTLING=y.
632
633         if KERNEL_BLK_CGROUP
634
635                 config KERNEL_CFQ_GROUP_IOSCHED
636                         bool "Proportional weight of disk bandwidth in CFQ"
637
638                 config KERNEL_BLK_DEV_THROTTLING
639                         bool "Enable throttling policy"
640                         default y if TARGET_bcm27xx
641
642                 config KERNEL_BLK_DEV_THROTTLING_LOW
643                         bool "Block throttling .low limit interface support (EXPERIMENTAL)"
644                         depends on KERNEL_BLK_DEV_THROTTLING
645         endif
646
647         config KERNEL_DEBUG_BLK_CGROUP
648                 bool "Enable Block IO controller debugging"
649                 default n
650                 depends on KERNEL_BLK_CGROUP
651                 help
652                   Enable some debugging help. Currently it exports additional stat
653                   files in a cgroup which can be useful for debugging.
654
655         config KERNEL_NET_CLS_CGROUP
656                 bool "Control Group Classifier"
657                 default y
658
659         config KERNEL_NETPRIO_CGROUP
660                 bool "Network priority cgroup"
661                 default y
662
663 endif
664
665 #
666 # Namespace support symbols
667 #
668
669 config KERNEL_NAMESPACES
670         bool "Enable kernel namespaces"
671         default y if !SMALL_FLASH
672
673 if KERNEL_NAMESPACES
674
675         config KERNEL_UTS_NS
676                 bool "UTS namespace"
677                 default y
678                 help
679                   In this namespace, tasks see different info provided
680                   with the uname() system call.
681
682         config KERNEL_IPC_NS
683                 bool "IPC namespace"
684                 default y
685                 help
686                   In this namespace, tasks work with IPC ids which correspond to
687                   different IPC objects in different namespaces.
688
689         config KERNEL_USER_NS
690                 bool "User namespace (EXPERIMENTAL)"
691                 default y
692                 help
693                   This allows containers, i.e. vservers, to use user namespaces
694                   to provide different user info for different servers.
695
696         config KERNEL_PID_NS
697                 bool "PID Namespaces"
698                 default y
699                 help
700                   Support process id namespaces. This allows having multiple
701                   processes with the same pid as long as they are in different
702                   pid namespaces. This is a building block of containers.
703
704         config KERNEL_NET_NS
705                 bool "Network namespace"
706                 default y
707                 help
708                   Allow user space to create what appear to be multiple instances
709                   of the network stack.
710
711 endif
712
713 config KERNEL_DEVPTS_MULTIPLE_INSTANCES
714         bool "Support multiple instances of devpts"
715         default y if !SMALL_FLASH
716         help
717           Enable support for multiple instances of devpts filesystem.
718           If you want to have isolated PTY namespaces (eg: in containers),
719           say Y here. Otherwise, say N. If enabled, each mount of devpts
720           filesystem with the '-o newinstance' option will create an
721           independent PTY namespace.
722
723 config KERNEL_POSIX_MQUEUE
724         bool "POSIX Message Queues"
725         default y if !SMALL_FLASH
726         help
727           POSIX variant of message queues is a part of IPC. In POSIX message
728           queues every message has a priority which decides about succession
729           of receiving it by a process. If you want to compile and run
730           programs written e.g. for Solaris with use of its POSIX message
731           queues (functions mq_*) say Y here.
732
733           POSIX message queues are visible as a filesystem called 'mqueue'
734           and can be mounted somewhere if you want to do filesystem
735           operations on message queues.
736
737
738 config KERNEL_SECCOMP_FILTER
739         bool
740         default y if !SMALL_FLASH
741
742 config KERNEL_SECCOMP
743         bool "Enable seccomp support"
744                 depends on !(TARGET_uml)
745                 select KERNEL_SECCOMP_FILTER
746                 default y if !SMALL_FLASH
747                 help
748                   Build kernel with support for seccomp.
749
750 #
751 # IPv4 configuration
752 #
753
754 config KERNEL_IP_MROUTE
755         bool "Enable IPv4 multicast routing"
756         default y
757         help
758           Multicast routing requires a multicast routing daemon in
759           addition to kernel support.
760
761 #
762 # IPv6 configuration
763 #
764
765 config KERNEL_IPV6
766         def_bool IPV6
767
768 if KERNEL_IPV6
769
770         config KERNEL_IPV6_MULTIPLE_TABLES
771                 def_bool y
772
773         config KERNEL_IPV6_SUBTREES
774                 def_bool y
775
776         config KERNEL_IPV6_MROUTE
777                 bool "Enable IPv6 multicast routing"
778                 default y
779                 help
780                   Multicast routing requires a multicast routing daemon in
781                   addition to kernel support.
782
783         config KERNEL_IPV6_PIMSM_V2
784                 def_bool n
785
786 endif
787
788 #
789 # NFS related symbols
790 #
791 config KERNEL_IP_PNP
792         bool "Compile the kernel with rootfs on NFS"
793         help
794            If you want to make your kernel boot off a NFS server as root
795            filesystem, select Y here.
796
797 if KERNEL_IP_PNP
798
799         config KERNEL_IP_PNP_DHCP
800                 def_bool y
801
802         config KERNEL_IP_PNP_BOOTP
803                 def_bool n
804
805         config KERNEL_IP_PNP_RARP
806                 def_bool n
807
808         config KERNEL_NFS_FS
809                 def_bool y
810
811         config KERNEL_NFS_V2
812                 def_bool y
813
814         config KERNEL_NFS_V3
815                 def_bool y
816
817         config KERNEL_ROOT_NFS
818                 def_bool y
819
820 endif
821
822 menu "Filesystem ACL and attr support options"
823         config USE_FS_ACL_ATTR
824                 bool "Use filesystem ACL and attr support by default"
825                 default n
826                 help
827                   Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default
828                   for kernel and packages, except tmpfs, flash filesystems,
829                   and old NFS.  Also enable userspace extended attribute support
830                   by default.  (OpenWrt already has an expection it will be
831                   present in the kernel).
832
833         config KERNEL_FS_POSIX_ACL
834                 bool "Enable POSIX ACL support"
835                 default y if USE_FS_ACL_ATTR
836
837         config KERNEL_BTRFS_FS_POSIX_ACL
838                 bool "Enable POSIX ACL for BtrFS Filesystems"
839                 select KERNEL_FS_POSIX_ACL
840                 default y if USE_FS_ACL_ATTR
841
842         config KERNEL_EXT4_FS_POSIX_ACL
843                 bool "Enable POSIX ACL for Ext4 Filesystems"
844                 select KERNEL_FS_POSIX_ACL
845                 default y if USE_FS_ACL_ATTR
846
847         config KERNEL_F2FS_FS_POSIX_ACL
848                 bool "Enable POSIX ACL for F2FS Filesystems"
849                 select KERNEL_FS_POSIX_ACL
850                 default n
851
852         config KERNEL_JFFS2_FS_POSIX_ACL
853                 bool "Enable POSIX ACL for JFFS2 Filesystems"
854                 select KERNEL_FS_POSIX_ACL
855                 default n
856
857         config KERNEL_TMPFS_POSIX_ACL
858                 bool "Enable POSIX ACL for TMPFS Filesystems"
859                 select KERNEL_FS_POSIX_ACL
860                 default n
861
862         config KERNEL_CIFS_ACL
863                 bool "Enable CIFS ACLs"
864                 select KERNEL_FS_POSIX_ACL
865                 default y if USE_FS_ACL_ATTR
866
867         config KERNEL_HFS_FS_POSIX_ACL
868                 bool "Enable POSIX ACL for HFS Filesystems"
869                 select KERNEL_FS_POSIX_ACL
870                 default y if USE_FS_ACL_ATTR
871
872         config KERNEL_HFSPLUS_FS_POSIX_ACL
873                 bool "Enable POSIX ACL for HFS+ Filesystems"
874                 select KERNEL_FS_POSIX_ACL
875                 default y if USE_FS_ACL_ATTR
876
877         config KERNEL_NFS_ACL_SUPPORT
878                 bool "Enable ACLs for NFS"
879                 default y if USE_FS_ACL_ATTR
880
881         config KERNEL_NFS_V3_ACL_SUPPORT
882                 bool "Enable ACLs for NFSv3"
883                 default n
884
885         config KERNEL_NFSD_V2_ACL_SUPPORT
886                 bool "Enable ACLs for NFSDv2"
887                 default n
888
889         config KERNEL_NFSD_V3_ACL_SUPPORT
890                 bool "Enable ACLs for NFSDv3"
891                 default n
892
893         config KERNEL_REISER_FS_POSIX_ACL
894                 bool "Enable POSIX ACLs for ReiserFS"
895                 select KERNEL_FS_POSIX_ACL
896                 default y if USE_FS_ACL_ATTR
897
898         config KERNEL_XFS_POSIX_ACL
899                 bool "Enable POSIX ACLs for XFS"
900                 select KERNEL_FS_POSIX_ACL
901                 default y if USE_FS_ACL_ATTR
902
903         config KERNEL_JFS_POSIX_ACL
904                 bool "Enable POSIX ACLs for JFS"
905                 select KERNEL_FS_POSIX_ACL
906                 default y if USE_FS_ACL_ATTR
907
908 endmenu
909
910 config KERNEL_DEVMEM
911         bool "/dev/mem virtual device support"
912         help
913           Say Y here if you want to support the /dev/mem device.
914           The /dev/mem device is used to access areas of physical
915           memory.
916
917 config KERNEL_DEVKMEM
918         bool "/dev/kmem virtual device support"
919         help
920           Say Y here if you want to support the /dev/kmem device. The
921           /dev/kmem device is rarely used, but can be used for certain
922           kind of kernel debugging operations.
923
924 config KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE
925         int "Number of squashfs fragments cached"
926         default 2 if (SMALL_FLASH && !LOW_MEMORY_FOOTPRINT)
927         default 3
928
929 #
930 # compile optimiziation setting
931 #
932 choice
933         prompt "Compiler optimization level"
934         default KERNEL_CC_OPTIMIZE_FOR_SIZE if SMALL_FLASH
935
936 config KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE
937         bool "Optimize for performance"
938         help
939           This is the default optimization level for the kernel, building
940           with the "-O2" compiler flag for best performance and most
941           helpful compile-time warnings.
942
943 config KERNEL_CC_OPTIMIZE_FOR_SIZE
944         bool "Optimize for size"
945         help
946           Enabling this option will pass "-Os" instead of "-O2" to
947           your compiler resulting in a smaller kernel.
948
949 endchoice