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