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