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