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