xref: /linux/init/Kconfig (revision 3ebe12439ba7fc62e1d6ecb569b7287771716ca1)
1config ARCH
2	string
3	option env="ARCH"
4
5config KERNELVERSION
6	string
7	option env="KERNELVERSION"
8
9config 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
19config CONSTRUCTORS
20	bool
21	depends on !UML
22	default y
23
24config HAVE_IRQ_WORK
25	bool
26
27config IRQ_WORK
28	bool
29	depends on HAVE_IRQ_WORK
30
31menu "General setup"
32
33config 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
64config BROKEN
65	bool
66
67config BROKEN_ON_SMP
68	bool
69	depends on BROKEN || !SMP
70	default y
71
72config LOCK_KERNEL
73	bool
74	depends on (SMP || PREEMPT) && BKL
75	default y
76
77config 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
86config 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
94config 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
104config 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
124config HAVE_KERNEL_GZIP
125	bool
126
127config HAVE_KERNEL_BZIP2
128	bool
129
130config HAVE_KERNEL_LZMA
131	bool
132
133config HAVE_KERNEL_XZ
134	bool
135
136config HAVE_KERNEL_LZO
137	bool
138
139choice
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
161config 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
168config 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
178config 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
187config 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
202config 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
210endchoice
211
212config 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
222config 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
237config SYSVIPC_SYSCTL
238	bool
239	depends on SYSVIPC
240	depends on SYSCTL
241	default y
242
243config 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
259config POSIX_MQUEUE_SYSCTL
260	bool
261	depends on POSIX_MQUEUE
262	depends on SYSCTL
263	default y
264
265config 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
278config 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
290config 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
303config 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
314config 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
323config 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
332config 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
341config 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
350config AUDIT_WATCH
351	def_bool y
352	depends on AUDITSYSCALL
353	select FSNOTIFY
354
355config AUDIT_TREE
356	def_bool y
357	depends on AUDITSYSCALL
358	select FSNOTIFY
359
360source "kernel/irq/Kconfig"
361
362menu "RCU Subsystem"
363
364choice
365	prompt "RCU Implementation"
366	default TREE_RCU
367
368config 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
377config 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
387config 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
396config 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
404endchoice
405
406config 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
412config 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
421config 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
441config 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
455config 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
471config 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
479config 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
492config 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
505config 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
518config 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
533endmenu # "RCU Subsystem"
534
535config 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
547config 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
554config 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#
571config HAVE_UNSTABLE_SCHED_CLOCK
572	bool
573
574menuconfig 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
588if CGROUPS
589
590config 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
600config 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
608config CGROUP_FREEZER
609	bool "Freezer cgroup subsystem"
610	help
611	  Provides a way to freeze and unfreeze all tasks in a
612	  cgroup.
613
614config 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
620config 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
630config PROC_PID_CPUSET
631	bool "Include legacy /proc/<pid>/cpuset file"
632	depends on CPUSETS
633	default y
634
635config 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
641config RESOURCE_COUNTERS
642	bool "Resource counters"
643	help
644	  This option enables controller independent resource accounting
645	  infrastructure that works with cgroups.
646
647config 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
670config 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.
687config 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
701menuconfig 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
710if CGROUP_SCHED
711config FAIR_GROUP_SCHED
712	bool "Group scheduling for SCHED_OTHER"
713	depends on CGROUP_SCHED
714	default CGROUP_SCHED
715
716config 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
728endif #CGROUP_SCHED
729
730config 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
752config 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
760endif # CGROUPS
761
762menuconfig 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
771if NAMESPACES
772
773config 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
780config 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
788config 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
797config 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
805config 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
813endif # NAMESPACES
814
815config 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
828config MM_OWNER
829	bool
830
831config 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
854config 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
869config 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
880config 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
896if BLK_DEV_INITRD
897
898source "usr/Kconfig"
899
900endif
901
902config 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
911config SYSCTL
912	bool
913
914config ANON_INODES
915	bool
916
917menuconfig 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
925config 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
932config 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
949config 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
957config 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
968config 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
980config 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
989config 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
999config 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
1009config 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
1015config 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
1023config 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
1031config 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
1040config 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
1048config 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
1058config 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
1068config 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
1078config 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
1089config 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
1097config HAVE_PERF_EVENTS
1098	bool
1099	help
1100	  See tools/perf/design.txt for details.
1101
1102config PERF_USE_VMALLOC
1103	bool
1104	help
1105	  See tools/perf/design.txt for details
1106
1107menu "Kernel Performance Events And Counters"
1108
1109config 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
1138config 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
1150config 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
1163endmenu
1164
1165config 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
1174config 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
1183config 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
1193config 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
1205choice
1206	prompt "Choose SLAB allocator"
1207	default SLUB
1208	help
1209	   This option allows to select a slab allocator.
1210
1211config 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
1218config 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
1228config 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
1236endchoice
1237
1238config 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
1260config 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#
1270config TRACEPOINTS
1271	bool
1272
1273source "arch/Kconfig"
1274
1275endmenu		# General setup
1276
1277config HAVE_GENERIC_DMA_COHERENT
1278	bool
1279	default n
1280
1281config SLABINFO
1282	bool
1283	depends on PROC_FS
1284	depends on SLAB || SLUB_DEBUG
1285	default y
1286
1287config RT_MUTEXES
1288	boolean
1289
1290config BASE_SMALL
1291	int
1292	default 0 if BASE_FULL
1293	default 1 if !BASE_FULL
1294
1295menuconfig 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
1315if MODULES
1316
1317config 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
1325config 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
1333config 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
1343config 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
1353config 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
1364endif # MODULES
1365
1366config 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
1375config STOP_MACHINE
1376	bool
1377	default y
1378	depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1379	help
1380	  Need stop_machine() primitive.
1381
1382source "block/Kconfig"
1383
1384config PREEMPT_NOTIFIERS
1385	bool
1386
1387config PADATA
1388	depends on SMP
1389	bool
1390
1391source "kernel/Kconfig.locks"
1392