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