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