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