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