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