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