This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / init / Kconfig
1 menu "Code maturity level options"
2
3 config EXPERIMENTAL
4         bool "Prompt for development and/or incomplete code/drivers"
5         ---help---
6           Some of the various things that Linux supports (such as network
7           drivers, file systems, network protocols, etc.) can be in a state
8           of development where the functionality, stability, or the level of
9           testing is not yet high enough for general use. This is usually
10           known as the "alpha-test" phase among developers. If a feature is
11           currently in alpha-test, then the developers usually discourage
12           uninformed widespread use of this feature by the general public to
13           avoid "Why doesn't this work?" type mail messages. However, active
14           testing and use of these systems is welcomed. Just be aware that it
15           may not meet the normal level of reliability or it may fail to work
16           in some special cases. Detailed bug reports from people familiar
17           with the kernel internals are usually welcomed by the developers
18           (before submitting bug reports, please read the documents
19           <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
20           <file:Documentation/BUG-HUNTING>, and
21           <file:Documentation/oops-tracing.txt> in the kernel source).
22
23           This option will also make obsoleted drivers available. These are
24           drivers that have been replaced by something else, and/or are
25           scheduled to be removed in a future kernel release.
26
27           Unless you intend to help test and develop a feature or driver that
28           falls into this category, or you have a situation that requires
29           using these features, you should probably say N here, which will
30           cause the configurator to present you with fewer choices. If
31           you say Y here, you will be offered the choice of using features or
32           drivers that are currently considered to be in the alpha-test phase.
33
34 config CLEAN_COMPILE
35         bool "Select only drivers expected to compile cleanly" if EXPERIMENTAL
36         default y
37         help
38           Select this option if you don't even want to see the option
39           to configure known-broken drivers.
40
41           If unsure, say Y
42
43 config BROKEN
44         bool
45         depends on !CLEAN_COMPILE
46         default y
47
48 config BROKEN_ON_SMP
49         bool
50         depends on BROKEN || !SMP
51         default y
52
53 endmenu
54
55 menu "General setup"
56
57 config LOCALVERSION
58         string "Local version - append to kernel release"
59         help
60           Append an extra string to the end of your kernel version.
61           This will show up when you type uname, for example.
62           The string you set here will be appended after the contents of
63           any files with a filename matching localversion* in your
64           object and source tree, in that order.  Your total string can
65           be a maximum of 64 characters.
66
67 config SWAP
68         bool "Support for paging of anonymous memory (swap)"
69         depends on MMU
70         default y
71         help
72           This option allows you to choose whether you want to have support
73           for socalled swap devices or swap files in your kernel that are
74           used to provide more virtual memory than the actual RAM present
75           in your computer.  If unsure say Y.
76
77 config SYSVIPC
78         bool "System V IPC"
79         depends on MMU
80         ---help---
81           Inter Process Communication is a suite of library functions and
82           system calls which let processes (running programs) synchronize and
83           exchange information. It is generally considered to be a good thing,
84           and some programs won't run unless you say Y here. In particular, if
85           you want to run the DOS emulator dosemu under Linux (read the
86           DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
87           you'll need to say Y here.
88           DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
89           you'll need to say Y here.
90
91           You can find documentation about IPC with "info ipc" and also in
92           section 6.4 of the Linux Programmer's Guide, available from
93           <http://www.tldp.org/guides.html>.
94
95 config POSIX_MQUEUE
96         bool "POSIX Message Queues"
97         depends on NET && EXPERIMENTAL
98         ---help---
99           POSIX variant of message queues is a part of IPC. In POSIX message
100           queues every message has a priority which decides about succession
101           of receiving it by a process. If you want to compile and run
102           programs written e.g. for Solaris with use of its POSIX message
103           queues (functions mq_*) say Y here. To use this feature you will
104           also need mqueue library, available from
105           <http://www.mat.uni.torun.pl/~wrona/posix_ipc/>
106
107           POSIX message queues are visible as a filesystem called 'mqueue'
108           and can be mounted somewhere if you want to do filesystem
109           operations on message queues.
110
111           If unsure, say Y.
112
113 config BSD_PROCESS_ACCT
114         bool "BSD Process Accounting"
115         help
116           If you say Y here, a user level program will be able to instruct the
117           kernel (via a special system call) to write process accounting
118           information to a file: whenever a process exits, information about
119           that process will be appended to the file by the kernel.  The
120           information includes things such as creation time, owning user,
121           command name, memory usage, controlling terminal etc. (the complete
122           list is in the struct acct in <file:include/linux/acct.h>).  It is
123           up to the user level program to do useful things with this
124           information.  This is generally a good idea, so say Y.
125
126 config BSD_PROCESS_ACCT_V3
127         bool "BSD Process Accounting version 3 file format"
128         depends on BSD_PROCESS_ACCT
129         default n
130         help
131           If you say Y here, the process accounting information is written
132           in a new file format that also logs the process IDs of each
133           process and it's parent. Note that this file format is incompatible
134           with previous v0/v1/v2 file formats, so you will need updated tools
135           for processing it. A preliminary version of these tools is available
136           at <http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/>.
137
138 menu "Class Based Kernel Resource Management"
139
140 config CKRM
141         bool "Class Based Kernel Resource Management Core"
142         depends on EXPERIMENTAL
143         help
144           Class-based Kernel Resource Management is a framework for controlling
145           and monitoring resource allocation of user-defined groups of tasks or
146           incoming socket connections. For more information, please visit
147           http://ckrm.sf.net. 
148
149           If you say Y here, enable the Resource Class File System and atleast
150           one of the resource controllers below. Say N if you are unsure. 
151
152 config RCFS_FS
153        tristate "Resource Class File System (User API)"
154        depends on CKRM
155        help
156           RCFS is the filesystem API for CKRM. This separate configuration 
157           option is provided only for debugging and will eventually disappear 
158           since rcfs will be automounted whenever CKRM is configured. 
159
160           Say N if unsure, Y if you've enabled CKRM, M to debug rcfs 
161           initialization.
162
163 config CKRM_TYPE_TASKCLASS
164         bool "Class Manager for Task Groups"
165         depends on CKRM
166         help
167           TASKCLASS provides the extensions for CKRM to track task classes
168           This is the base to enable task class based resource control for
169           cpu, memory and disk I/O.
170         
171           Say N if unsure 
172
173 config CKRM_RES_NUMTASKS
174         tristate "Number of Tasks Resource Manager"
175         depends on CKRM_TYPE_TASKCLASS
176         default m
177         help
178           Provides a Resource Controller for CKRM that allows limiting no of
179           tasks a task class can have.
180         
181           Say N if unsure, Y to use the feature.
182
183 config CKRM_CPU_SCHEDULE
184         bool "CKRM CPU scheduler"
185         depends on CKRM_TYPE_TASKCLASS
186         default y
187         help
188           Use CKRM CPU scheduler instead of Linux Scheduler
189         
190           Say N if unsure, Y to use the feature.
191
192 config CKRM_RES_BLKIO
193         tristate " Disk I/O Resource Controller"
194         depends on CKRM_TYPE_TASKCLASS && IOSCHED_CFQ
195         default m
196         help
197           Provides a resource controller for best-effort block I/O 
198           bandwidth control. The controller attempts this by proportional 
199           servicing of requests in the I/O scheduler. However, seek
200           optimizations and reordering by device drivers/disk controllers may
201           alter the actual bandwidth delivered to a class.
202         
203           Say N if unsure, Y to use the feature.
204
205 config CKRM_RES_MEM
206         bool "Class based physical memory controller"
207         default y
208         depends on CKRM
209         help
210           Provide the basic support for collecting physical memory usage information
211           among classes. Say Y if you want to know the memory usage of each class.
212
213 config CKRM_MEM_LRUORDER_CHANGE
214         bool "Change the LRU ordering of scanned pages"
215         default n
216         depends on CKRM_RES_MEM
217         help
218           While trying to free pages, by default(n), scanned pages are left were they
219           are found if they belong to relatively under-used class. In this case the
220           LRU ordering of the memory subsystemis left intact. If this option is chosen,
221           then the scanned pages are moved to the tail of the list(active or inactive).
222           Changing this to yes reduces the checking overhead but violates the approximate
223           LRU order that is maintained by the paging subsystem.
224
225 config CKRM_CPU_SCHEDULE_AT_BOOT
226         bool "Turn on at boot time"
227         depends on CKRM_CPU_SCHEDULE
228         default n
229         help
230           Enable CKRM CPU Scheduler at boot time. Otherwise
231           it can be turned on dynamically at runtime. If not
232           turned on the default Linux Scheduler behavior 
233           will be obtained.
234
235           Say N if unsure, Y to use this feature
236
237 config CKRM_TYPE_SOCKETCLASS
238         bool "Class Manager for socket groups"
239         depends on CKRM
240         help
241           SOCKET provides the extensions for CKRM to track per socket
242           classes.  This is the base to enable socket based resource 
243           control for inbound connection control, bandwidth control etc.
244         
245           Say N if unsure.  
246
247 config CKRM_RES_LISTENAQ
248         tristate "Multiple Accept Queues Resource Manager"
249         depends on CKRM_TYPE_SOCKETCLASS && ACCEPT_QUEUES
250         default m
251         help
252           Provides a  resource controller for CKRM to prioritize inbound
253           connection requests. See inbound control description for
254           "IP: TCP Multiple accept queues support". If you choose that
255           option choose this option to control the queue weights.
256  
257           If unsure, say N.
258
259 config CKRM_RBCE
260         tristate "Vanilla Rule-based Classification Engine (RBCE)"
261         depends on CKRM && RCFS_FS
262         default m
263         help
264           Provides an optional module to support creation of rules for automatic
265           classification of kernel objects. Rules are created/deleted/modified 
266           through an rcfs interface. RBCE is not required for CKRM. 
267  
268           If unsure, say N.
269
270 config CKRM_CRBCE
271         tristate "Enhanced Rule-based Classification Engine (RBCE)"
272         depends on CKRM && RCFS_FS && RELAYFS_FS && DELAY_ACCT
273         default m
274         help
275           Provides an optional module to support creation of rules for automatic
276           classification of kernel objects, just like RBCE above. In addition,
277           CRBCE provides per-process delay data (requires DELAY_ACCT configured)
278           enabled) and makes information on significant kernel events available
279           to userspace tools through relayfs (requires RELAYFS_FS configured). 
280         
281           If unsure, say N.
282
283 endmenu
284
285 config SYSCTL
286         bool "Sysctl support"
287         ---help---
288           The sysctl interface provides a means of dynamically changing
289           certain kernel parameters and variables on the fly without requiring
290           a recompile of the kernel or reboot of the system.  The primary
291           interface consists of a system call, but if you say Y to "/proc
292           file system support", a tree of modifiable sysctl entries will be
293           generated beneath the /proc/sys directory. They are explained in the
294           files in <file:Documentation/sysctl/>.  Note that enabling this
295           option will enlarge the kernel by at least 8 KB.
296
297           As it is generally a good thing, you should say Y here unless
298           building a kernel for install/rescue disks or your system is very
299           limited in memory.
300
301 config AUDIT
302         bool "Auditing support"
303         default y if SECURITY_SELINUX
304         default n
305         help
306           Enable auditing infrastructure that can be used with another
307           kernel subsystem, such as SELinux (which requires this for
308           logging of avc messages output).  Does not do system-call
309           auditing without CONFIG_AUDITSYSCALL.
310
311 config AUDITSYSCALL
312         bool "Enable system-call auditing support"
313         depends on AUDIT && (X86 || PPC64 || ARCH_S390 || IA64)
314         default y if SECURITY_SELINUX
315         default n
316         help
317           Enable low-overhead system-call auditing infrastructure that
318           can be used independently or with another kernel subsystem,
319           such as SELinux.
320
321 config LOG_BUF_SHIFT
322         int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" if DEBUG_KERNEL
323         range 12 20
324         default 17 if ARCH_S390
325         default 16 if X86_NUMAQ || IA64
326         default 15 if SMP
327         default 14
328         help
329           Select kernel log buffer size as a power of 2.
330           Defaults and Examples:
331                      17 => 128 KB for S/390
332                      16 => 64 KB for x86 NUMAQ or IA-64
333                      15 => 32 KB for SMP
334                      14 => 16 KB for uniprocessor
335                      13 =>  8 KB
336                      12 =>  4 KB
337
338 config HOTPLUG
339         bool "Support for hot-pluggable devices" if !ARCH_S390
340         default ARCH_S390
341         help
342           Say Y here if you want to plug devices into your computer while
343           the system is running, and be able to use them quickly.  In many
344           cases, the devices can likewise be unplugged at any time too.
345
346           One well known example of this is PCMCIA- or PC-cards, credit-card
347           size devices such as network cards, modems or hard drives which are
348           plugged into slots found on all modern laptop computers.  Another
349           example, used on modern desktops as well as laptops, is USB.
350
351           Enable HOTPLUG and KMOD, and build a modular kernel.  Get agent
352           software (at <http://linux-hotplug.sourceforge.net/>) and install it.
353           Then your kernel will automatically call out to a user mode "policy
354           agent" (/sbin/hotplug) to load modules and set up software needed
355           to use devices as you hotplug them.
356
357 config IKCONFIG
358         bool "Kernel .config support"
359         ---help---
360           This option enables the complete Linux kernel ".config" file
361           contents to be saved in the kernel. It provides documentation
362           of which kernel options are used in a running kernel or in an
363           on-disk kernel.  This information can be extracted from the kernel
364           image file with the script scripts/extract-ikconfig and used as
365           input to rebuild the current kernel or to build another kernel.
366           It can also be extracted from a running kernel by reading
367           /proc/config.gz if enabled (below).
368
369 config IKCONFIG_PROC
370         bool "Enable access to .config through /proc/config.gz"
371         depends on IKCONFIG && PROC_FS
372         ---help---
373           This option enables access to the kernel configuration file
374           through /proc/config.gz.
375
376 config OOM_PANIC
377         bool "OOM Panic"
378         default y
379         ---help---
380           This option enables panic() to be called when a system is out of
381           memory. This feature along with /proc/sys/kernel/panic allows a
382           different behavior on out-of-memory conditions when the standard
383           behavior (killing processes in an attempt to recover) does not
384           make sense.
385
386           If unsure, say N.
387
388 config OOM_KILL
389         bool
390         depends on !OOM_PANIC
391         default y
392
393 menuconfig EMBEDDED
394         bool "Configure standard kernel features (for small systems)"
395         help
396           This option allows certain base kernel options and settings
397           to be disabled or tweaked. This is for specialized
398           environments which can tolerate a "non-standard" kernel.
399           Only use this if you really know what you are doing.
400
401 config DELAY_ACCT
402         bool "Enable delay accounting (EXPERIMENTAL)"
403         help
404           In addition to counting frequency the total delay in ns is also
405           recorded. CPU delays are specified as cpu-wait and cpu-run. 
406           I/O delays are recorded for memory and regular I/O.
407           Information is accessible through /proc/<pid>/delay.
408
409
410 config KALLSYMS
411          bool "Load all symbols for debugging/kksymoops" if EMBEDDED
412          default y
413          help
414            Say Y here to let the kernel print out symbolic crash information and
415            symbolic stack backtraces. This increases the size of the kernel
416            somewhat, as all symbols have to be loaded into the kernel image.
417
418 config KALLSYMS_ALL
419         bool "Include all symbols in kallsyms"
420         depends on DEBUG_KERNEL && KALLSYMS
421         help
422            Normally kallsyms only contains the symbols of functions, for nicer
423            OOPS messages.  Some debuggers can use kallsyms for other
424            symbols too: say Y here to include all symbols, and you
425            don't care about adding 300k to the size of your kernel.
426
427            Say N.
428
429 config KALLSYMS_EXTRA_PASS
430         bool "Do an extra kallsyms pass"
431         depends on KALLSYMS
432         help
433            If kallsyms is not working correctly, the build will fail with
434            inconsistent kallsyms data.  If that occurs, log a bug report and
435            turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
436            Always say N here unless you find a bug in kallsyms, which must be
437            reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
438            you wait for kallsyms to be fixed.
439
440 config FUTEX
441         bool "Enable futex support" if EMBEDDED
442         default y
443         help
444           Disabling this option will cause the kernel to be built without
445           support for "fast userspace mutexes".  The resulting kernel may not
446           run glibc-based applications correctly.
447
448 config EPOLL
449         bool "Enable eventpoll support" if EMBEDDED
450         default y
451         help
452           Disabling this option will cause the kernel to be built without
453           support for epoll family of system calls.
454
455 source "drivers/block/Kconfig.iosched"
456
457 config CC_OPTIMIZE_FOR_SIZE
458         bool "Optimize for size"
459         default y if ARM || H8300
460         default n
461         help
462           Enabling this option will pass "-Os" instead of "-O2" to gcc
463           resulting in a smaller kernel.
464
465           WARNING: some versions of gcc may generate incorrect code with this
466           option.  If problems are observed, a gcc upgrade may be needed.
467
468           If unsure, say N.
469
470 config SHMEM
471         default y
472         bool "Use full shmem filesystem" if EMBEDDED && MMU
473         help
474           The shmem is an internal filesystem used to manage shared memory.
475           It is backed by swap and manages resource limits. It is also exported
476           to userspace as tmpfs if TMPFS is enabled. Disabling this
477           option replaces shmem and tmpfs with the much simpler ramfs code,
478           which may be appropriate on small systems without swap.
479
480 endmenu         # General setup
481
482 config TINY_SHMEM
483         default !SHMEM
484         bool
485
486 menu "Loadable module support"
487
488 config MODULES
489         bool "Enable loadable module support"
490         help
491           Kernel modules are small pieces of compiled code which can
492           be inserted in the running kernel, rather than being
493           permanently built into the kernel.  You use the "modprobe"
494           tool to add (and sometimes remove) them.  If you say Y here,
495           many parts of the kernel can be built as modules (by
496           answering M instead of Y where indicated): this is most
497           useful for infrequently used options which are not required
498           for booting.  For more information, see the man pages for
499           modprobe, lsmod, modinfo, insmod and rmmod.
500
501           If you say Y here, you will need to run "make
502           modules_install" to put the modules under /lib/modules/
503           where modprobe can find them (you may need to be root to do
504           this).
505
506           If unsure, say Y.
507
508 config MODULE_UNLOAD
509         bool "Module unloading"
510         depends on MODULES
511         help
512           Without this option you will not be able to unload any
513           modules (note that some modules may not be unloadable
514           anyway), which makes your kernel slightly smaller and
515           simpler.  If unsure, say Y.
516
517 config MODULE_FORCE_UNLOAD
518         bool "Forced module unloading"
519         depends on MODULE_UNLOAD && EXPERIMENTAL
520         help
521           This option allows you to force a module to unload, even if the
522           kernel believes it is unsafe: the kernel will remove the module
523           without waiting for anyone to stop using it (using the -f option to
524           rmmod).  This is mainly for kernel developers and desperate users.
525           If unsure, say N.
526
527 config OBSOLETE_MODPARM
528         bool
529         default y
530         depends on MODULES
531         help
532           You need this option to use module parameters on modules which
533           have not been converted to the new module parameter system yet.
534           If unsure, say Y.
535
536 config MODVERSIONS
537         bool "Module versioning support (EXPERIMENTAL)"
538         depends on MODULES && EXPERIMENTAL
539         help
540           Usually, you have to use modules compiled with your kernel.
541           Saying Y here makes it sometimes possible to use modules
542           compiled for different kernels, by adding enough information
543           to the modules to (hopefully) spot any changes which would
544           make them incompatible with the kernel you are running.  If
545           unsure, say N.
546
547 config MODULE_SIG
548         bool "Module signature verification (EXPERIMENTAL)"
549         depends on MODULES && EXPERIMENTAL
550         select CRYPTO
551         select CRYPTO_SHA1
552         select CRYPTO_SIGNATURE
553         help
554           Check modules for valid signatures upon load.
555
556 config MODULE_SIG_FORCE
557         bool "Required modules to be validly signed (EXPERIMENTAL)"
558         depends on MODULE_SIG
559         help
560           Reject unsigned modules or signed modules for which we don't have a
561           key.
562
563 config KMOD
564         bool "Automatic kernel module loading"
565         depends on MODULES
566         help
567           Normally when you have selected some parts of the kernel to
568           be created as kernel modules, you must load them (using the
569           "modprobe" command) before you can use them. If you say Y
570           here, some parts of the kernel will be able to load modules
571           automatically: when a part of the kernel needs a module, it
572           runs modprobe with the appropriate arguments, thereby
573           loading the module if it is available.  If unsure, say Y.
574
575 config STOP_MACHINE
576         bool
577         default y
578         depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
579         help
580           Need stop_machine() primitive.
581 endmenu