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