79afdceb961e520481d89680d972c2cfa9221056
[firefly-linux-kernel-4.4.55.git] / init / Kconfig
1 config ARCH
2         string
3         option env="ARCH"
4
5 config KERNELVERSION
6         string
7         option env="KERNELVERSION"
8
9 config DEFCONFIG_LIST
10         string
11         depends on !UML
12         option defconfig_list
13         default "/lib/modules/$UNAME_RELEASE/.config"
14         default "/etc/kernel-config"
15         default "/boot/config-$UNAME_RELEASE"
16         default "$ARCH_DEFCONFIG"
17         default "arch/$ARCH/defconfig"
18
19 config CONSTRUCTORS
20         bool
21         depends on !UML
22         default y
23
24 menu "General setup"
25
26 config EXPERIMENTAL
27         bool "Prompt for development and/or incomplete code/drivers"
28         ---help---
29           Some of the various things that Linux supports (such as network
30           drivers, file systems, network protocols, etc.) can be in a state
31           of development where the functionality, stability, or the level of
32           testing is not yet high enough for general use. This is usually
33           known as the "alpha-test" phase among developers. If a feature is
34           currently in alpha-test, then the developers usually discourage
35           uninformed widespread use of this feature by the general public to
36           avoid "Why doesn't this work?" type mail messages. However, active
37           testing and use of these systems is welcomed. Just be aware that it
38           may not meet the normal level of reliability or it may fail to work
39           in some special cases. Detailed bug reports from people familiar
40           with the kernel internals are usually welcomed by the developers
41           (before submitting bug reports, please read the documents
42           <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
43           <file:Documentation/BUG-HUNTING>, and
44           <file:Documentation/oops-tracing.txt> in the kernel source).
45
46           This option will also make obsoleted drivers available. These are
47           drivers that have been replaced by something else, and/or are
48           scheduled to be removed in a future kernel release.
49
50           Unless you intend to help test and develop a feature or driver that
51           falls into this category, or you have a situation that requires
52           using these features, you should probably say N here, which will
53           cause the configurator to present you with fewer choices. If
54           you say Y here, you will be offered the choice of using features or
55           drivers that are currently considered to be in the alpha-test phase.
56
57 config BROKEN
58         bool
59
60 config BROKEN_ON_SMP
61         bool
62         depends on BROKEN || !SMP
63         default y
64
65 config LOCK_KERNEL
66         bool
67         depends on SMP || PREEMPT
68         default y
69
70 config INIT_ENV_ARG_LIMIT
71         int
72         default 32 if !UML
73         default 128 if UML
74         help
75           Maximum of each of the number of arguments and environment
76           variables passed to init from the kernel command line.
77
78
79 config LOCALVERSION
80         string "Local version - append to kernel release"
81         help
82           Append an extra string to the end of your kernel version.
83           This will show up when you type uname, for example.
84           The string you set here will be appended after the contents of
85           any files with a filename matching localversion* in your
86           object and source tree, in that order.  Your total string can
87           be a maximum of 64 characters.
88
89 config LOCALVERSION_AUTO
90         bool "Automatically append version information to the version string"
91         default y
92         help
93           This will try to automatically determine if the current tree is a
94           release tree by looking for git tags that belong to the current
95           top of tree revision.
96
97           A string of the format -gxxxxxxxx will be added to the localversion
98           if a git-based tree is found.  The string generated by this will be
99           appended after any matching localversion* files, and after the value
100           set in CONFIG_LOCALVERSION.
101
102           (The actual string used here is the first eight characters produced
103           by running the command:
104
105             $ git rev-parse --verify HEAD
106
107           which is done within the script "scripts/setlocalversion".)
108
109 config HAVE_KERNEL_GZIP
110         bool
111
112 config HAVE_KERNEL_BZIP2
113         bool
114
115 config HAVE_KERNEL_LZMA
116         bool
117
118 choice
119         prompt "Kernel compression mode"
120         default KERNEL_LZO if ARCH_RK29
121         default KERNEL_GZIP
122         depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA
123         help
124           The linux kernel is a kind of self-extracting executable.
125           Several compression algorithms are available, which differ
126           in efficiency, compression and decompression speed.
127           Compression speed is only relevant when building a kernel.
128           Decompression speed is relevant at each boot.
129
130           If you have any problems with bzip2 or lzma compressed
131           kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
132           version of this functionality (bzip2 only), for 2.4, was
133           supplied by Christian Ludwig)
134
135           High compression options are mostly useful for users, who
136           are low on disk space (embedded systems), but for whom ram
137           size matters less.
138
139           If in doubt, select 'gzip'
140
141 config KERNEL_GZIP
142         bool "Gzip"
143         depends on HAVE_KERNEL_GZIP
144         help
145           The old and tried gzip compression. Its compression ratio is
146           the poorest among the 3 choices; however its speed (both
147           compression and decompression) is the fastest.
148
149 config KERNEL_BZIP2
150         bool "Bzip2"
151         depends on HAVE_KERNEL_BZIP2
152         help
153           Its compression ratio and speed is intermediate.
154           Decompression speed is slowest among the three.  The kernel
155           size is about 10% smaller with bzip2, in comparison to gzip.
156           Bzip2 uses a large amount of memory. For modern kernels you
157           will need at least 8MB RAM or more for booting.
158
159 config KERNEL_LZMA
160         bool "LZMA"
161         depends on HAVE_KERNEL_LZMA
162         help
163           The most recent compression algorithm.
164           Its ratio is best, decompression speed is between the other
165           two. Compression is slowest.  The kernel size is about 33%
166           smaller with LZMA in comparison to gzip.
167
168 endchoice
169
170 config SWAP
171         bool "Support for paging of anonymous memory (swap)"
172         depends on MMU && BLOCK
173         default y
174         help
175           This option allows you to choose whether you want to have support
176           for so called swap devices or swap files in your kernel that are
177           used to provide more virtual memory than the actual RAM present
178           in your computer.  If unsure say Y.
179
180 config SYSVIPC
181         bool "System V IPC"
182         ---help---
183           Inter Process Communication is a suite of library functions and
184           system calls which let processes (running programs) synchronize and
185           exchange information. It is generally considered to be a good thing,
186           and some programs won't run unless you say Y here. In particular, if
187           you want to run the DOS emulator dosemu under Linux (read the
188           DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
189           you'll need to say Y here.
190
191           You can find documentation about IPC with "info ipc" and also in
192           section 6.4 of the Linux Programmer's Guide, available from
193           <http://www.tldp.org/guides.html>.
194
195 config SYSVIPC_SYSCTL
196         bool
197         depends on SYSVIPC
198         depends on SYSCTL
199         default y
200
201 config POSIX_MQUEUE
202         bool "POSIX Message Queues"
203         depends on NET && EXPERIMENTAL
204         ---help---
205           POSIX variant of message queues is a part of IPC. In POSIX message
206           queues every message has a priority which decides about succession
207           of receiving it by a process. If you want to compile and run
208           programs written e.g. for Solaris with use of its POSIX message
209           queues (functions mq_*) say Y here.
210
211           POSIX message queues are visible as a filesystem called 'mqueue'
212           and can be mounted somewhere if you want to do filesystem
213           operations on message queues.
214
215           If unsure, say Y.
216
217 config POSIX_MQUEUE_SYSCTL
218         bool
219         depends on POSIX_MQUEUE
220         depends on SYSCTL
221         default y
222
223 config BSD_PROCESS_ACCT
224         bool "BSD Process Accounting"
225         help
226           If you say Y here, a user level program will be able to instruct the
227           kernel (via a special system call) to write process accounting
228           information to a file: whenever a process exits, information about
229           that process will be appended to the file by the kernel.  The
230           information includes things such as creation time, owning user,
231           command name, memory usage, controlling terminal etc. (the complete
232           list is in the struct acct in <file:include/linux/acct.h>).  It is
233           up to the user level program to do useful things with this
234           information.  This is generally a good idea, so say Y.
235
236 config BSD_PROCESS_ACCT_V3
237         bool "BSD Process Accounting version 3 file format"
238         depends on BSD_PROCESS_ACCT
239         default n
240         help
241           If you say Y here, the process accounting information is written
242           in a new file format that also logs the process IDs of each
243           process and it's parent. Note that this file format is incompatible
244           with previous v0/v1/v2 file formats, so you will need updated tools
245           for processing it. A preliminary version of these tools is available
246           at <http://www.gnu.org/software/acct/>.
247
248 config TASKSTATS
249         bool "Export task/process statistics through netlink (EXPERIMENTAL)"
250         depends on NET
251         default n
252         help
253           Export selected statistics for tasks/processes through the
254           generic netlink interface. Unlike BSD process accounting, the
255           statistics are available during the lifetime of tasks/processes as
256           responses to commands. Like BSD accounting, they are sent to user
257           space on task exit.
258
259           Say N if unsure.
260
261 config TASK_DELAY_ACCT
262         bool "Enable per-task delay accounting (EXPERIMENTAL)"
263         depends on TASKSTATS
264         help
265           Collect information on time spent by a task waiting for system
266           resources like cpu, synchronous block I/O completion and swapping
267           in pages. Such statistics can help in setting a task's priorities
268           relative to other tasks for cpu, io, rss limits etc.
269
270           Say N if unsure.
271
272 config TASK_XACCT
273         bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
274         depends on TASKSTATS
275         help
276           Collect extended task accounting data and send the data
277           to userland for processing over the taskstats interface.
278
279           Say N if unsure.
280
281 config TASK_IO_ACCOUNTING
282         bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
283         depends on TASK_XACCT
284         help
285           Collect information on the number of bytes of storage I/O which this
286           task has caused.
287
288           Say N if unsure.
289
290 config AUDIT
291         bool "Auditing support"
292         depends on NET
293         help
294           Enable auditing infrastructure that can be used with another
295           kernel subsystem, such as SELinux (which requires this for
296           logging of avc messages output).  Does not do system-call
297           auditing without CONFIG_AUDITSYSCALL.
298
299 config AUDITSYSCALL
300         bool "Enable system-call auditing support"
301         depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH)
302         default y if SECURITY_SELINUX
303         help
304           Enable low-overhead system-call auditing infrastructure that
305           can be used independently or with another kernel subsystem,
306           such as SELinux.  To use audit's filesystem watch feature, please
307           ensure that INOTIFY is configured.
308
309 config AUDIT_TREE
310         def_bool y
311         depends on AUDITSYSCALL
312         select INOTIFY
313
314 menu "RCU Subsystem"
315
316 choice
317         prompt "RCU Implementation"
318         default TREE_RCU
319
320 config TREE_RCU
321         bool "Tree-based hierarchical RCU"
322         help
323           This option selects the RCU implementation that is
324           designed for very large SMP system with hundreds or
325           thousands of CPUs.  It also scales down nicely to
326           smaller systems.
327
328 config TREE_PREEMPT_RCU
329         bool "Preemptable tree-based hierarchical RCU"
330         depends on PREEMPT
331         help
332           This option selects the RCU implementation that is
333           designed for very large SMP systems with hundreds or
334           thousands of CPUs, but for which real-time response
335           is also required.  It also scales down nicely to
336           smaller systems.
337
338 endchoice
339
340 config RCU_TRACE
341         bool "Enable tracing for RCU"
342         depends on TREE_RCU || TREE_PREEMPT_RCU
343         help
344           This option provides tracing in RCU which presents stats
345           in debugfs for debugging RCU implementation.
346
347           Say Y here if you want to enable RCU tracing
348           Say N if you are unsure.
349
350 config RCU_FANOUT
351         int "Tree-based hierarchical RCU fanout value"
352         range 2 64 if 64BIT
353         range 2 32 if !64BIT
354         depends on TREE_RCU || TREE_PREEMPT_RCU
355         default 64 if 64BIT
356         default 32 if !64BIT
357         help
358           This option controls the fanout of hierarchical implementations
359           of RCU, allowing RCU to work efficiently on machines with
360           large numbers of CPUs.  This value must be at least the cube
361           root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
362           systems and up to 262,144 for 64-bit systems.
363
364           Select a specific number if testing RCU itself.
365           Take the default if unsure.
366
367 config RCU_FANOUT_EXACT
368         bool "Disable tree-based hierarchical RCU auto-balancing"
369         depends on TREE_RCU || TREE_PREEMPT_RCU
370         default n
371         help
372           This option forces use of the exact RCU_FANOUT value specified,
373           regardless of imbalances in the hierarchy.  This is useful for
374           testing RCU itself, and might one day be useful on systems with
375           strong NUMA behavior.
376
377           Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
378
379           Say N if unsure.
380
381 config TREE_RCU_TRACE
382         def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
383         select DEBUG_FS
384         help
385           This option provides tracing for the TREE_RCU and
386           TREE_PREEMPT_RCU implementations, permitting Makefile to
387           trivially select kernel/rcutree_trace.c.
388
389 endmenu # "RCU Subsystem"
390
391 config IKCONFIG
392         tristate "Kernel .config support"
393         ---help---
394           This option enables the complete Linux kernel ".config" file
395           contents to be saved in the kernel. It provides documentation
396           of which kernel options are used in a running kernel or in an
397           on-disk kernel.  This information can be extracted from the kernel
398           image file with the script scripts/extract-ikconfig and used as
399           input to rebuild the current kernel or to build another kernel.
400           It can also be extracted from a running kernel by reading
401           /proc/config.gz if enabled (below).
402
403 config IKCONFIG_PROC
404         bool "Enable access to .config through /proc/config.gz"
405         depends on IKCONFIG && PROC_FS
406         ---help---
407           This option enables access to the kernel configuration file
408           through /proc/config.gz.
409
410 config LOG_BUF_SHIFT
411         int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
412         range 12 21
413         default 17
414         help
415           Select kernel log buffer size as a power of 2.
416           Examples:
417                      17 => 128 KB
418                      16 => 64 KB
419                      15 => 32 KB
420                      14 => 16 KB
421                      13 =>  8 KB
422                      12 =>  4 KB
423
424 #
425 # Architectures with an unreliable sched_clock() should select this:
426 #
427 config HAVE_UNSTABLE_SCHED_CLOCK
428         bool
429
430 menuconfig CGROUPS
431         boolean "Control Group support"
432         help
433           This option adds support for grouping sets of processes together, for
434           use with process control subsystems such as Cpusets, CFS, memory
435           controls or device isolation.
436           See
437                 - Documentation/scheduler/sched-design-CFS.txt  (CFS)
438                 - Documentation/cgroups/ (features for grouping, isolation
439                                           and resource control)
440
441           Say N if unsure.
442
443 if CGROUPS
444
445 config CGROUP_DEBUG
446         bool "Example debug cgroup subsystem"
447         depends on CGROUPS
448         default n
449         help
450           This option enables a simple cgroup subsystem that
451           exports useful debugging information about the cgroups
452           framework.
453
454           Say N if unsure.
455
456 config CGROUP_NS
457         bool "Namespace cgroup subsystem"
458         depends on CGROUPS
459         help
460           Provides a simple namespace cgroup subsystem to
461           provide hierarchical naming of sets of namespaces,
462           for instance virtual servers and checkpoint/restart
463           jobs.
464
465 config CGROUP_FREEZER
466         bool "Freezer cgroup subsystem"
467         depends on CGROUPS
468         help
469           Provides a way to freeze and unfreeze all tasks in a
470           cgroup.
471
472 config CGROUP_DEVICE
473         bool "Device controller for cgroups"
474         depends on CGROUPS && EXPERIMENTAL
475         help
476           Provides a cgroup implementing whitelists for devices which
477           a process in the cgroup can mknod or open.
478
479 config CPUSETS
480         bool "Cpuset support"
481         depends on CGROUPS
482         help
483           This option will let you create and manage CPUSETs which
484           allow dynamically partitioning a system into sets of CPUs and
485           Memory Nodes and assigning tasks to run only within those sets.
486           This is primarily useful on large SMP or NUMA systems.
487
488           Say N if unsure.
489
490 config PROC_PID_CPUSET
491         bool "Include legacy /proc/<pid>/cpuset file"
492         depends on CPUSETS
493         default y
494
495 config CGROUP_CPUACCT
496         bool "Simple CPU accounting cgroup subsystem"
497         depends on CGROUPS
498         help
499           Provides a simple Resource Controller for monitoring the
500           total CPU consumed by the tasks in a cgroup.
501
502 config RESOURCE_COUNTERS
503         bool "Resource counters"
504         help
505           This option enables controller independent resource accounting
506           infrastructure that works with cgroups.
507         depends on CGROUPS
508
509 config CGROUP_MEM_RES_CTLR
510         bool "Memory Resource Controller for Control Groups"
511         depends on CGROUPS && RESOURCE_COUNTERS
512         select MM_OWNER
513         help
514           Provides a memory resource controller that manages both anonymous
515           memory and page cache. (See Documentation/cgroups/memory.txt)
516
517           Note that setting this option increases fixed memory overhead
518           associated with each page of memory in the system. By this,
519           20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
520           usage tracking struct at boot. Total amount of this is printed out
521           at boot.
522
523           Only enable when you're ok with these trade offs and really
524           sure you need the memory resource controller. Even when you enable
525           this, you can set "cgroup_disable=memory" at your boot option to
526           disable memory resource controller and you can avoid overheads.
527           (and lose benefits of memory resource controller)
528
529           This config option also selects MM_OWNER config option, which
530           could in turn add some fork/exit overhead.
531
532 config CGROUP_MEM_RES_CTLR_SWAP
533         bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)"
534         depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL
535         help
536           Add swap management feature to memory resource controller. When you
537           enable this, you can limit mem+swap usage per cgroup. In other words,
538           when you disable this, memory resource controller has no cares to
539           usage of swap...a process can exhaust all of the swap. This extension
540           is useful when you want to avoid exhaustion swap but this itself
541           adds more overheads and consumes memory for remembering information.
542           Especially if you use 32bit system or small memory system, please
543           be careful about enabling this. When memory resource controller
544           is disabled by boot option, this will be automatically disabled and
545           there will be no overhead from this. Even when you set this config=y,
546           if boot option "noswapaccount" is set, swap will not be accounted.
547           Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
548           size is 4096bytes, 512k per 1Gbytes of swap.
549
550 menuconfig CGROUP_SCHED
551         bool "Group CPU scheduler"
552         depends on EXPERIMENTAL && CGROUPS
553         default n
554         help
555           This feature lets CPU scheduler recognize task groups and control CPU
556           bandwidth allocation to such task groups. It uses cgroups to group
557           tasks.
558
559 if CGROUP_SCHED
560 config FAIR_GROUP_SCHED
561         bool "Group scheduling for SCHED_OTHER"
562         depends on CGROUP_SCHED
563         default CGROUP_SCHED
564
565 config RT_GROUP_SCHED
566         bool "Group scheduling for SCHED_RR/FIFO"
567         depends on EXPERIMENTAL
568         depends on CGROUP_SCHED
569         default n
570         help
571           This feature lets you explicitly allocate real CPU bandwidth
572           to task groups. If enabled, it will also make it impossible to
573           schedule realtime tasks for non-root users until you allocate
574           realtime bandwidth for them.
575           See Documentation/scheduler/sched-rt-group.txt for more information.
576
577 endif #CGROUP_SCHED
578
579 endif # CGROUPS
580
581 config MM_OWNER
582         bool
583
584 config SYSFS_DEPRECATED
585         bool
586
587 config SYSFS_DEPRECATED_V2
588         bool "enable deprecated sysfs features which may confuse old userspace tools"
589         depends on SYSFS
590         default n
591         select SYSFS_DEPRECATED
592         help
593           This option switches the layout of sysfs to the deprecated
594           version. Do not use it on recent distributions.
595
596           The current sysfs layout features a unified device tree at
597           /sys/devices/, which is able to express a hierarchy between
598           class devices. If the deprecated option is set to Y, the
599           unified device tree is split into a bus device tree at
600           /sys/devices/ and several individual class device trees at
601           /sys/class/. The class and bus devices will be connected by
602           "<subsystem>:<name>" and the "device" links. The "block"
603           class devices, will not show up in /sys/class/block/. Some
604           subsystems will suppress the creation of some devices which
605           depend on the unified device tree.
606
607           This option is not a pure compatibility option that can
608           be safely enabled on newer distributions. It will change the
609           layout of sysfs to the non-extensible deprecated version,
610           and disable some features, which can not be exported without
611           confusing older userspace tools. Since 2007/2008 all major
612           distributions do not enable this option, and ship no tools which
613           depend on the deprecated layout or this option.
614
615           If you are using a new kernel on an older distribution, or use
616           older userspace tools, you might need to say Y here. Do not say Y,
617           if the original kernel, that came with your distribution, has
618           this option set to N.
619
620 config RELAY
621         bool "Kernel->user space relay support (formerly relayfs)"
622         help
623           This option enables support for relay interface support in
624           certain file systems (such as debugfs).
625           It is designed to provide an efficient mechanism for tools and
626           facilities to relay large amounts of data from kernel space to
627           user space.
628
629           If unsure, say N.
630
631 config NAMESPACES
632         bool "Namespaces support" if EMBEDDED
633         default !EMBEDDED
634         help
635           Provides the way to make tasks work with different objects using
636           the same id. For example same IPC id may refer to different objects
637           or same user id or pid may refer to different tasks when used in
638           different namespaces.
639
640 config UTS_NS
641         bool "UTS namespace"
642         depends on NAMESPACES
643         help
644           In this namespace tasks see different info provided with the
645           uname() system call
646
647 config IPC_NS
648         bool "IPC namespace"
649         depends on NAMESPACES && (SYSVIPC || POSIX_MQUEUE)
650         help
651           In this namespace tasks work with IPC ids which correspond to
652           different IPC objects in different namespaces.
653
654 config USER_NS
655         bool "User namespace (EXPERIMENTAL)"
656         depends on NAMESPACES && EXPERIMENTAL
657         help
658           This allows containers, i.e. vservers, to use user namespaces
659           to provide different user info for different servers.
660           If unsure, say N.
661
662 config PID_NS
663         bool "PID Namespaces (EXPERIMENTAL)"
664         default n
665         depends on NAMESPACES && EXPERIMENTAL
666         help
667           Support process id namespaces.  This allows having multiple
668           processes with the same pid as long as they are in different
669           pid namespaces.  This is a building block of containers.
670
671           Unless you want to work with an experimental feature
672           say N here.
673
674 config NET_NS
675         bool "Network namespace"
676         default n
677         depends on NAMESPACES && EXPERIMENTAL && NET
678         help
679           Allow user space to create what appear to be multiple instances
680           of the network stack.
681
682 config BLK_DEV_INITRD
683         bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
684         depends on BROKEN || !FRV
685         help
686           The initial RAM filesystem is a ramfs which is loaded by the
687           boot loader (loadlin or lilo) and that is mounted as root
688           before the normal boot procedure. It is typically used to
689           load modules needed to mount the "real" root file system,
690           etc. See <file:Documentation/initrd.txt> for details.
691
692           If RAM disk support (BLK_DEV_RAM) is also included, this
693           also enables initial RAM disk (initrd) support and adds
694           15 Kbytes (more on some other architectures) to the kernel size.
695
696           If unsure say Y.
697
698 if BLK_DEV_INITRD
699
700 source "usr/Kconfig"
701
702 endif
703
704 config CC_OPTIMIZE_FOR_SIZE
705         bool "Optimize for size"
706         default y
707         help
708           Enabling this option will pass "-Os" instead of "-O2" to gcc
709           resulting in a smaller kernel.
710
711           If unsure, say Y.
712
713 config SYSCTL
714         bool
715
716 config ANON_INODES
717         bool
718
719 config PANIC_TIMEOUT
720         int "Default panic timeout"
721         default 0
722         help
723           Set default panic timeout.
724
725 menuconfig EMBEDDED
726         bool "Configure standard kernel features (for small systems)"
727         help
728           This option allows certain base kernel options and settings
729           to be disabled or tweaked. This is for specialized
730           environments which can tolerate a "non-standard" kernel.
731           Only use this if you really know what you are doing.
732
733 config UID16
734         bool "Enable 16-bit UID system calls" if EMBEDDED
735         depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
736         default y
737         help
738           This enables the legacy 16-bit UID syscall wrappers.
739
740 config SYSCTL_SYSCALL
741         bool "Sysctl syscall support" if EMBEDDED
742         default y
743         select SYSCTL
744         ---help---
745           sys_sysctl uses binary paths that have been found challenging
746           to properly maintain and use.  The interface in /proc/sys
747           using paths with ascii names is now the primary path to this
748           information.
749
750           Almost nothing using the binary sysctl interface so if you are
751           trying to save some space it is probably safe to disable this,
752           making your kernel marginally smaller.
753
754           If unsure say Y here.
755
756 config KALLSYMS
757          bool "Load all symbols for debugging/ksymoops" if EMBEDDED
758          default y
759          help
760            Say Y here to let the kernel print out symbolic crash information and
761            symbolic stack backtraces. This increases the size of the kernel
762            somewhat, as all symbols have to be loaded into the kernel image.
763
764 config KALLSYMS_ALL
765         bool "Include all symbols in kallsyms"
766         depends on DEBUG_KERNEL && KALLSYMS
767         help
768            Normally kallsyms only contains the symbols of functions, for nicer
769            OOPS messages.  Some debuggers can use kallsyms for other
770            symbols too: say Y here to include all symbols, if you need them 
771            and you don't care about adding 300k to the size of your kernel.
772
773            Say N.
774
775 config KALLSYMS_EXTRA_PASS
776         bool "Do an extra kallsyms pass"
777         depends on KALLSYMS
778         help
779            If kallsyms is not working correctly, the build will fail with
780            inconsistent kallsyms data.  If that occurs, log a bug report and
781            turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
782            Always say N here unless you find a bug in kallsyms, which must be
783            reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
784            you wait for kallsyms to be fixed.
785
786
787 config HOTPLUG
788         bool "Support for hot-pluggable devices" if EMBEDDED
789         default y
790         help
791           This option is provided for the case where no hotplug or uevent
792           capabilities is wanted by the kernel.  You should only consider
793           disabling this option for embedded systems that do not use modules, a
794           dynamic /dev tree, or dynamic device discovery.  Just say Y.
795
796 config PRINTK
797         default y
798         bool "Enable support for printk" if EMBEDDED
799         help
800           This option enables normal printk support. Removing it
801           eliminates most of the message strings from the kernel image
802           and makes the kernel more or less silent. As this makes it
803           very difficult to diagnose system problems, saying N here is
804           strongly discouraged.
805
806 config BUG
807         bool "BUG() support" if EMBEDDED
808         default y
809         help
810           Disabling this option eliminates support for BUG and WARN, reducing
811           the size of your kernel image and potentially quietly ignoring
812           numerous fatal conditions. You should only consider disabling this
813           option for embedded systems with no facilities for reporting errors.
814           Just say Y.
815
816 config ELF_CORE
817         default y
818         bool "Enable ELF core dumps" if EMBEDDED
819         help
820           Enable support for generating core dumps. Disabling saves about 4k.
821
822 config PCSPKR_PLATFORM
823         bool "Enable PC-Speaker support" if EMBEDDED
824         depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
825         default y
826         help
827           This option allows to disable the internal PC-Speaker
828           support, saving some memory.
829
830 config BASE_FULL
831         default y
832         bool "Enable full-sized data structures for core" if EMBEDDED
833         help
834           Disabling this option reduces the size of miscellaneous core
835           kernel data structures. This saves memory on small machines,
836           but may reduce performance.
837
838 config FUTEX
839         bool "Enable futex support" if EMBEDDED
840         default y
841         select RT_MUTEXES
842         help
843           Disabling this option will cause the kernel to be built without
844           support for "fast userspace mutexes".  The resulting kernel may not
845           run glibc-based applications correctly.
846
847 config EPOLL
848         bool "Enable eventpoll support" if EMBEDDED
849         default y
850         select ANON_INODES
851         help
852           Disabling this option will cause the kernel to be built without
853           support for epoll family of system calls.
854
855 config SIGNALFD
856         bool "Enable signalfd() system call" if EMBEDDED
857         select ANON_INODES
858         default y
859         help
860           Enable the signalfd() system call that allows to receive signals
861           on a file descriptor.
862
863           If unsure, say Y.
864
865 config TIMERFD
866         bool "Enable timerfd() system call" if EMBEDDED
867         select ANON_INODES
868         default y
869         help
870           Enable the timerfd() system call that allows to receive timer
871           events on a file descriptor.
872
873           If unsure, say Y.
874
875 config EVENTFD
876         bool "Enable eventfd() system call" if EMBEDDED
877         select ANON_INODES
878         default y
879         help
880           Enable the eventfd() system call that allows to receive both
881           kernel notification (ie. KAIO) or userspace notifications.
882
883           If unsure, say Y.
884
885 config SHMEM
886         bool "Use full shmem filesystem" if EMBEDDED
887         default y
888         depends on MMU
889         help
890           The shmem is an internal filesystem used to manage shared memory.
891           It is backed by swap and manages resource limits. It is also exported
892           to userspace as tmpfs if TMPFS is enabled. Disabling this
893           option replaces shmem and tmpfs with the much simpler ramfs code,
894           which may be appropriate on small systems without swap.
895
896 config ASHMEM
897         bool "Enable the Anonymous Shared Memory Subsystem"
898         default n
899         depends on SHMEM || TINY_SHMEM
900         help
901           The ashmem subsystem is a new shared memory allocator, similar to
902           POSIX SHM but with different behavior and sporting a simpler
903           file-based API.
904
905 config AIO
906         bool "Enable AIO support" if EMBEDDED
907         default y
908         help
909           This option enables POSIX asynchronous I/O which may by used
910           by some high performance threaded applications. Disabling
911           this option saves about 7k.
912
913 config HAVE_PERF_EVENTS
914         bool
915         help
916           See tools/perf/design.txt for details.
917
918 config PERF_USE_VMALLOC
919         bool
920         help
921           See tools/perf/design.txt for details
922
923 menu "Kernel Performance Events And Counters"
924
925 config PERF_EVENTS
926         bool "Kernel performance events and counters"
927         default y if (PROFILING || PERF_COUNTERS)
928         depends on HAVE_PERF_EVENTS
929         select ANON_INODES
930         help
931           Enable kernel support for various performance events provided
932           by software and hardware.
933
934           Software events are supported either built-in or via the
935           use of generic tracepoints.
936
937           Most modern CPUs support performance events via performance
938           counter registers. These registers count the number of certain
939           types of hw events: such as instructions executed, cachemisses
940           suffered, or branches mis-predicted - without slowing down the
941           kernel or applications. These registers can also trigger interrupts
942           when a threshold number of events have passed - and can thus be
943           used to profile the code that runs on that CPU.
944
945           The Linux Performance Event subsystem provides an abstraction of
946           these software and hardware event capabilities, available via a
947           system call and used by the "perf" utility in tools/perf/. It
948           provides per task and per CPU counters, and it provides event
949           capabilities on top of those.
950
951           Say Y if unsure.
952
953 config EVENT_PROFILE
954         bool "Tracepoint profiling sources"
955         depends on PERF_EVENTS && EVENT_TRACING
956         default y
957         help
958          Allow the use of tracepoints as software performance events.
959
960          When this is enabled, you can create perf events based on
961          tracepoints using PERF_TYPE_TRACEPOINT and the tracepoint ID
962          found in debugfs://tracing/events/*/*/id. (The -e/--events
963          option to the perf tool can parse and interpret symbolic
964          tracepoints, in the subsystem:tracepoint_name format.)
965
966 config PERF_COUNTERS
967         bool "Kernel performance counters (old config option)"
968         depends on HAVE_PERF_EVENTS
969         help
970           This config has been obsoleted by the PERF_EVENTS
971           config option - please see that one for details.
972
973           It has no effect on the kernel whether you enable
974           it or not, it is a compatibility placeholder.
975
976           Say N if unsure.
977
978 config DEBUG_PERF_USE_VMALLOC
979         default n
980         bool "Debug: use vmalloc to back perf mmap() buffers"
981         depends on PERF_EVENTS && DEBUG_KERNEL
982         select PERF_USE_VMALLOC
983         help
984          Use vmalloc memory to back perf mmap() buffers.
985
986          Mostly useful for debugging the vmalloc code on platforms
987          that don't require it.
988
989          Say N if unsure.
990
991 endmenu
992
993 config VM_EVENT_COUNTERS
994         default y
995         bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
996         help
997           VM event counters are needed for event counts to be shown.
998           This option allows the disabling of the VM event counters
999           on EMBEDDED systems.  /proc/vmstat will only show page counts
1000           if VM event counters are disabled.
1001
1002 config PCI_QUIRKS
1003         default y
1004         bool "Enable PCI quirk workarounds" if EMBEDDED
1005         depends on PCI
1006         help
1007           This enables workarounds for various PCI chipset
1008           bugs/quirks. Disable this only if your target machine is
1009           unaffected by PCI quirks.
1010
1011 config SLUB_DEBUG
1012         default y
1013         bool "Enable SLUB debugging support" if EMBEDDED
1014         depends on SLUB && SYSFS
1015         help
1016           SLUB has extensive debug support features. Disabling these can
1017           result in significant savings in code size. This also disables
1018           SLUB sysfs support. /sys/slab will not exist and there will be
1019           no support for cache validation etc.
1020
1021 config COMPAT_BRK
1022         bool "Disable heap randomization"
1023         default y
1024         help
1025           Randomizing heap placement makes heap exploits harder, but it
1026           also breaks ancient binaries (including anything libc5 based).
1027           This option changes the bootup default to heap randomization
1028           disabled, and can be overridden at runtime by setting
1029           /proc/sys/kernel/randomize_va_space to 2.
1030
1031           On non-ancient distros (post-2000 ones) N is usually a safe choice.
1032
1033 choice
1034         prompt "Choose SLAB allocator"
1035         default SLUB
1036         help
1037            This option allows to select a slab allocator.
1038
1039 config SLAB
1040         bool "SLAB"
1041         help
1042           The regular slab allocator that is established and known to work
1043           well in all environments. It organizes cache hot objects in
1044           per cpu and per node queues.
1045
1046 config SLUB
1047         depends on BROKEN || NUMA || !DISCONTIGMEM
1048         bool "SLUB (Unqueued Allocator)"
1049         help
1050            SLUB is a slab allocator that minimizes cache line usage
1051            instead of managing queues of cached objects (SLAB approach).
1052            Per cpu caching is realized using slabs of objects instead
1053            of queues of objects. SLUB can use memory efficiently
1054            and has enhanced diagnostics. SLUB is the default choice for
1055            a slab allocator.
1056
1057 config SLOB
1058         depends on EMBEDDED
1059         bool "SLOB (Simple Allocator)"
1060         help
1061            SLOB replaces the stock allocator with a drastically simpler
1062            allocator. SLOB is generally more space efficient but
1063            does not perform as well on large systems.
1064
1065 endchoice
1066
1067 config PROFILING
1068         bool "Profiling support (EXPERIMENTAL)"
1069         help
1070           Say Y here to enable the extended profiling support mechanisms used
1071           by profilers such as OProfile.
1072
1073 #
1074 # Place an empty function call at each tracepoint site. Can be
1075 # dynamically changed for a probe function.
1076 #
1077 config TRACEPOINTS
1078         bool
1079
1080 source "arch/Kconfig"
1081
1082 config SLOW_WORK
1083         default n
1084         bool
1085         help
1086           The slow work thread pool provides a number of dynamically allocated
1087           threads that can be used by the kernel to perform operations that
1088           take a relatively long time.
1089
1090           An example of this would be CacheFiles doing a path lookup followed
1091           by a series of mkdirs and a create call, all of which have to touch
1092           disk.
1093
1094           See Documentation/slow-work.txt.
1095
1096 config SLOW_WORK_DEBUG
1097         bool "Slow work debugging through debugfs"
1098         default n
1099         depends on SLOW_WORK && DEBUG_FS
1100         help
1101           Display the contents of the slow work run queue through debugfs,
1102           including items currently executing.
1103
1104           See Documentation/slow-work.txt.
1105
1106 endmenu         # General setup
1107
1108 config HAVE_GENERIC_DMA_COHERENT
1109         bool
1110         default n
1111
1112 config SLABINFO
1113         bool
1114         depends on PROC_FS
1115         depends on SLAB || SLUB_DEBUG
1116         default y
1117
1118 config RT_MUTEXES
1119         boolean
1120
1121 config BASE_SMALL
1122         int
1123         default 0 if BASE_FULL
1124         default 1 if !BASE_FULL
1125
1126 menuconfig MODULES
1127         bool "Enable loadable module support"
1128         help
1129           Kernel modules are small pieces of compiled code which can
1130           be inserted in the running kernel, rather than being
1131           permanently built into the kernel.  You use the "modprobe"
1132           tool to add (and sometimes remove) them.  If you say Y here,
1133           many parts of the kernel can be built as modules (by
1134           answering M instead of Y where indicated): this is most
1135           useful for infrequently used options which are not required
1136           for booting.  For more information, see the man pages for
1137           modprobe, lsmod, modinfo, insmod and rmmod.
1138
1139           If you say Y here, you will need to run "make
1140           modules_install" to put the modules under /lib/modules/
1141           where modprobe can find them (you may need to be root to do
1142           this).
1143
1144           If unsure, say Y.
1145
1146 if MODULES
1147
1148 config MODULE_FORCE_LOAD
1149         bool "Forced module loading"
1150         default n
1151         help
1152           Allow loading of modules without version information (ie. modprobe
1153           --force).  Forced module loading sets the 'F' (forced) taint flag and
1154           is usually a really bad idea.
1155
1156 config MODULE_UNLOAD
1157         bool "Module unloading"
1158         help
1159           Without this option you will not be able to unload any
1160           modules (note that some modules may not be unloadable
1161           anyway), which makes your kernel smaller, faster
1162           and simpler.  If unsure, say Y.
1163
1164 config MODULE_FORCE_UNLOAD
1165         bool "Forced module unloading"
1166         depends on MODULE_UNLOAD && EXPERIMENTAL
1167         help
1168           This option allows you to force a module to unload, even if the
1169           kernel believes it is unsafe: the kernel will remove the module
1170           without waiting for anyone to stop using it (using the -f option to
1171           rmmod).  This is mainly for kernel developers and desperate users.
1172           If unsure, say N.
1173
1174 config MODVERSIONS
1175         bool "Module versioning support"
1176         help
1177           Usually, you have to use modules compiled with your kernel.
1178           Saying Y here makes it sometimes possible to use modules
1179           compiled for different kernels, by adding enough information
1180           to the modules to (hopefully) spot any changes which would
1181           make them incompatible with the kernel you are running.  If
1182           unsure, say N.
1183
1184 config MODULE_SRCVERSION_ALL
1185         bool "Source checksum for all modules"
1186         help
1187           Modules which contain a MODULE_VERSION get an extra "srcversion"
1188           field inserted into their modinfo section, which contains a
1189           sum of the source files which made it.  This helps maintainers
1190           see exactly which source was used to build a module (since
1191           others sometimes change the module source without updating
1192           the version).  With this option, such a "srcversion" field
1193           will be created for all modules.  If unsure, say N.
1194
1195 endif # MODULES
1196
1197 config INIT_ALL_POSSIBLE
1198         bool
1199         help
1200           Back when each arch used to define their own cpu_online_map and
1201           cpu_possible_map, some of them chose to initialize cpu_possible_map
1202           with all 1s, and others with all 0s.  When they were centralised,
1203           it was better to provide this option than to break all the archs
1204           and have several arch maintainers pursuing me down dark alleys.
1205
1206 config STOP_MACHINE
1207         bool
1208         default y
1209         depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1210         help
1211           Need stop_machine() primitive.
1212
1213 source "block/Kconfig"
1214
1215 config PREEMPT_NOTIFIERS
1216         bool
1217