xref: /openbmc/linux/init/Kconfig (revision e868d61272caa648214046a096e5a6bfc068dc8c)
1config DEFCONFIG_LIST
2	string
3	depends on !UML
4	option defconfig_list
5	default "/lib/modules/$UNAME_RELEASE/.config"
6	default "/etc/kernel-config"
7	default "/boot/config-$UNAME_RELEASE"
8	default "arch/$ARCH/defconfig"
9
10menu "Code maturity level options"
11
12config EXPERIMENTAL
13	bool "Prompt for development and/or incomplete code/drivers"
14	---help---
15	  Some of the various things that Linux supports (such as network
16	  drivers, file systems, network protocols, etc.) can be in a state
17	  of development where the functionality, stability, or the level of
18	  testing is not yet high enough for general use. This is usually
19	  known as the "alpha-test" phase among developers. If a feature is
20	  currently in alpha-test, then the developers usually discourage
21	  uninformed widespread use of this feature by the general public to
22	  avoid "Why doesn't this work?" type mail messages. However, active
23	  testing and use of these systems is welcomed. Just be aware that it
24	  may not meet the normal level of reliability or it may fail to work
25	  in some special cases. Detailed bug reports from people familiar
26	  with the kernel internals are usually welcomed by the developers
27	  (before submitting bug reports, please read the documents
28	  <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
29	  <file:Documentation/BUG-HUNTING>, and
30	  <file:Documentation/oops-tracing.txt> in the kernel source).
31
32	  This option will also make obsoleted drivers available. These are
33	  drivers that have been replaced by something else, and/or are
34	  scheduled to be removed in a future kernel release.
35
36	  Unless you intend to help test and develop a feature or driver that
37	  falls into this category, or you have a situation that requires
38	  using these features, you should probably say N here, which will
39	  cause the configurator to present you with fewer choices. If
40	  you say Y here, you will be offered the choice of using features or
41	  drivers that are currently considered to be in the alpha-test phase.
42
43config BROKEN
44	bool
45
46config BROKEN_ON_SMP
47	bool
48	depends on BROKEN || !SMP
49	default y
50
51config LOCK_KERNEL
52	bool
53	depends on SMP || PREEMPT
54	default y
55
56config INIT_ENV_ARG_LIMIT
57	int
58	default 32 if !UML
59	default 128 if UML
60	help
61	  Maximum of each of the number of arguments and environment
62	  variables passed to init from the kernel command line.
63
64endmenu
65
66menu "General setup"
67
68config LOCALVERSION
69	string "Local version - append to kernel release"
70	help
71	  Append an extra string to the end of your kernel version.
72	  This will show up when you type uname, for example.
73	  The string you set here will be appended after the contents of
74	  any files with a filename matching localversion* in your
75	  object and source tree, in that order.  Your total string can
76	  be a maximum of 64 characters.
77
78config LOCALVERSION_AUTO
79	bool "Automatically append version information to the version string"
80	default y
81	help
82	  This will try to automatically determine if the current tree is a
83	  release tree by looking for git tags that belong to the current
84	  top of tree revision.
85
86	  A string of the format -gxxxxxxxx will be added to the localversion
87	  if a git-based tree is found.  The string generated by this will be
88	  appended after any matching localversion* files, and after the value
89	  set in CONFIG_LOCALVERSION.
90
91	  (The actual string used here is the first eight characters produced
92	  by running the command:
93
94	    $ git rev-parse --verify HEAD
95
96	  which is done within the script "scripts/setlocalversion".)
97
98config SWAP
99	bool "Support for paging of anonymous memory (swap)"
100	depends on MMU && BLOCK
101	default y
102	help
103	  This option allows you to choose whether you want to have support
104	  for so called swap devices or swap files in your kernel that are
105	  used to provide more virtual memory than the actual RAM present
106	  in your computer.  If unsure say Y.
107
108config SYSVIPC
109	bool "System V IPC"
110	---help---
111	  Inter Process Communication is a suite of library functions and
112	  system calls which let processes (running programs) synchronize and
113	  exchange information. It is generally considered to be a good thing,
114	  and some programs won't run unless you say Y here. In particular, if
115	  you want to run the DOS emulator dosemu under Linux (read the
116	  DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
117	  you'll need to say Y here.
118
119	  You can find documentation about IPC with "info ipc" and also in
120	  section 6.4 of the Linux Programmer's Guide, available from
121	  <http://www.tldp.org/guides.html>.
122
123config IPC_NS
124	bool "IPC Namespaces"
125	depends on SYSVIPC
126	default n
127	help
128	  Support ipc namespaces.  This allows containers, i.e. virtual
129	  environments, to use ipc namespaces to provide different ipc
130	  objects for different servers.  If unsure, say N.
131
132config SYSVIPC_SYSCTL
133	bool
134	depends on SYSVIPC
135	depends on SYSCTL
136	default y
137
138config POSIX_MQUEUE
139	bool "POSIX Message Queues"
140	depends on NET && EXPERIMENTAL
141	---help---
142	  POSIX variant of message queues is a part of IPC. In POSIX message
143	  queues every message has a priority which decides about succession
144	  of receiving it by a process. If you want to compile and run
145	  programs written e.g. for Solaris with use of its POSIX message
146	  queues (functions mq_*) say Y here.
147
148	  POSIX message queues are visible as a filesystem called 'mqueue'
149	  and can be mounted somewhere if you want to do filesystem
150	  operations on message queues.
151
152	  If unsure, say Y.
153
154config BSD_PROCESS_ACCT
155	bool "BSD Process Accounting"
156	help
157	  If you say Y here, a user level program will be able to instruct the
158	  kernel (via a special system call) to write process accounting
159	  information to a file: whenever a process exits, information about
160	  that process will be appended to the file by the kernel.  The
161	  information includes things such as creation time, owning user,
162	  command name, memory usage, controlling terminal etc. (the complete
163	  list is in the struct acct in <file:include/linux/acct.h>).  It is
164	  up to the user level program to do useful things with this
165	  information.  This is generally a good idea, so say Y.
166
167config BSD_PROCESS_ACCT_V3
168	bool "BSD Process Accounting version 3 file format"
169	depends on BSD_PROCESS_ACCT
170	default n
171	help
172	  If you say Y here, the process accounting information is written
173	  in a new file format that also logs the process IDs of each
174	  process and it's parent. Note that this file format is incompatible
175	  with previous v0/v1/v2 file formats, so you will need updated tools
176	  for processing it. A preliminary version of these tools is available
177	  at <http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/>.
178
179config TASKSTATS
180	bool "Export task/process statistics through netlink (EXPERIMENTAL)"
181	depends on NET
182	default n
183	help
184	  Export selected statistics for tasks/processes through the
185	  generic netlink interface. Unlike BSD process accounting, the
186	  statistics are available during the lifetime of tasks/processes as
187	  responses to commands. Like BSD accounting, they are sent to user
188	  space on task exit.
189
190	  Say N if unsure.
191
192config TASK_DELAY_ACCT
193	bool "Enable per-task delay accounting (EXPERIMENTAL)"
194	depends on TASKSTATS
195	help
196	  Collect information on time spent by a task waiting for system
197	  resources like cpu, synchronous block I/O completion and swapping
198	  in pages. Such statistics can help in setting a task's priorities
199	  relative to other tasks for cpu, io, rss limits etc.
200
201	  Say N if unsure.
202
203config TASK_XACCT
204	bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
205	depends on TASKSTATS
206	help
207	  Collect extended task accounting data and send the data
208	  to userland for processing over the taskstats interface.
209
210	  Say N if unsure.
211
212config TASK_IO_ACCOUNTING
213	bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
214	depends on TASK_XACCT
215	help
216	  Collect information on the number of bytes of storage I/O which this
217	  task has caused.
218
219	  Say N if unsure.
220
221config UTS_NS
222	bool "UTS Namespaces"
223	default n
224	help
225	  Support uts namespaces.  This allows containers, i.e.
226	  vservers, to use uts namespaces to provide different
227	  uts info for different servers.  If unsure, say N.
228
229config AUDIT
230	bool "Auditing support"
231	depends on NET
232	help
233	  Enable auditing infrastructure that can be used with another
234	  kernel subsystem, such as SELinux (which requires this for
235	  logging of avc messages output).  Does not do system-call
236	  auditing without CONFIG_AUDITSYSCALL.
237
238config AUDITSYSCALL
239	bool "Enable system-call auditing support"
240	depends on AUDIT && (X86 || PPC || PPC64 || S390 || IA64 || UML || SPARC64)
241	default y if SECURITY_SELINUX
242	help
243	  Enable low-overhead system-call auditing infrastructure that
244	  can be used independently or with another kernel subsystem,
245	  such as SELinux.  To use audit's filesystem watch feature, please
246	  ensure that INOTIFY is configured.
247
248config IKCONFIG
249	tristate "Kernel .config support"
250	---help---
251	  This option enables the complete Linux kernel ".config" file
252	  contents to be saved in the kernel. It provides documentation
253	  of which kernel options are used in a running kernel or in an
254	  on-disk kernel.  This information can be extracted from the kernel
255	  image file with the script scripts/extract-ikconfig and used as
256	  input to rebuild the current kernel or to build another kernel.
257	  It can also be extracted from a running kernel by reading
258	  /proc/config.gz if enabled (below).
259
260config IKCONFIG_PROC
261	bool "Enable access to .config through /proc/config.gz"
262	depends on IKCONFIG && PROC_FS
263	---help---
264	  This option enables access to the kernel configuration file
265	  through /proc/config.gz.
266
267config LOG_BUF_SHIFT
268	int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
269	range 12 21
270	default 17 if S390 || LOCKDEP
271	default 16 if X86_NUMAQ || IA64
272	default 15 if SMP
273	default 14
274	help
275	  Select kernel log buffer size as a power of 2.
276	  Defaults and Examples:
277	  	     17 => 128 KB for S/390
278		     16 => 64 KB for x86 NUMAQ or IA-64
279	             15 => 32 KB for SMP
280	             14 => 16 KB for uniprocessor
281		     13 =>  8 KB
282		     12 =>  4 KB
283
284config CPUSETS
285	bool "Cpuset support"
286	depends on SMP
287	help
288	  This option will let you create and manage CPUSETs which
289	  allow dynamically partitioning a system into sets of CPUs and
290	  Memory Nodes and assigning tasks to run only within those sets.
291	  This is primarily useful on large SMP or NUMA systems.
292
293	  Say N if unsure.
294
295config SYSFS_DEPRECATED
296	bool "Create deprecated sysfs files"
297	default y
298	help
299	  This option creates deprecated symlinks such as the
300	  "device"-link, the <subsystem>:<name>-link, and the
301	  "bus"-link. It may also add deprecated key in the
302	  uevent environment.
303	  None of these features or values should be used today, as
304	  they export driver core implementation details to userspace
305	  or export properties which can't be kept stable across kernel
306	  releases.
307
308	  If enabled, this option will also move any device structures
309	  that belong to a class, back into the /sys/class hierarchy, in
310	  order to support older versions of udev.
311
312	  If you are using a distro that was released in 2006 or later,
313	  it should be safe to say N here.
314
315config RELAY
316	bool "Kernel->user space relay support (formerly relayfs)"
317	help
318	  This option enables support for relay interface support in
319	  certain file systems (such as debugfs).
320	  It is designed to provide an efficient mechanism for tools and
321	  facilities to relay large amounts of data from kernel space to
322	  user space.
323
324	  If unsure, say N.
325
326config BLK_DEV_INITRD
327	bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
328	depends on BROKEN || !FRV
329	help
330	  The initial RAM filesystem is a ramfs which is loaded by the
331	  boot loader (loadlin or lilo) and that is mounted as root
332	  before the normal boot procedure. It is typically used to
333	  load modules needed to mount the "real" root file system,
334	  etc. See <file:Documentation/initrd.txt> for details.
335
336	  If RAM disk support (BLK_DEV_RAM) is also included, this
337	  also enables initial RAM disk (initrd) support and adds
338	  15 Kbytes (more on some other architectures) to the kernel size.
339
340	  If unsure say Y.
341
342if BLK_DEV_INITRD
343
344source "usr/Kconfig"
345
346endif
347
348config CC_OPTIMIZE_FOR_SIZE
349	bool "Optimize for size (Look out for broken compilers!)"
350	default y
351	depends on ARM || H8300 || EXPERIMENTAL
352	help
353	  Enabling this option will pass "-Os" instead of "-O2" to gcc
354	  resulting in a smaller kernel.
355
356	  WARNING: some versions of gcc may generate incorrect code with this
357	  option.  If problems are observed, a gcc upgrade may be needed.
358
359	  If unsure, say N.
360
361config SYSCTL
362	bool
363
364menuconfig EMBEDDED
365	bool "Configure standard kernel features (for small systems)"
366	help
367	  This option allows certain base kernel options and settings
368          to be disabled or tweaked. This is for specialized
369          environments which can tolerate a "non-standard" kernel.
370          Only use this if you really know what you are doing.
371
372config UID16
373	bool "Enable 16-bit UID system calls" if EMBEDDED
374	depends on ARM || BFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && SPARC32_COMPAT) || UML || (X86_64 && IA32_EMULATION)
375	default y
376	help
377	  This enables the legacy 16-bit UID syscall wrappers.
378
379config SYSCTL_SYSCALL
380	bool "Sysctl syscall support" if EMBEDDED
381	default y
382	select SYSCTL
383	---help---
384	  sys_sysctl uses binary paths that have been found challenging
385	  to properly maintain and use.  The interface in /proc/sys
386	  using paths with ascii names is now the primary path to this
387	  information.
388
389	  Almost nothing using the binary sysctl interface so if you are
390	  trying to save some space it is probably safe to disable this,
391	  making your kernel marginally smaller.
392
393	  If unsure say Y here.
394
395config KALLSYMS
396	 bool "Load all symbols for debugging/ksymoops" if EMBEDDED
397	 default y
398	 help
399	   Say Y here to let the kernel print out symbolic crash information and
400	   symbolic stack backtraces. This increases the size of the kernel
401	   somewhat, as all symbols have to be loaded into the kernel image.
402
403config KALLSYMS_ALL
404	bool "Include all symbols in kallsyms"
405	depends on DEBUG_KERNEL && KALLSYMS
406	help
407	   Normally kallsyms only contains the symbols of functions, for nicer
408	   OOPS messages.  Some debuggers can use kallsyms for other
409	   symbols too: say Y here to include all symbols, if you need them
410	   and you don't care about adding 300k to the size of your kernel.
411
412	   Say N.
413
414config KALLSYMS_EXTRA_PASS
415	bool "Do an extra kallsyms pass"
416	depends on KALLSYMS
417	help
418	   If kallsyms is not working correctly, the build will fail with
419	   inconsistent kallsyms data.  If that occurs, log a bug report and
420	   turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
421	   Always say N here unless you find a bug in kallsyms, which must be
422	   reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
423	   you wait for kallsyms to be fixed.
424
425
426config HOTPLUG
427	bool "Support for hot-pluggable devices" if EMBEDDED
428	default y
429	help
430	  This option is provided for the case where no hotplug or uevent
431	  capabilities is wanted by the kernel.  You should only consider
432	  disabling this option for embedded systems that do not use modules, a
433	  dynamic /dev tree, or dynamic device discovery.  Just say Y.
434
435config PRINTK
436	default y
437	bool "Enable support for printk" if EMBEDDED
438	help
439	  This option enables normal printk support. Removing it
440	  eliminates most of the message strings from the kernel image
441	  and makes the kernel more or less silent. As this makes it
442	  very difficult to diagnose system problems, saying N here is
443	  strongly discouraged.
444
445config BUG
446	bool "BUG() support" if EMBEDDED
447	default y
448	help
449          Disabling this option eliminates support for BUG and WARN, reducing
450          the size of your kernel image and potentially quietly ignoring
451          numerous fatal conditions. You should only consider disabling this
452          option for embedded systems with no facilities for reporting errors.
453          Just say Y.
454
455config ELF_CORE
456	default y
457	bool "Enable ELF core dumps" if EMBEDDED
458	help
459	  Enable support for generating core dumps. Disabling saves about 4k.
460
461config BASE_FULL
462	default y
463	bool "Enable full-sized data structures for core" if EMBEDDED
464	help
465	  Disabling this option reduces the size of miscellaneous core
466	  kernel data structures. This saves memory on small machines,
467	  but may reduce performance.
468
469config FUTEX
470	bool "Enable futex support" if EMBEDDED
471	default y
472	select RT_MUTEXES
473	help
474	  Disabling this option will cause the kernel to be built without
475	  support for "fast userspace mutexes".  The resulting kernel may not
476	  run glibc-based applications correctly.
477
478config ANON_INODES
479	bool "Enable anonymous inode source" if EMBEDDED
480	default y
481	help
482	  Anonymous inode source for pseudo-files like epoll, signalfd,
483	  timerfd and eventfd.
484
485	  If unsure, say Y.
486
487config EPOLL
488	bool "Enable eventpoll support" if EMBEDDED
489	default y
490	depends on ANON_INODES
491	help
492	  Disabling this option will cause the kernel to be built without
493	  support for epoll family of system calls.
494
495config SIGNALFD
496	bool "Enable signalfd() system call" if EMBEDDED
497	depends on ANON_INODES
498	default y
499	help
500	  Enable the signalfd() system call that allows to receive signals
501	  on a file descriptor.
502
503	  If unsure, say Y.
504
505config TIMERFD
506	bool "Enable timerfd() system call" if EMBEDDED
507	depends on ANON_INODES
508	default y
509	help
510	  Enable the timerfd() system call that allows to receive timer
511	  events on a file descriptor.
512
513	  If unsure, say Y.
514
515config EVENTFD
516	bool "Enable eventfd() system call" if EMBEDDED
517	depends on ANON_INODES
518	default y
519	help
520	  Enable the eventfd() system call that allows to receive both
521	  kernel notification (ie. KAIO) or userspace notifications.
522
523	  If unsure, say Y.
524
525config SHMEM
526	bool "Use full shmem filesystem" if EMBEDDED
527	default y
528	depends on MMU
529	help
530	  The shmem is an internal filesystem used to manage shared memory.
531	  It is backed by swap and manages resource limits. It is also exported
532	  to userspace as tmpfs if TMPFS is enabled. Disabling this
533	  option replaces shmem and tmpfs with the much simpler ramfs code,
534	  which may be appropriate on small systems without swap.
535
536config VM_EVENT_COUNTERS
537	default y
538	bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
539	help
540	  VM event counters are needed for event counts to be shown.
541	  This option allows the disabling of the VM event counters
542	  on EMBEDDED systems.  /proc/vmstat will only show page counts
543	  if VM event counters are disabled.
544
545config SLUB_DEBUG
546	default y
547	bool "Enable SLUB debugging support" if EMBEDDED
548	depends on SLUB
549	help
550	  SLUB has extensive debug support features. Disabling these can
551	  result in significant savings in code size. This also disables
552	  SLUB sysfs support. /sys/slab will not exist and there will be
553	  no support for cache validation etc.
554
555choice
556	prompt "Choose SLAB allocator"
557	default SLAB
558	help
559	   This option allows to select a slab allocator.
560
561config SLAB
562	bool "SLAB"
563	help
564	  The regular slab allocator that is established and known to work
565	  well in all environments. It organizes cache hot objects in
566	  per cpu and per node queues. SLAB is the default choice for
567	  a slab allocator.
568
569config SLUB
570	depends on EXPERIMENTAL && !ARCH_USES_SLAB_PAGE_STRUCT
571	bool "SLUB (Unqueued Allocator)"
572	help
573	   SLUB is a slab allocator that minimizes cache line usage
574	   instead of managing queues of cached objects (SLAB approach).
575	   Per cpu caching is realized using slabs of objects instead
576	   of queues of objects. SLUB can use memory efficiently
577	   and has enhanced diagnostics.
578
579config SLOB
580#
581#	SLOB does not support SMP because SLAB_DESTROY_BY_RCU is unsupported
582#
583	depends on EMBEDDED && !SMP && !SPARSEMEM
584	bool "SLOB (Simple Allocator)"
585	help
586	   SLOB replaces the SLAB allocator with a drastically simpler
587	   allocator.  SLOB is more space efficient that SLAB but does not
588	   scale well (single lock for all operations) and is also highly
589	   susceptible to fragmentation. SLUB can accomplish a higher object
590	   density. It is usually better to use SLUB instead of SLOB.
591
592endchoice
593
594endmenu		# General setup
595
596config RT_MUTEXES
597	boolean
598	select PLIST
599
600config TINY_SHMEM
601	default !SHMEM
602	bool
603
604config BASE_SMALL
605	int
606	default 0 if BASE_FULL
607	default 1 if !BASE_FULL
608
609menu "Loadable module support"
610
611config MODULES
612	bool "Enable loadable module support"
613	help
614	  Kernel modules are small pieces of compiled code which can
615	  be inserted in the running kernel, rather than being
616	  permanently built into the kernel.  You use the "modprobe"
617	  tool to add (and sometimes remove) them.  If you say Y here,
618	  many parts of the kernel can be built as modules (by
619	  answering M instead of Y where indicated): this is most
620	  useful for infrequently used options which are not required
621	  for booting.  For more information, see the man pages for
622	  modprobe, lsmod, modinfo, insmod and rmmod.
623
624	  If you say Y here, you will need to run "make
625	  modules_install" to put the modules under /lib/modules/
626	  where modprobe can find them (you may need to be root to do
627	  this).
628
629	  If unsure, say Y.
630
631config MODULE_UNLOAD
632	bool "Module unloading"
633	depends on MODULES
634	help
635	  Without this option you will not be able to unload any
636	  modules (note that some modules may not be unloadable
637	  anyway), which makes your kernel slightly smaller and
638	  simpler.  If unsure, say Y.
639
640config MODULE_FORCE_UNLOAD
641	bool "Forced module unloading"
642	depends on MODULE_UNLOAD && EXPERIMENTAL
643	help
644	  This option allows you to force a module to unload, even if the
645	  kernel believes it is unsafe: the kernel will remove the module
646	  without waiting for anyone to stop using it (using the -f option to
647	  rmmod).  This is mainly for kernel developers and desperate users.
648	  If unsure, say N.
649
650config MODVERSIONS
651	bool "Module versioning support"
652	depends on MODULES
653	help
654	  Usually, you have to use modules compiled with your kernel.
655	  Saying Y here makes it sometimes possible to use modules
656	  compiled for different kernels, by adding enough information
657	  to the modules to (hopefully) spot any changes which would
658	  make them incompatible with the kernel you are running.  If
659	  unsure, say N.
660
661config MODULE_SRCVERSION_ALL
662	bool "Source checksum for all modules"
663	depends on MODULES
664	help
665	  Modules which contain a MODULE_VERSION get an extra "srcversion"
666	  field inserted into their modinfo section, which contains a
667    	  sum of the source files which made it.  This helps maintainers
668	  see exactly which source was used to build a module (since
669	  others sometimes change the module source without updating
670	  the version).  With this option, such a "srcversion" field
671	  will be created for all modules.  If unsure, say N.
672
673config KMOD
674	bool "Automatic kernel module loading"
675	depends on MODULES
676	help
677	  Normally when you have selected some parts of the kernel to
678	  be created as kernel modules, you must load them (using the
679	  "modprobe" command) before you can use them. If you say Y
680	  here, some parts of the kernel will be able to load modules
681	  automatically: when a part of the kernel needs a module, it
682	  runs modprobe with the appropriate arguments, thereby
683	  loading the module if it is available.  If unsure, say Y.
684
685config STOP_MACHINE
686	bool
687	default y
688	depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
689	help
690	  Need stop_machine() primitive.
691endmenu
692
693menu "Block layer"
694source "block/Kconfig"
695endmenu
696