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