xref: /linux/init/Kconfig (revision 394d83c17fac2b7bcf05cb99d1e945135767bb6b)
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
518endmenu # "RCU Subsystem"
519
520config IKCONFIG
521	tristate "Kernel .config support"
522	---help---
523	  This option enables the complete Linux kernel ".config" file
524	  contents to be saved in the kernel. It provides documentation
525	  of which kernel options are used in a running kernel or in an
526	  on-disk kernel.  This information can be extracted from the kernel
527	  image file with the script scripts/extract-ikconfig and used as
528	  input to rebuild the current kernel or to build another kernel.
529	  It can also be extracted from a running kernel by reading
530	  /proc/config.gz if enabled (below).
531
532config IKCONFIG_PROC
533	bool "Enable access to .config through /proc/config.gz"
534	depends on IKCONFIG && PROC_FS
535	---help---
536	  This option enables access to the kernel configuration file
537	  through /proc/config.gz.
538
539config LOG_BUF_SHIFT
540	int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
541	range 12 21
542	default 17
543	help
544	  Select kernel log buffer size as a power of 2.
545	  Examples:
546	  	     17 => 128 KB
547		     16 => 64 KB
548	             15 => 32 KB
549	             14 => 16 KB
550		     13 =>  8 KB
551		     12 =>  4 KB
552
553#
554# Architectures with an unreliable sched_clock() should select this:
555#
556config HAVE_UNSTABLE_SCHED_CLOCK
557	bool
558
559menuconfig CGROUPS
560	boolean "Control Group support"
561	depends on EVENTFD
562	help
563	  This option adds support for grouping sets of processes together, for
564	  use with process control subsystems such as Cpusets, CFS, memory
565	  controls or device isolation.
566	  See
567		- Documentation/scheduler/sched-design-CFS.txt	(CFS)
568		- Documentation/cgroups/ (features for grouping, isolation
569					  and resource control)
570
571	  Say N if unsure.
572
573if CGROUPS
574
575config CGROUP_DEBUG
576	bool "Example debug cgroup subsystem"
577	default n
578	help
579	  This option enables a simple cgroup subsystem that
580	  exports useful debugging information about the cgroups
581	  framework.
582
583	  Say N if unsure.
584
585config CGROUP_NS
586	bool "Namespace cgroup subsystem"
587	help
588	  Provides a simple namespace cgroup subsystem to
589	  provide hierarchical naming of sets of namespaces,
590	  for instance virtual servers and checkpoint/restart
591	  jobs.
592
593config CGROUP_FREEZER
594	bool "Freezer cgroup subsystem"
595	help
596	  Provides a way to freeze and unfreeze all tasks in a
597	  cgroup.
598
599config CGROUP_DEVICE
600	bool "Device controller for cgroups"
601	help
602	  Provides a cgroup implementing whitelists for devices which
603	  a process in the cgroup can mknod or open.
604
605config CPUSETS
606	bool "Cpuset support"
607	help
608	  This option will let you create and manage CPUSETs which
609	  allow dynamically partitioning a system into sets of CPUs and
610	  Memory Nodes and assigning tasks to run only within those sets.
611	  This is primarily useful on large SMP or NUMA systems.
612
613	  Say N if unsure.
614
615config PROC_PID_CPUSET
616	bool "Include legacy /proc/<pid>/cpuset file"
617	depends on CPUSETS
618	default y
619
620config CGROUP_CPUACCT
621	bool "Simple CPU accounting cgroup subsystem"
622	help
623	  Provides a simple Resource Controller for monitoring the
624	  total CPU consumed by the tasks in a cgroup.
625
626config RESOURCE_COUNTERS
627	bool "Resource counters"
628	help
629	  This option enables controller independent resource accounting
630	  infrastructure that works with cgroups.
631
632config CGROUP_MEM_RES_CTLR
633	bool "Memory Resource Controller for Control Groups"
634	depends on RESOURCE_COUNTERS
635	select MM_OWNER
636	help
637	  Provides a memory resource controller that manages both anonymous
638	  memory and page cache. (See Documentation/cgroups/memory.txt)
639
640	  Note that setting this option increases fixed memory overhead
641	  associated with each page of memory in the system. By this,
642	  20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
643	  usage tracking struct at boot. Total amount of this is printed out
644	  at boot.
645
646	  Only enable when you're ok with these trade offs and really
647	  sure you need the memory resource controller. Even when you enable
648	  this, you can set "cgroup_disable=memory" at your boot option to
649	  disable memory resource controller and you can avoid overheads.
650	  (and lose benefits of memory resource controller)
651
652	  This config option also selects MM_OWNER config option, which
653	  could in turn add some fork/exit overhead.
654
655config CGROUP_MEM_RES_CTLR_SWAP
656	bool "Memory Resource Controller Swap Extension"
657	depends on CGROUP_MEM_RES_CTLR && SWAP
658	help
659	  Add swap management feature to memory resource controller. When you
660	  enable this, you can limit mem+swap usage per cgroup. In other words,
661	  when you disable this, memory resource controller has no cares to
662	  usage of swap...a process can exhaust all of the swap. This extension
663	  is useful when you want to avoid exhaustion swap but this itself
664	  adds more overheads and consumes memory for remembering information.
665	  Especially if you use 32bit system or small memory system, please
666	  be careful about enabling this. When memory resource controller
667	  is disabled by boot option, this will be automatically disabled and
668	  there will be no overhead from this. Even when you set this config=y,
669	  if boot option "noswapaccount" is set, swap will not be accounted.
670	  Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
671	  size is 4096bytes, 512k per 1Gbytes of swap.
672config CGROUP_MEM_RES_CTLR_SWAP_ENABLED
673	bool "Memory Resource Controller Swap Extension enabled by default"
674	depends on CGROUP_MEM_RES_CTLR_SWAP
675	default y
676	help
677	  Memory Resource Controller Swap Extension comes with its price in
678	  a bigger memory consumption. General purpose distribution kernels
679	  which want to enable the feature but keep it disabled by default
680	  and let the user enable it by swapaccount boot command line
681	  parameter should have this option unselected.
682	  For those who want to have the feature enabled by default should
683	  select this option (if, for some reason, they need to disable it
684	  then noswapaccount does the trick).
685
686menuconfig CGROUP_SCHED
687	bool "Group CPU scheduler"
688	depends on EXPERIMENTAL
689	default n
690	help
691	  This feature lets CPU scheduler recognize task groups and control CPU
692	  bandwidth allocation to such task groups. It uses cgroups to group
693	  tasks.
694
695if CGROUP_SCHED
696config FAIR_GROUP_SCHED
697	bool "Group scheduling for SCHED_OTHER"
698	depends on CGROUP_SCHED
699	default CGROUP_SCHED
700
701config RT_GROUP_SCHED
702	bool "Group scheduling for SCHED_RR/FIFO"
703	depends on EXPERIMENTAL
704	depends on CGROUP_SCHED
705	default n
706	help
707	  This feature lets you explicitly allocate real CPU bandwidth
708	  to task groups. If enabled, it will also make it impossible to
709	  schedule realtime tasks for non-root users until you allocate
710	  realtime bandwidth for them.
711	  See Documentation/scheduler/sched-rt-group.txt for more information.
712
713endif #CGROUP_SCHED
714
715config BLK_CGROUP
716	tristate "Block IO controller"
717	depends on BLOCK
718	default n
719	---help---
720	Generic block IO controller cgroup interface. This is the common
721	cgroup interface which should be used by various IO controlling
722	policies.
723
724	Currently, CFQ IO scheduler uses it to recognize task groups and
725	control disk bandwidth allocation (proportional time slice allocation)
726	to such task groups. It is also used by bio throttling logic in
727	block layer to implement upper limit in IO rates on a device.
728
729	This option only enables generic Block IO controller infrastructure.
730	One needs to also enable actual IO controlling logic/policy. For
731	enabling proportional weight division of disk bandwidth in CFQ seti
732	CONFIG_CFQ_GROUP_IOSCHED=y and for enabling throttling policy set
733	CONFIG_BLK_THROTTLE=y.
734
735	See Documentation/cgroups/blkio-controller.txt for more information.
736
737config DEBUG_BLK_CGROUP
738	bool "Enable Block IO controller debugging"
739	depends on BLK_CGROUP
740	default n
741	---help---
742	Enable some debugging help. Currently it exports additional stat
743	files in a cgroup which can be useful for debugging.
744
745endif # CGROUPS
746
747menuconfig NAMESPACES
748	bool "Namespaces support" if EMBEDDED
749	default !EMBEDDED
750	help
751	  Provides the way to make tasks work with different objects using
752	  the same id. For example same IPC id may refer to different objects
753	  or same user id or pid may refer to different tasks when used in
754	  different namespaces.
755
756if NAMESPACES
757
758config UTS_NS
759	bool "UTS namespace"
760	default y
761	help
762	  In this namespace tasks see different info provided with the
763	  uname() system call
764
765config IPC_NS
766	bool "IPC namespace"
767	depends on (SYSVIPC || POSIX_MQUEUE)
768	default y
769	help
770	  In this namespace tasks work with IPC ids which correspond to
771	  different IPC objects in different namespaces.
772
773config USER_NS
774	bool "User namespace (EXPERIMENTAL)"
775	depends on EXPERIMENTAL
776	default y
777	help
778	  This allows containers, i.e. vservers, to use user namespaces
779	  to provide different user info for different servers.
780	  If unsure, say N.
781
782config PID_NS
783	bool "PID Namespaces"
784	default y
785	help
786	  Support process id namespaces.  This allows having multiple
787	  processes with the same pid as long as they are in different
788	  pid namespaces.  This is a building block of containers.
789
790config NET_NS
791	bool "Network namespace"
792	depends on NET
793	default y
794	help
795	  Allow user space to create what appear to be multiple instances
796	  of the network stack.
797
798endif # NAMESPACES
799
800config SCHED_AUTOGROUP
801	bool "Automatic process group scheduling"
802	select EVENTFD
803	select CGROUPS
804	select CGROUP_SCHED
805	select FAIR_GROUP_SCHED
806	help
807	  This option optimizes the scheduler for common desktop workloads by
808	  automatically creating and populating task groups.  This separation
809	  of workloads isolates aggressive CPU burners (like build jobs) from
810	  desktop applications.  Task group autogeneration is currently based
811	  upon task session.
812
813config MM_OWNER
814	bool
815
816config SYSFS_DEPRECATED
817	bool "enable deprecated sysfs features to support old userspace tools"
818	depends on SYSFS
819	default n
820	help
821	  This option adds code that switches the layout of the "block" class
822	  devices, to not show up in /sys/class/block/, but only in
823	  /sys/block/.
824
825	  This switch is only active when the sysfs.deprecated=1 boot option is
826	  passed or the SYSFS_DEPRECATED_V2 option is set.
827
828	  This option allows new kernels to run on old distributions and tools,
829	  which might get confused by /sys/class/block/. Since 2007/2008 all
830	  major distributions and tools handle this just fine.
831
832	  Recent distributions and userspace tools after 2009/2010 depend on
833	  the existence of /sys/class/block/, and will not work with this
834	  option enabled.
835
836	  Only if you are using a new kernel on an old distribution, you might
837	  need to say Y here.
838
839config SYSFS_DEPRECATED_V2
840	bool "enabled deprecated sysfs features by default"
841	default n
842	depends on SYSFS
843	depends on SYSFS_DEPRECATED
844	help
845	  Enable deprecated sysfs by default.
846
847	  See the CONFIG_SYSFS_DEPRECATED option for more details about this
848	  option.
849
850	  Only if you are using a new kernel on an old distribution, you might
851	  need to say Y here. Even then, odds are you would not need it
852	  enabled, you can always pass the boot option if absolutely necessary.
853
854config RELAY
855	bool "Kernel->user space relay support (formerly relayfs)"
856	help
857	  This option enables support for relay interface support in
858	  certain file systems (such as debugfs).
859	  It is designed to provide an efficient mechanism for tools and
860	  facilities to relay large amounts of data from kernel space to
861	  user space.
862
863	  If unsure, say N.
864
865config BLK_DEV_INITRD
866	bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
867	depends on BROKEN || !FRV
868	help
869	  The initial RAM filesystem is a ramfs which is loaded by the
870	  boot loader (loadlin or lilo) and that is mounted as root
871	  before the normal boot procedure. It is typically used to
872	  load modules needed to mount the "real" root file system,
873	  etc. See <file:Documentation/initrd.txt> for details.
874
875	  If RAM disk support (BLK_DEV_RAM) is also included, this
876	  also enables initial RAM disk (initrd) support and adds
877	  15 Kbytes (more on some other architectures) to the kernel size.
878
879	  If unsure say Y.
880
881if BLK_DEV_INITRD
882
883source "usr/Kconfig"
884
885endif
886
887config CC_OPTIMIZE_FOR_SIZE
888	bool "Optimize for size"
889	default y
890	help
891	  Enabling this option will pass "-Os" instead of "-O2" to gcc
892	  resulting in a smaller kernel.
893
894	  If unsure, say Y.
895
896config SYSCTL
897	bool
898
899config ANON_INODES
900	bool
901
902menuconfig EMBEDDED
903	bool "Configure standard kernel features (for small systems)"
904	help
905	  This option allows certain base kernel options and settings
906          to be disabled or tweaked. This is for specialized
907          environments which can tolerate a "non-standard" kernel.
908          Only use this if you really know what you are doing.
909
910config UID16
911	bool "Enable 16-bit UID system calls" if EMBEDDED
912	depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
913	default y
914	help
915	  This enables the legacy 16-bit UID syscall wrappers.
916
917config SYSCTL_SYSCALL
918	bool "Sysctl syscall support" if EMBEDDED
919	depends on PROC_SYSCTL
920	default y
921	select SYSCTL
922	---help---
923	  sys_sysctl uses binary paths that have been found challenging
924	  to properly maintain and use.  The interface in /proc/sys
925	  using paths with ascii names is now the primary path to this
926	  information.
927
928	  Almost nothing using the binary sysctl interface so if you are
929	  trying to save some space it is probably safe to disable this,
930	  making your kernel marginally smaller.
931
932	  If unsure say Y here.
933
934config KALLSYMS
935	 bool "Load all symbols for debugging/ksymoops" if EMBEDDED
936	 default y
937	 help
938	   Say Y here to let the kernel print out symbolic crash information and
939	   symbolic stack backtraces. This increases the size of the kernel
940	   somewhat, as all symbols have to be loaded into the kernel image.
941
942config KALLSYMS_ALL
943	bool "Include all symbols in kallsyms"
944	depends on DEBUG_KERNEL && KALLSYMS
945	help
946	   Normally kallsyms only contains the symbols of functions, for nicer
947	   OOPS messages.  Some debuggers can use kallsyms for other
948	   symbols too: say Y here to include all symbols, if you need them
949	   and you don't care about adding 300k to the size of your kernel.
950
951	   Say N.
952
953config KALLSYMS_EXTRA_PASS
954	bool "Do an extra kallsyms pass"
955	depends on KALLSYMS
956	help
957	   If kallsyms is not working correctly, the build will fail with
958	   inconsistent kallsyms data.  If that occurs, log a bug report and
959	   turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
960	   Always say N here unless you find a bug in kallsyms, which must be
961	   reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
962	   you wait for kallsyms to be fixed.
963
964
965config HOTPLUG
966	bool "Support for hot-pluggable devices" if EMBEDDED
967	default y
968	help
969	  This option is provided for the case where no hotplug or uevent
970	  capabilities is wanted by the kernel.  You should only consider
971	  disabling this option for embedded systems that do not use modules, a
972	  dynamic /dev tree, or dynamic device discovery.  Just say Y.
973
974config PRINTK
975	default y
976	bool "Enable support for printk" if EMBEDDED
977	help
978	  This option enables normal printk support. Removing it
979	  eliminates most of the message strings from the kernel image
980	  and makes the kernel more or less silent. As this makes it
981	  very difficult to diagnose system problems, saying N here is
982	  strongly discouraged.
983
984config BUG
985	bool "BUG() support" if EMBEDDED
986	default y
987	help
988          Disabling this option eliminates support for BUG and WARN, reducing
989          the size of your kernel image and potentially quietly ignoring
990          numerous fatal conditions. You should only consider disabling this
991          option for embedded systems with no facilities for reporting errors.
992          Just say Y.
993
994config ELF_CORE
995	default y
996	bool "Enable ELF core dumps" if EMBEDDED
997	help
998	  Enable support for generating core dumps. Disabling saves about 4k.
999
1000config PCSPKR_PLATFORM
1001	bool "Enable PC-Speaker support" if EMBEDDED
1002	depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
1003	default y
1004	help
1005          This option allows to disable the internal PC-Speaker
1006          support, saving some memory.
1007
1008config BASE_FULL
1009	default y
1010	bool "Enable full-sized data structures for core" if EMBEDDED
1011	help
1012	  Disabling this option reduces the size of miscellaneous core
1013	  kernel data structures. This saves memory on small machines,
1014	  but may reduce performance.
1015
1016config FUTEX
1017	bool "Enable futex support" if EMBEDDED
1018	default y
1019	select RT_MUTEXES
1020	help
1021	  Disabling this option will cause the kernel to be built without
1022	  support for "fast userspace mutexes".  The resulting kernel may not
1023	  run glibc-based applications correctly.
1024
1025config EPOLL
1026	bool "Enable eventpoll support" if EMBEDDED
1027	default y
1028	select ANON_INODES
1029	help
1030	  Disabling this option will cause the kernel to be built without
1031	  support for epoll family of system calls.
1032
1033config SIGNALFD
1034	bool "Enable signalfd() system call" if EMBEDDED
1035	select ANON_INODES
1036	default y
1037	help
1038	  Enable the signalfd() system call that allows to receive signals
1039	  on a file descriptor.
1040
1041	  If unsure, say Y.
1042
1043config TIMERFD
1044	bool "Enable timerfd() system call" if EMBEDDED
1045	select ANON_INODES
1046	default y
1047	help
1048	  Enable the timerfd() system call that allows to receive timer
1049	  events on a file descriptor.
1050
1051	  If unsure, say Y.
1052
1053config EVENTFD
1054	bool "Enable eventfd() system call" if EMBEDDED
1055	select ANON_INODES
1056	default y
1057	help
1058	  Enable the eventfd() system call that allows to receive both
1059	  kernel notification (ie. KAIO) or userspace notifications.
1060
1061	  If unsure, say Y.
1062
1063config SHMEM
1064	bool "Use full shmem filesystem" if EMBEDDED
1065	default y
1066	depends on MMU
1067	help
1068	  The shmem is an internal filesystem used to manage shared memory.
1069	  It is backed by swap and manages resource limits. It is also exported
1070	  to userspace as tmpfs if TMPFS is enabled. Disabling this
1071	  option replaces shmem and tmpfs with the much simpler ramfs code,
1072	  which may be appropriate on small systems without swap.
1073
1074config AIO
1075	bool "Enable AIO support" if EMBEDDED
1076	default y
1077	help
1078	  This option enables POSIX asynchronous I/O which may by used
1079          by some high performance threaded applications. Disabling
1080          this option saves about 7k.
1081
1082config HAVE_PERF_EVENTS
1083	bool
1084	help
1085	  See tools/perf/design.txt for details.
1086
1087config PERF_USE_VMALLOC
1088	bool
1089	help
1090	  See tools/perf/design.txt for details
1091
1092menu "Kernel Performance Events And Counters"
1093
1094config PERF_EVENTS
1095	bool "Kernel performance events and counters"
1096	default y if (PROFILING || PERF_COUNTERS)
1097	depends on HAVE_PERF_EVENTS
1098	select ANON_INODES
1099	select IRQ_WORK
1100	help
1101	  Enable kernel support for various performance events provided
1102	  by software and hardware.
1103
1104	  Software events are supported either built-in or via the
1105	  use of generic tracepoints.
1106
1107	  Most modern CPUs support performance events via performance
1108	  counter registers. These registers count the number of certain
1109	  types of hw events: such as instructions executed, cachemisses
1110	  suffered, or branches mis-predicted - without slowing down the
1111	  kernel or applications. These registers can also trigger interrupts
1112	  when a threshold number of events have passed - and can thus be
1113	  used to profile the code that runs on that CPU.
1114
1115	  The Linux Performance Event subsystem provides an abstraction of
1116	  these software and hardware event capabilities, available via a
1117	  system call and used by the "perf" utility in tools/perf/. It
1118	  provides per task and per CPU counters, and it provides event
1119	  capabilities on top of those.
1120
1121	  Say Y if unsure.
1122
1123config PERF_COUNTERS
1124	bool "Kernel performance counters (old config option)"
1125	depends on HAVE_PERF_EVENTS
1126	help
1127	  This config has been obsoleted by the PERF_EVENTS
1128	  config option - please see that one for details.
1129
1130	  It has no effect on the kernel whether you enable
1131	  it or not, it is a compatibility placeholder.
1132
1133	  Say N if unsure.
1134
1135config DEBUG_PERF_USE_VMALLOC
1136	default n
1137	bool "Debug: use vmalloc to back perf mmap() buffers"
1138	depends on PERF_EVENTS && DEBUG_KERNEL
1139	select PERF_USE_VMALLOC
1140	help
1141	 Use vmalloc memory to back perf mmap() buffers.
1142
1143	 Mostly useful for debugging the vmalloc code on platforms
1144	 that don't require it.
1145
1146	 Say N if unsure.
1147
1148endmenu
1149
1150config VM_EVENT_COUNTERS
1151	default y
1152	bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
1153	help
1154	  VM event counters are needed for event counts to be shown.
1155	  This option allows the disabling of the VM event counters
1156	  on EMBEDDED systems.  /proc/vmstat will only show page counts
1157	  if VM event counters are disabled.
1158
1159config PCI_QUIRKS
1160	default y
1161	bool "Enable PCI quirk workarounds" if EMBEDDED
1162	depends on PCI
1163	help
1164	  This enables workarounds for various PCI chipset
1165          bugs/quirks. Disable this only if your target machine is
1166          unaffected by PCI quirks.
1167
1168config SLUB_DEBUG
1169	default y
1170	bool "Enable SLUB debugging support" if EMBEDDED
1171	depends on SLUB && SYSFS
1172	help
1173	  SLUB has extensive debug support features. Disabling these can
1174	  result in significant savings in code size. This also disables
1175	  SLUB sysfs support. /sys/slab will not exist and there will be
1176	  no support for cache validation etc.
1177
1178config COMPAT_BRK
1179	bool "Disable heap randomization"
1180	default y
1181	help
1182	  Randomizing heap placement makes heap exploits harder, but it
1183	  also breaks ancient binaries (including anything libc5 based).
1184	  This option changes the bootup default to heap randomization
1185	  disabled, and can be overridden at runtime by setting
1186	  /proc/sys/kernel/randomize_va_space to 2.
1187
1188	  On non-ancient distros (post-2000 ones) N is usually a safe choice.
1189
1190choice
1191	prompt "Choose SLAB allocator"
1192	default SLUB
1193	help
1194	   This option allows to select a slab allocator.
1195
1196config SLAB
1197	bool "SLAB"
1198	help
1199	  The regular slab allocator that is established and known to work
1200	  well in all environments. It organizes cache hot objects in
1201	  per cpu and per node queues.
1202
1203config SLUB
1204	bool "SLUB (Unqueued Allocator)"
1205	help
1206	   SLUB is a slab allocator that minimizes cache line usage
1207	   instead of managing queues of cached objects (SLAB approach).
1208	   Per cpu caching is realized using slabs of objects instead
1209	   of queues of objects. SLUB can use memory efficiently
1210	   and has enhanced diagnostics. SLUB is the default choice for
1211	   a slab allocator.
1212
1213config SLOB
1214	depends on EMBEDDED
1215	bool "SLOB (Simple Allocator)"
1216	help
1217	   SLOB replaces the stock allocator with a drastically simpler
1218	   allocator. SLOB is generally more space efficient but
1219	   does not perform as well on large systems.
1220
1221endchoice
1222
1223config MMAP_ALLOW_UNINITIALIZED
1224	bool "Allow mmapped anonymous memory to be uninitialized"
1225	depends on EMBEDDED && !MMU
1226	default n
1227	help
1228	  Normally, and according to the Linux spec, anonymous memory obtained
1229	  from mmap() has it's contents cleared before it is passed to
1230	  userspace.  Enabling this config option allows you to request that
1231	  mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1232	  providing a huge performance boost.  If this option is not enabled,
1233	  then the flag will be ignored.
1234
1235	  This is taken advantage of by uClibc's malloc(), and also by
1236	  ELF-FDPIC binfmt's brk and stack allocator.
1237
1238	  Because of the obvious security issues, this option should only be
1239	  enabled on embedded devices where you control what is run in
1240	  userspace.  Since that isn't generally a problem on no-MMU systems,
1241	  it is normally safe to say Y here.
1242
1243	  See Documentation/nommu-mmap.txt for more information.
1244
1245config PROFILING
1246	bool "Profiling support"
1247	help
1248	  Say Y here to enable the extended profiling support mechanisms used
1249	  by profilers such as OProfile.
1250
1251#
1252# Place an empty function call at each tracepoint site. Can be
1253# dynamically changed for a probe function.
1254#
1255config TRACEPOINTS
1256	bool
1257
1258source "arch/Kconfig"
1259
1260endmenu		# General setup
1261
1262config HAVE_GENERIC_DMA_COHERENT
1263	bool
1264	default n
1265
1266config SLABINFO
1267	bool
1268	depends on PROC_FS
1269	depends on SLAB || SLUB_DEBUG
1270	default y
1271
1272config RT_MUTEXES
1273	boolean
1274
1275config BASE_SMALL
1276	int
1277	default 0 if BASE_FULL
1278	default 1 if !BASE_FULL
1279
1280menuconfig MODULES
1281	bool "Enable loadable module support"
1282	help
1283	  Kernel modules are small pieces of compiled code which can
1284	  be inserted in the running kernel, rather than being
1285	  permanently built into the kernel.  You use the "modprobe"
1286	  tool to add (and sometimes remove) them.  If you say Y here,
1287	  many parts of the kernel can be built as modules (by
1288	  answering M instead of Y where indicated): this is most
1289	  useful for infrequently used options which are not required
1290	  for booting.  For more information, see the man pages for
1291	  modprobe, lsmod, modinfo, insmod and rmmod.
1292
1293	  If you say Y here, you will need to run "make
1294	  modules_install" to put the modules under /lib/modules/
1295	  where modprobe can find them (you may need to be root to do
1296	  this).
1297
1298	  If unsure, say Y.
1299
1300if MODULES
1301
1302config MODULE_FORCE_LOAD
1303	bool "Forced module loading"
1304	default n
1305	help
1306	  Allow loading of modules without version information (ie. modprobe
1307	  --force).  Forced module loading sets the 'F' (forced) taint flag and
1308	  is usually a really bad idea.
1309
1310config MODULE_UNLOAD
1311	bool "Module unloading"
1312	help
1313	  Without this option you will not be able to unload any
1314	  modules (note that some modules may not be unloadable
1315	  anyway), which makes your kernel smaller, faster
1316	  and simpler.  If unsure, say Y.
1317
1318config MODULE_FORCE_UNLOAD
1319	bool "Forced module unloading"
1320	depends on MODULE_UNLOAD && EXPERIMENTAL
1321	help
1322	  This option allows you to force a module to unload, even if the
1323	  kernel believes it is unsafe: the kernel will remove the module
1324	  without waiting for anyone to stop using it (using the -f option to
1325	  rmmod).  This is mainly for kernel developers and desperate users.
1326	  If unsure, say N.
1327
1328config MODVERSIONS
1329	bool "Module versioning support"
1330	help
1331	  Usually, you have to use modules compiled with your kernel.
1332	  Saying Y here makes it sometimes possible to use modules
1333	  compiled for different kernels, by adding enough information
1334	  to the modules to (hopefully) spot any changes which would
1335	  make them incompatible with the kernel you are running.  If
1336	  unsure, say N.
1337
1338config MODULE_SRCVERSION_ALL
1339	bool "Source checksum for all modules"
1340	help
1341	  Modules which contain a MODULE_VERSION get an extra "srcversion"
1342	  field inserted into their modinfo section, which contains a
1343    	  sum of the source files which made it.  This helps maintainers
1344	  see exactly which source was used to build a module (since
1345	  others sometimes change the module source without updating
1346	  the version).  With this option, such a "srcversion" field
1347	  will be created for all modules.  If unsure, say N.
1348
1349endif # MODULES
1350
1351config INIT_ALL_POSSIBLE
1352	bool
1353	help
1354	  Back when each arch used to define their own cpu_online_map and
1355	  cpu_possible_map, some of them chose to initialize cpu_possible_map
1356	  with all 1s, and others with all 0s.  When they were centralised,
1357	  it was better to provide this option than to break all the archs
1358	  and have several arch maintainers pursuing me down dark alleys.
1359
1360config STOP_MACHINE
1361	bool
1362	default y
1363	depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1364	help
1365	  Need stop_machine() primitive.
1366
1367source "block/Kconfig"
1368
1369config PREEMPT_NOTIFIERS
1370	bool
1371
1372config PADATA
1373	depends on SMP
1374	bool
1375
1376source "kernel/Kconfig.locks"
1377