Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[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
940 menu "Performance Counters"
941
942 config PERF_COUNTERS
943         bool "Kernel Performance Counters"
944         depends on HAVE_PERF_COUNTERS
945         select ANON_INODES
946         help
947           Enable kernel support for performance counter hardware.
948
949           Performance counters are special hardware registers available
950           on most modern CPUs. These registers count the number of certain
951           types of hw events: such as instructions executed, cachemisses
952           suffered, or branches mis-predicted - without slowing down the
953           kernel or applications. These registers can also trigger interrupts
954           when a threshold number of events have passed - and can thus be
955           used to profile the code that runs on that CPU.
956
957           The Linux Performance Counter subsystem provides an abstraction of
958           these hardware capabilities, available via a system call. It
959           provides per task and per CPU counters, and it provides event
960           capabilities on top of those.
961
962           Say Y if unsure.
963
964 config EVENT_PROFILE
965         bool "Tracepoint profile sources"
966         depends on PERF_COUNTERS && EVENT_TRACER
967         default y
968
969 endmenu
970
971 config VM_EVENT_COUNTERS
972         default y
973         bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
974         help
975           VM event counters are needed for event counts to be shown.
976           This option allows the disabling of the VM event counters
977           on EMBEDDED systems.  /proc/vmstat will only show page counts
978           if VM event counters are disabled.
979
980 config PCI_QUIRKS
981         default y
982         bool "Enable PCI quirk workarounds" if EMBEDDED
983         depends on PCI
984         help
985           This enables workarounds for various PCI chipset
986           bugs/quirks. Disable this only if your target machine is
987           unaffected by PCI quirks.
988
989 config SLUB_DEBUG
990         default y
991         bool "Enable SLUB debugging support" if EMBEDDED
992         depends on SLUB && SYSFS
993         help
994           SLUB has extensive debug support features. Disabling these can
995           result in significant savings in code size. This also disables
996           SLUB sysfs support. /sys/slab will not exist and there will be
997           no support for cache validation etc.
998
999 config COMPAT_BRK
1000         bool "Disable heap randomization"
1001         default y
1002         help
1003           Randomizing heap placement makes heap exploits harder, but it
1004           also breaks ancient binaries (including anything libc5 based).
1005           This option changes the bootup default to heap randomization
1006           disabled, and can be overridden at runtime by setting
1007           /proc/sys/kernel/randomize_va_space to 2.
1008
1009           On non-ancient distros (post-2000 ones) N is usually a safe choice.
1010
1011 choice
1012         prompt "Choose SLAB allocator"
1013         default SLUB
1014         help
1015            This option allows to select a slab allocator.
1016
1017 config SLAB
1018         bool "SLAB"
1019         help
1020           The regular slab allocator that is established and known to work
1021           well in all environments. It organizes cache hot objects in
1022           per cpu and per node queues.
1023
1024 config SLUB
1025         bool "SLUB (Unqueued Allocator)"
1026         help
1027            SLUB is a slab allocator that minimizes cache line usage
1028            instead of managing queues of cached objects (SLAB approach).
1029            Per cpu caching is realized using slabs of objects instead
1030            of queues of objects. SLUB can use memory efficiently
1031            and has enhanced diagnostics. SLUB is the default choice for
1032            a slab allocator.
1033
1034 config SLOB
1035         depends on EMBEDDED
1036         bool "SLOB (Simple Allocator)"
1037         help
1038            SLOB replaces the stock allocator with a drastically simpler
1039            allocator. SLOB is generally more space efficient but
1040            does not perform as well on large systems.
1041
1042 endchoice
1043
1044 config PROFILING
1045         bool "Profiling support (EXPERIMENTAL)"
1046         help
1047           Say Y here to enable the extended profiling support mechanisms used
1048           by profilers such as OProfile.
1049
1050 #
1051 # Place an empty function call at each tracepoint site. Can be
1052 # dynamically changed for a probe function.
1053 #
1054 config TRACEPOINTS
1055         bool
1056
1057 config MARKERS
1058         bool "Activate markers"
1059         select TRACEPOINTS
1060         help
1061           Place an empty function call at each marker site. Can be
1062           dynamically changed for a probe function.
1063
1064 source "arch/Kconfig"
1065
1066 config SLOW_WORK
1067         default n
1068         bool
1069         help
1070           The slow work thread pool provides a number of dynamically allocated
1071           threads that can be used by the kernel to perform operations that
1072           take a relatively long time.
1073
1074           An example of this would be CacheFiles doing a path lookup followed
1075           by a series of mkdirs and a create call, all of which have to touch
1076           disk.
1077
1078           See Documentation/slow-work.txt.
1079
1080 endmenu         # General setup
1081
1082 config HAVE_GENERIC_DMA_COHERENT
1083         bool
1084         default n
1085
1086 config SLABINFO
1087         bool
1088         depends on PROC_FS
1089         depends on SLAB || SLUB_DEBUG
1090         default y
1091
1092 config RT_MUTEXES
1093         boolean
1094
1095 config BASE_SMALL
1096         int
1097         default 0 if BASE_FULL
1098         default 1 if !BASE_FULL
1099
1100 menuconfig MODULES
1101         bool "Enable loadable module support"
1102         help
1103           Kernel modules are small pieces of compiled code which can
1104           be inserted in the running kernel, rather than being
1105           permanently built into the kernel.  You use the "modprobe"
1106           tool to add (and sometimes remove) them.  If you say Y here,
1107           many parts of the kernel can be built as modules (by
1108           answering M instead of Y where indicated): this is most
1109           useful for infrequently used options which are not required
1110           for booting.  For more information, see the man pages for
1111           modprobe, lsmod, modinfo, insmod and rmmod.
1112
1113           If you say Y here, you will need to run "make
1114           modules_install" to put the modules under /lib/modules/
1115           where modprobe can find them (you may need to be root to do
1116           this).
1117
1118           If unsure, say Y.
1119
1120 if MODULES
1121
1122 config MODULE_FORCE_LOAD
1123         bool "Forced module loading"
1124         default n
1125         help
1126           Allow loading of modules without version information (ie. modprobe
1127           --force).  Forced module loading sets the 'F' (forced) taint flag and
1128           is usually a really bad idea.
1129
1130 config MODULE_UNLOAD
1131         bool "Module unloading"
1132         help
1133           Without this option you will not be able to unload any
1134           modules (note that some modules may not be unloadable
1135           anyway), which makes your kernel smaller, faster
1136           and simpler.  If unsure, say Y.
1137
1138 config MODULE_FORCE_UNLOAD
1139         bool "Forced module unloading"
1140         depends on MODULE_UNLOAD && EXPERIMENTAL
1141         help
1142           This option allows you to force a module to unload, even if the
1143           kernel believes it is unsafe: the kernel will remove the module
1144           without waiting for anyone to stop using it (using the -f option to
1145           rmmod).  This is mainly for kernel developers and desperate users.
1146           If unsure, say N.
1147
1148 config MODVERSIONS
1149         bool "Module versioning support"
1150         help
1151           Usually, you have to use modules compiled with your kernel.
1152           Saying Y here makes it sometimes possible to use modules
1153           compiled for different kernels, by adding enough information
1154           to the modules to (hopefully) spot any changes which would
1155           make them incompatible with the kernel you are running.  If
1156           unsure, say N.
1157
1158 config MODULE_SRCVERSION_ALL
1159         bool "Source checksum for all modules"
1160         help
1161           Modules which contain a MODULE_VERSION get an extra "srcversion"
1162           field inserted into their modinfo section, which contains a
1163           sum of the source files which made it.  This helps maintainers
1164           see exactly which source was used to build a module (since
1165           others sometimes change the module source without updating
1166           the version).  With this option, such a "srcversion" field
1167           will be created for all modules.  If unsure, say N.
1168
1169 endif # MODULES
1170
1171 config INIT_ALL_POSSIBLE
1172         bool
1173         help
1174           Back when each arch used to define their own cpu_online_map and
1175           cpu_possible_map, some of them chose to initialize cpu_possible_map
1176           with all 1s, and others with all 0s.  When they were centralised,
1177           it was better to provide this option than to break all the archs
1178           and have several arch maintainers pursuing me down dark alleys.
1179
1180 config STOP_MACHINE
1181         bool
1182         default y
1183         depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1184         help
1185           Need stop_machine() primitive.
1186
1187 source "block/Kconfig"
1188
1189 config PREEMPT_NOTIFIERS
1190         bool
1191