xref: /linux/init/Kconfig (revision 0c93ea4064a209cdc36de8a9a3003d43d08f46f7)
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
678config ANON_INODES
679	bool
680
681menuconfig EMBEDDED
682	bool "Configure standard kernel features (for small systems)"
683	help
684	  This option allows certain base kernel options and settings
685          to be disabled or tweaked. This is for specialized
686          environments which can tolerate a "non-standard" kernel.
687          Only use this if you really know what you are doing.
688
689config UID16
690	bool "Enable 16-bit UID system calls" if EMBEDDED
691	depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
692	default y
693	help
694	  This enables the legacy 16-bit UID syscall wrappers.
695
696config SYSCTL_SYSCALL
697	bool "Sysctl syscall support" if EMBEDDED
698	default y
699	select SYSCTL
700	---help---
701	  sys_sysctl uses binary paths that have been found challenging
702	  to properly maintain and use.  The interface in /proc/sys
703	  using paths with ascii names is now the primary path to this
704	  information.
705
706	  Almost nothing using the binary sysctl interface so if you are
707	  trying to save some space it is probably safe to disable this,
708	  making your kernel marginally smaller.
709
710	  If unsure say Y here.
711
712config KALLSYMS
713	 bool "Load all symbols for debugging/ksymoops" if EMBEDDED
714	 default y
715	 help
716	   Say Y here to let the kernel print out symbolic crash information and
717	   symbolic stack backtraces. This increases the size of the kernel
718	   somewhat, as all symbols have to be loaded into the kernel image.
719
720config KALLSYMS_ALL
721	bool "Include all symbols in kallsyms"
722	depends on DEBUG_KERNEL && KALLSYMS
723	help
724	   Normally kallsyms only contains the symbols of functions, for nicer
725	   OOPS messages.  Some debuggers can use kallsyms for other
726	   symbols too: say Y here to include all symbols, if you need them
727	   and you don't care about adding 300k to the size of your kernel.
728
729	   Say N.
730
731config KALLSYMS_EXTRA_PASS
732	bool "Do an extra kallsyms pass"
733	depends on KALLSYMS
734	help
735	   If kallsyms is not working correctly, the build will fail with
736	   inconsistent kallsyms data.  If that occurs, log a bug report and
737	   turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
738	   Always say N here unless you find a bug in kallsyms, which must be
739	   reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
740	   you wait for kallsyms to be fixed.
741
742
743config HOTPLUG
744	bool "Support for hot-pluggable devices" if EMBEDDED
745	default y
746	help
747	  This option is provided for the case where no hotplug or uevent
748	  capabilities is wanted by the kernel.  You should only consider
749	  disabling this option for embedded systems that do not use modules, a
750	  dynamic /dev tree, or dynamic device discovery.  Just say Y.
751
752config PRINTK
753	default y
754	bool "Enable support for printk" if EMBEDDED
755	help
756	  This option enables normal printk support. Removing it
757	  eliminates most of the message strings from the kernel image
758	  and makes the kernel more or less silent. As this makes it
759	  very difficult to diagnose system problems, saying N here is
760	  strongly discouraged.
761
762config BUG
763	bool "BUG() support" if EMBEDDED
764	default y
765	help
766          Disabling this option eliminates support for BUG and WARN, reducing
767          the size of your kernel image and potentially quietly ignoring
768          numerous fatal conditions. You should only consider disabling this
769          option for embedded systems with no facilities for reporting errors.
770          Just say Y.
771
772config ELF_CORE
773	default y
774	bool "Enable ELF core dumps" if EMBEDDED
775	help
776	  Enable support for generating core dumps. Disabling saves about 4k.
777
778config PCSPKR_PLATFORM
779	bool "Enable PC-Speaker support" if EMBEDDED
780	depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
781	default y
782	help
783          This option allows to disable the internal PC-Speaker
784          support, saving some memory.
785
786config BASE_FULL
787	default y
788	bool "Enable full-sized data structures for core" if EMBEDDED
789	help
790	  Disabling this option reduces the size of miscellaneous core
791	  kernel data structures. This saves memory on small machines,
792	  but may reduce performance.
793
794config FUTEX
795	bool "Enable futex support" if EMBEDDED
796	default y
797	select RT_MUTEXES
798	help
799	  Disabling this option will cause the kernel to be built without
800	  support for "fast userspace mutexes".  The resulting kernel may not
801	  run glibc-based applications correctly.
802
803config EPOLL
804	bool "Enable eventpoll support" if EMBEDDED
805	default y
806	select ANON_INODES
807	help
808	  Disabling this option will cause the kernel to be built without
809	  support for epoll family of system calls.
810
811config SIGNALFD
812	bool "Enable signalfd() system call" if EMBEDDED
813	select ANON_INODES
814	default y
815	help
816	  Enable the signalfd() system call that allows to receive signals
817	  on a file descriptor.
818
819	  If unsure, say Y.
820
821config TIMERFD
822	bool "Enable timerfd() system call" if EMBEDDED
823	select ANON_INODES
824	default y
825	help
826	  Enable the timerfd() system call that allows to receive timer
827	  events on a file descriptor.
828
829	  If unsure, say Y.
830
831config EVENTFD
832	bool "Enable eventfd() system call" if EMBEDDED
833	select ANON_INODES
834	default y
835	help
836	  Enable the eventfd() system call that allows to receive both
837	  kernel notification (ie. KAIO) or userspace notifications.
838
839	  If unsure, say Y.
840
841config SHMEM
842	bool "Use full shmem filesystem" if EMBEDDED
843	default y
844	depends on MMU
845	help
846	  The shmem is an internal filesystem used to manage shared memory.
847	  It is backed by swap and manages resource limits. It is also exported
848	  to userspace as tmpfs if TMPFS is enabled. Disabling this
849	  option replaces shmem and tmpfs with the much simpler ramfs code,
850	  which may be appropriate on small systems without swap.
851
852config AIO
853	bool "Enable AIO support" if EMBEDDED
854	default y
855	help
856	  This option enables POSIX asynchronous I/O which may by used
857          by some high performance threaded applications. Disabling
858          this option saves about 7k.
859
860config VM_EVENT_COUNTERS
861	default y
862	bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
863	help
864	  VM event counters are needed for event counts to be shown.
865	  This option allows the disabling of the VM event counters
866	  on EMBEDDED systems.  /proc/vmstat will only show page counts
867	  if VM event counters are disabled.
868
869config PCI_QUIRKS
870	default y
871	bool "Enable PCI quirk workarounds" if EMBEDDED
872	depends on PCI
873	help
874	  This enables workarounds for various PCI chipset
875          bugs/quirks. Disable this only if your target machine is
876          unaffected by PCI quirks.
877
878config SLUB_DEBUG
879	default y
880	bool "Enable SLUB debugging support" if EMBEDDED
881	depends on SLUB && SYSFS
882	help
883	  SLUB has extensive debug support features. Disabling these can
884	  result in significant savings in code size. This also disables
885	  SLUB sysfs support. /sys/slab will not exist and there will be
886	  no support for cache validation etc.
887
888config COMPAT_BRK
889	bool "Disable heap randomization"
890	default y
891	help
892	  Randomizing heap placement makes heap exploits harder, but it
893	  also breaks ancient binaries (including anything libc5 based).
894	  This option changes the bootup default to heap randomization
895	  disabled, and can be overriden runtime by setting
896	  /proc/sys/kernel/randomize_va_space to 2.
897
898	  On non-ancient distros (post-2000 ones) N is usually a safe choice.
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