1config ARCH
2	string
3	option env="ARCH"
4
5config KERNELVERSION
6	string
7	option env="KERNELVERSION"
8
9config DEFCONFIG_LIST
10	string
11	depends on !UML
12	option defconfig_list
13	default "/lib/modules/$UNAME_RELEASE/.config"
14	default "/etc/kernel-config"
15	default "/boot/config-$UNAME_RELEASE"
16	default "$ARCH_DEFCONFIG"
17	default "arch/$ARCH/defconfig"
18
19config CONSTRUCTORS
20	bool
21	depends on !UML
22	default y
23
24menu "General setup"
25
26config EXPERIMENTAL
27	bool "Prompt for development and/or incomplete code/drivers"
28	---help---
29	  Some of the various things that Linux supports (such as network
30	  drivers, file systems, network protocols, etc.) can be in a state
31	  of development where the functionality, stability, or the level of
32	  testing is not yet high enough for general use. This is usually
33	  known as the "alpha-test" phase among developers. If a feature is
34	  currently in alpha-test, then the developers usually discourage
35	  uninformed widespread use of this feature by the general public to
36	  avoid "Why doesn't this work?" type mail messages. However, active
37	  testing and use of these systems is welcomed. Just be aware that it
38	  may not meet the normal level of reliability or it may fail to work
39	  in some special cases. Detailed bug reports from people familiar
40	  with the kernel internals are usually welcomed by the developers
41	  (before submitting bug reports, please read the documents
42	  <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
43	  <file:Documentation/BUG-HUNTING>, and
44	  <file:Documentation/oops-tracing.txt> in the kernel source).
45
46	  This option will also make obsoleted drivers available. These are
47	  drivers that have been replaced by something else, and/or are
48	  scheduled to be removed in a future kernel release.
49
50	  Unless you intend to help test and develop a feature or driver that
51	  falls into this category, or you have a situation that requires
52	  using these features, you should probably say N here, which will
53	  cause the configurator to present you with fewer choices. If
54	  you say Y here, you will be offered the choice of using features or
55	  drivers that are currently considered to be in the alpha-test phase.
56
57config BROKEN
58	bool
59
60config BROKEN_ON_SMP
61	bool
62	depends on BROKEN || !SMP
63	default y
64
65config LOCK_KERNEL
66	bool
67	depends on SMP || PREEMPT
68	default y
69
70config INIT_ENV_ARG_LIMIT
71	int
72	default 32 if !UML
73	default 128 if UML
74	help
75	  Maximum of each of the number of arguments and environment
76	  variables passed to init from the kernel command line.
77
78
79config CROSS_COMPILE
80	string "Cross-compiler tool prefix"
81	help
82	  Same as running 'make CROSS_COMPILE=prefix-' but stored for
83	  default make runs in this kernel build directory.  You don't
84	  need to set this unless you want the configured kernel build
85	  directory to select the cross-compiler automatically.
86
87config LOCALVERSION
88	string "Local version - append to kernel release"
89	help
90	  Append an extra string to the end of your kernel version.
91	  This will show up when you type uname, for example.
92	  The string you set here will be appended after the contents of
93	  any files with a filename matching localversion* in your
94	  object and source tree, in that order.  Your total string can
95	  be a maximum of 64 characters.
96
97config LOCALVERSION_AUTO
98	bool "Automatically append version information to the version string"
99	default y
100	help
101	  This will try to automatically determine if the current tree is a
102	  release tree by looking for git tags that belong to the current
103	  top of tree revision.
104
105	  A string of the format -gxxxxxxxx will be added to the localversion
106	  if a git-based tree is found.  The string generated by this will be
107	  appended after any matching localversion* files, and after the value
108	  set in CONFIG_LOCALVERSION.
109
110	  (The actual string used here is the first eight characters produced
111	  by running the command:
112
113	    $ git rev-parse --verify HEAD
114
115	  which is done within the script "scripts/setlocalversion".)
116
117config HAVE_KERNEL_GZIP
118	bool
119
120config HAVE_KERNEL_BZIP2
121	bool
122
123config HAVE_KERNEL_LZMA
124	bool
125
126config HAVE_KERNEL_LZO
127	bool
128
129choice
130	prompt "Kernel compression mode"
131	default KERNEL_GZIP
132	depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_LZO
133	help
134	  The linux kernel is a kind of self-extracting executable.
135	  Several compression algorithms are available, which differ
136	  in efficiency, compression and decompression speed.
137	  Compression speed is only relevant when building a kernel.
138	  Decompression speed is relevant at each boot.
139
140	  If you have any problems with bzip2 or lzma compressed
141	  kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
142	  version of this functionality (bzip2 only), for 2.4, was
143	  supplied by Christian Ludwig)
144
145	  High compression options are mostly useful for users, who
146	  are low on disk space (embedded systems), but for whom ram
147	  size matters less.
148
149	  If in doubt, select 'gzip'
150
151config KERNEL_GZIP
152	bool "Gzip"
153	depends on HAVE_KERNEL_GZIP
154	help
155	  The old and tried gzip compression. It provides a good balance
156	  between compression ratio and decompression speed.
157
158config KERNEL_BZIP2
159	bool "Bzip2"
160	depends on HAVE_KERNEL_BZIP2
161	help
162	  Its compression ratio and speed is intermediate.
163	  Decompression speed is slowest among the three.  The kernel
164	  size is about 10% smaller with bzip2, in comparison to gzip.
165	  Bzip2 uses a large amount of memory. For modern kernels you
166	  will need at least 8MB RAM or more for booting.
167
168config KERNEL_LZMA
169	bool "LZMA"
170	depends on HAVE_KERNEL_LZMA
171	help
172	  The most recent compression algorithm.
173	  Its ratio is best, decompression speed is between the other
174	  two. Compression is slowest.	The kernel size is about 33%
175	  smaller with LZMA in comparison to gzip.
176
177config KERNEL_LZO
178	bool "LZO"
179	depends on HAVE_KERNEL_LZO
180	help
181	  Its compression ratio is the poorest among the 4. The kernel
182	  size is about about 10% bigger than gzip; however its speed
183	  (both compression and decompression) is the fastest.
184
185endchoice
186
187config SWAP
188	bool "Support for paging of anonymous memory (swap)"
189	depends on MMU && BLOCK
190	default y
191	help
192	  This option allows you to choose whether you want to have support
193	  for so called swap devices or swap files in your kernel that are
194	  used to provide more virtual memory than the actual RAM present
195	  in your computer.  If unsure say Y.
196
197config SYSVIPC
198	bool "System V IPC"
199	---help---
200	  Inter Process Communication is a suite of library functions and
201	  system calls which let processes (running programs) synchronize and
202	  exchange information. It is generally considered to be a good thing,
203	  and some programs won't run unless you say Y here. In particular, if
204	  you want to run the DOS emulator dosemu under Linux (read the
205	  DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
206	  you'll need to say Y here.
207
208	  You can find documentation about IPC with "info ipc" and also in
209	  section 6.4 of the Linux Programmer's Guide, available from
210	  <http://www.tldp.org/guides.html>.
211
212config SYSVIPC_SYSCTL
213	bool
214	depends on SYSVIPC
215	depends on SYSCTL
216	default y
217
218config POSIX_MQUEUE
219	bool "POSIX Message Queues"
220	depends on NET && EXPERIMENTAL
221	---help---
222	  POSIX variant of message queues is a part of IPC. In POSIX message
223	  queues every message has a priority which decides about succession
224	  of receiving it by a process. If you want to compile and run
225	  programs written e.g. for Solaris with use of its POSIX message
226	  queues (functions mq_*) say Y here.
227
228	  POSIX message queues are visible as a filesystem called 'mqueue'
229	  and can be mounted somewhere if you want to do filesystem
230	  operations on message queues.
231
232	  If unsure, say Y.
233
234config POSIX_MQUEUE_SYSCTL
235	bool
236	depends on POSIX_MQUEUE
237	depends on SYSCTL
238	default y
239
240config BSD_PROCESS_ACCT
241	bool "BSD Process Accounting"
242	help
243	  If you say Y here, a user level program will be able to instruct the
244	  kernel (via a special system call) to write process accounting
245	  information to a file: whenever a process exits, information about
246	  that process will be appended to the file by the kernel.  The
247	  information includes things such as creation time, owning user,
248	  command name, memory usage, controlling terminal etc. (the complete
249	  list is in the struct acct in <file:include/linux/acct.h>).  It is
250	  up to the user level program to do useful things with this
251	  information.  This is generally a good idea, so say Y.
252
253config BSD_PROCESS_ACCT_V3
254	bool "BSD Process Accounting version 3 file format"
255	depends on BSD_PROCESS_ACCT
256	default n
257	help
258	  If you say Y here, the process accounting information is written
259	  in a new file format that also logs the process IDs of each
260	  process and it's parent. Note that this file format is incompatible
261	  with previous v0/v1/v2 file formats, so you will need updated tools
262	  for processing it. A preliminary version of these tools is available
263	  at <http://www.gnu.org/software/acct/>.
264
265config TASKSTATS
266	bool "Export task/process statistics through netlink (EXPERIMENTAL)"
267	depends on NET
268	default n
269	help
270	  Export selected statistics for tasks/processes through the
271	  generic netlink interface. Unlike BSD process accounting, the
272	  statistics are available during the lifetime of tasks/processes as
273	  responses to commands. Like BSD accounting, they are sent to user
274	  space on task exit.
275
276	  Say N if unsure.
277
278config TASK_DELAY_ACCT
279	bool "Enable per-task delay accounting (EXPERIMENTAL)"
280	depends on TASKSTATS
281	help
282	  Collect information on time spent by a task waiting for system
283	  resources like cpu, synchronous block I/O completion and swapping
284	  in pages. Such statistics can help in setting a task's priorities
285	  relative to other tasks for cpu, io, rss limits etc.
286
287	  Say N if unsure.
288
289config TASK_XACCT
290	bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
291	depends on TASKSTATS
292	help
293	  Collect extended task accounting data and send the data
294	  to userland for processing over the taskstats interface.
295
296	  Say N if unsure.
297
298config TASK_IO_ACCOUNTING
299	bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
300	depends on TASK_XACCT
301	help
302	  Collect information on the number of bytes of storage I/O which this
303	  task has caused.
304
305	  Say N if unsure.
306
307config AUDIT
308	bool "Auditing support"
309	depends on NET
310	help
311	  Enable auditing infrastructure that can be used with another
312	  kernel subsystem, such as SELinux (which requires this for
313	  logging of avc messages output).  Does not do system-call
314	  auditing without CONFIG_AUDITSYSCALL.
315
316config AUDITSYSCALL
317	bool "Enable system-call auditing support"
318	depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH)
319	default y if SECURITY_SELINUX
320	help
321	  Enable low-overhead system-call auditing infrastructure that
322	  can be used independently or with another kernel subsystem,
323	  such as SELinux.
324
325config AUDIT_WATCH
326	def_bool y
327	depends on AUDITSYSCALL
328	select FSNOTIFY
329
330config AUDIT_TREE
331	def_bool y
332	depends on AUDITSYSCALL
333	select FSNOTIFY
334
335menu "RCU Subsystem"
336
337choice
338	prompt "RCU Implementation"
339	default TREE_RCU
340
341config TREE_RCU
342	bool "Tree-based hierarchical RCU"
343	help
344	  This option selects the RCU implementation that is
345	  designed for very large SMP system with hundreds or
346	  thousands of CPUs.  It also scales down nicely to
347	  smaller systems.
348
349config TREE_PREEMPT_RCU
350	bool "Preemptable tree-based hierarchical RCU"
351	depends on PREEMPT
352	help
353	  This option selects the RCU implementation that is
354	  designed for very large SMP systems with hundreds or
355	  thousands of CPUs, but for which real-time response
356	  is also required.  It also scales down nicely to
357	  smaller systems.
358
359config TINY_RCU
360	bool "UP-only small-memory-footprint RCU"
361	depends on !SMP
362	help
363	  This option selects the RCU implementation that is
364	  designed for UP systems from which real-time response
365	  is not required.  This option greatly reduces the
366	  memory footprint of RCU.
367
368endchoice
369
370config RCU_TRACE
371	bool "Enable tracing for RCU"
372	depends on TREE_RCU || TREE_PREEMPT_RCU
373	help
374	  This option provides tracing in RCU which presents stats
375	  in debugfs for debugging RCU implementation.
376
377	  Say Y here if you want to enable RCU tracing
378	  Say N if you are unsure.
379
380config RCU_FANOUT
381	int "Tree-based hierarchical RCU fanout value"
382	range 2 64 if 64BIT
383	range 2 32 if !64BIT
384	depends on TREE_RCU || TREE_PREEMPT_RCU
385	default 64 if 64BIT
386	default 32 if !64BIT
387	help
388	  This option controls the fanout of hierarchical implementations
389	  of RCU, allowing RCU to work efficiently on machines with
390	  large numbers of CPUs.  This value must be at least the cube
391	  root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
392	  systems and up to 262,144 for 64-bit systems.
393
394	  Select a specific number if testing RCU itself.
395	  Take the default if unsure.
396
397config RCU_FANOUT_EXACT
398	bool "Disable tree-based hierarchical RCU auto-balancing"
399	depends on TREE_RCU || TREE_PREEMPT_RCU
400	default n
401	help
402	  This option forces use of the exact RCU_FANOUT value specified,
403	  regardless of imbalances in the hierarchy.  This is useful for
404	  testing RCU itself, and might one day be useful on systems with
405	  strong NUMA behavior.
406
407	  Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
408
409	  Say N if unsure.
410
411config RCU_FAST_NO_HZ
412	bool "Accelerate last non-dyntick-idle CPU's grace periods"
413	depends on TREE_RCU && NO_HZ && SMP
414	default n
415	help
416	  This option causes RCU to attempt to accelerate grace periods
417	  in order to allow the final CPU to enter dynticks-idle state
418	  more quickly.  On the other hand, this option increases the
419	  overhead of the dynticks-idle checking, particularly on systems
420	  with large numbers of CPUs.
421
422	  Say Y if energy efficiency is critically important, particularly
423	  	if you have relatively few CPUs.
424
425	  Say N if you are unsure.
426
427config TREE_RCU_TRACE
428	def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
429	select DEBUG_FS
430	help
431	  This option provides tracing for the TREE_RCU and
432	  TREE_PREEMPT_RCU implementations, permitting Makefile to
433	  trivially select kernel/rcutree_trace.c.
434
435endmenu # "RCU Subsystem"
436
437config IKCONFIG
438	tristate "Kernel .config support"
439	---help---
440	  This option enables the complete Linux kernel ".config" file
441	  contents to be saved in the kernel. It provides documentation
442	  of which kernel options are used in a running kernel or in an
443	  on-disk kernel.  This information can be extracted from the kernel
444	  image file with the script scripts/extract-ikconfig and used as
445	  input to rebuild the current kernel or to build another kernel.
446	  It can also be extracted from a running kernel by reading
447	  /proc/config.gz if enabled (below).
448
449config IKCONFIG_PROC
450	bool "Enable access to .config through /proc/config.gz"
451	depends on IKCONFIG && PROC_FS
452	---help---
453	  This option enables access to the kernel configuration file
454	  through /proc/config.gz.
455
456config LOG_BUF_SHIFT
457	int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
458	range 12 21
459	default 17
460	help
461	  Select kernel log buffer size as a power of 2.
462	  Examples:
463	  	     17 => 128 KB
464		     16 => 64 KB
465	             15 => 32 KB
466	             14 => 16 KB
467		     13 =>  8 KB
468		     12 =>  4 KB
469
470#
471# Architectures with an unreliable sched_clock() should select this:
472#
473config HAVE_UNSTABLE_SCHED_CLOCK
474	bool
475
476menuconfig CGROUPS
477	boolean "Control Group support"
478	depends on EVENTFD
479	help
480	  This option adds support for grouping sets of processes together, for
481	  use with process control subsystems such as Cpusets, CFS, memory
482	  controls or device isolation.
483	  See
484		- Documentation/scheduler/sched-design-CFS.txt	(CFS)
485		- Documentation/cgroups/ (features for grouping, isolation
486					  and resource control)
487
488	  Say N if unsure.
489
490if CGROUPS
491
492config CGROUP_DEBUG
493	bool "Example debug cgroup subsystem"
494	depends on CGROUPS
495	default n
496	help
497	  This option enables a simple cgroup subsystem that
498	  exports useful debugging information about the cgroups
499	  framework.
500
501	  Say N if unsure.
502
503config CGROUP_NS
504	bool "Namespace cgroup subsystem"
505	depends on CGROUPS
506	help
507	  Provides a simple namespace cgroup subsystem to
508	  provide hierarchical naming of sets of namespaces,
509	  for instance virtual servers and checkpoint/restart
510	  jobs.
511
512config CGROUP_FREEZER
513	bool "Freezer cgroup subsystem"
514	depends on CGROUPS
515	help
516	  Provides a way to freeze and unfreeze all tasks in a
517	  cgroup.
518
519config CGROUP_DEVICE
520	bool "Device controller for cgroups"
521	depends on CGROUPS && EXPERIMENTAL
522	help
523	  Provides a cgroup implementing whitelists for devices which
524	  a process in the cgroup can mknod or open.
525
526config CPUSETS
527	bool "Cpuset support"
528	depends on CGROUPS
529	help
530	  This option will let you create and manage CPUSETs which
531	  allow dynamically partitioning a system into sets of CPUs and
532	  Memory Nodes and assigning tasks to run only within those sets.
533	  This is primarily useful on large SMP or NUMA systems.
534
535	  Say N if unsure.
536
537config PROC_PID_CPUSET
538	bool "Include legacy /proc/<pid>/cpuset file"
539	depends on CPUSETS
540	default y
541
542config CGROUP_CPUACCT
543	bool "Simple CPU accounting cgroup subsystem"
544	depends on CGROUPS
545	help
546	  Provides a simple Resource Controller for monitoring the
547	  total CPU consumed by the tasks in a cgroup.
548
549config RESOURCE_COUNTERS
550	bool "Resource counters"
551	help
552	  This option enables controller independent resource accounting
553	  infrastructure that works with cgroups.
554	depends on CGROUPS
555
556config CGROUP_MEM_RES_CTLR
557	bool "Memory Resource Controller for Control Groups"
558	depends on CGROUPS && RESOURCE_COUNTERS
559	select MM_OWNER
560	help
561	  Provides a memory resource controller that manages both anonymous
562	  memory and page cache. (See Documentation/cgroups/memory.txt)
563
564	  Note that setting this option increases fixed memory overhead
565	  associated with each page of memory in the system. By this,
566	  20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
567	  usage tracking struct at boot. Total amount of this is printed out
568	  at boot.
569
570	  Only enable when you're ok with these trade offs and really
571	  sure you need the memory resource controller. Even when you enable
572	  this, you can set "cgroup_disable=memory" at your boot option to
573	  disable memory resource controller and you can avoid overheads.
574	  (and lose benefits of memory resource controller)
575
576	  This config option also selects MM_OWNER config option, which
577	  could in turn add some fork/exit overhead.
578
579config CGROUP_MEM_RES_CTLR_SWAP
580	bool "Memory Resource Controller Swap Extension"
581	depends on CGROUP_MEM_RES_CTLR && SWAP
582	help
583	  Add swap management feature to memory resource controller. When you
584	  enable this, you can limit mem+swap usage per cgroup. In other words,
585	  when you disable this, memory resource controller has no cares to
586	  usage of swap...a process can exhaust all of the swap. This extension
587	  is useful when you want to avoid exhaustion swap but this itself
588	  adds more overheads and consumes memory for remembering information.
589	  Especially if you use 32bit system or small memory system, please
590	  be careful about enabling this. When memory resource controller
591	  is disabled by boot option, this will be automatically disabled and
592	  there will be no overhead from this. Even when you set this config=y,
593	  if boot option "noswapaccount" is set, swap will not be accounted.
594	  Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
595	  size is 4096bytes, 512k per 1Gbytes of swap.
596
597menuconfig CGROUP_SCHED
598	bool "Group CPU scheduler"
599	depends on EXPERIMENTAL && CGROUPS
600	default n
601	help
602	  This feature lets CPU scheduler recognize task groups and control CPU
603	  bandwidth allocation to such task groups. It uses cgroups to group
604	  tasks.
605
606if CGROUP_SCHED
607config FAIR_GROUP_SCHED
608	bool "Group scheduling for SCHED_OTHER"
609	depends on CGROUP_SCHED
610	default CGROUP_SCHED
611
612config RT_GROUP_SCHED
613	bool "Group scheduling for SCHED_RR/FIFO"
614	depends on EXPERIMENTAL
615	depends on CGROUP_SCHED
616	default n
617	help
618	  This feature lets you explicitly allocate real CPU bandwidth
619	  to task groups. If enabled, it will also make it impossible to
620	  schedule realtime tasks for non-root users until you allocate
621	  realtime bandwidth for them.
622	  See Documentation/scheduler/sched-rt-group.txt for more information.
623
624endif #CGROUP_SCHED
625
626config BLK_CGROUP
627	tristate "Block IO controller"
628	depends on CGROUPS && BLOCK
629	default n
630	---help---
631	Generic block IO controller cgroup interface. This is the common
632	cgroup interface which should be used by various IO controlling
633	policies.
634
635	Currently, CFQ IO scheduler uses it to recognize task groups and
636	control disk bandwidth allocation (proportional time slice allocation)
637	to such task groups.
638
639	This option only enables generic Block IO controller infrastructure.
640	One needs to also enable actual IO controlling logic in CFQ for it
641	to take effect. (CONFIG_CFQ_GROUP_IOSCHED=y).
642
643	See Documentation/cgroups/blkio-controller.txt for more information.
644
645config DEBUG_BLK_CGROUP
646	bool "Enable Block IO controller debugging"
647	depends on BLK_CGROUP
648	default n
649	---help---
650	Enable some debugging help. Currently it exports additional stat
651	files in a cgroup which can be useful for debugging.
652
653endif # CGROUPS
654
655config MM_OWNER
656	bool
657
658config SYSFS_DEPRECATED
659	bool
660
661config SYSFS_DEPRECATED_V2
662	bool "enable deprecated sysfs features to support old userspace tools"
663	depends on SYSFS
664	default n
665	select SYSFS_DEPRECATED
666	help
667	  This option switches the layout of sysfs to the deprecated
668	  version. Do not use it on recent distributions.
669
670	  The current sysfs layout features a unified device tree at
671	  /sys/devices/, which is able to express a hierarchy between
672	  class devices. If the deprecated option is set to Y, the
673	  unified device tree is split into a bus device tree at
674	  /sys/devices/ and several individual class device trees at
675	  /sys/class/. The class and bus devices will be connected by
676	  "<subsystem>:<name>" and the "device" links. The "block"
677	  class devices, will not show up in /sys/class/block/. Some
678	  subsystems will suppress the creation of some devices which
679	  depend on the unified device tree.
680
681	  This option is not a pure compatibility option that can
682	  be safely enabled on newer distributions. It will change the
683	  layout of sysfs to the non-extensible deprecated version,
684	  and disable some features, which can not be exported without
685	  confusing older userspace tools. Since 2007/2008 all major
686	  distributions do not enable this option, and ship no tools which
687	  depend on the deprecated layout or this option.
688
689	  If you are using a new kernel on an older distribution, or use
690	  older userspace tools, you might need to say Y here. Do not say Y,
691	  if the original kernel, that came with your distribution, has
692	  this option set to N.
693
694config RELAY
695	bool "Kernel->user space relay support (formerly relayfs)"
696	help
697	  This option enables support for relay interface support in
698	  certain file systems (such as debugfs).
699	  It is designed to provide an efficient mechanism for tools and
700	  facilities to relay large amounts of data from kernel space to
701	  user space.
702
703	  If unsure, say N.
704
705config NAMESPACES
706	bool "Namespaces support" if EMBEDDED
707	default !EMBEDDED
708	help
709	  Provides the way to make tasks work with different objects using
710	  the same id. For example same IPC id may refer to different objects
711	  or same user id or pid may refer to different tasks when used in
712	  different namespaces.
713
714config UTS_NS
715	bool "UTS namespace"
716	depends on NAMESPACES
717	help
718	  In this namespace tasks see different info provided with the
719	  uname() system call
720
721config IPC_NS
722	bool "IPC namespace"
723	depends on NAMESPACES && (SYSVIPC || POSIX_MQUEUE)
724	help
725	  In this namespace tasks work with IPC ids which correspond to
726	  different IPC objects in different namespaces.
727
728config USER_NS
729	bool "User namespace (EXPERIMENTAL)"
730	depends on NAMESPACES && EXPERIMENTAL
731	help
732	  This allows containers, i.e. vservers, to use user namespaces
733	  to provide different user info for different servers.
734	  If unsure, say N.
735
736config PID_NS
737	bool "PID Namespaces (EXPERIMENTAL)"
738	default n
739	depends on NAMESPACES && EXPERIMENTAL
740	help
741	  Support process id namespaces.  This allows having multiple
742	  processes with the same pid as long as they are in different
743	  pid namespaces.  This is a building block of containers.
744
745	  Unless you want to work with an experimental feature
746	  say N here.
747
748config NET_NS
749	bool "Network namespace"
750	default n
751	depends on NAMESPACES && EXPERIMENTAL && NET
752	help
753	  Allow user space to create what appear to be multiple instances
754	  of the network stack.
755
756config BLK_DEV_INITRD
757	bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
758	depends on BROKEN || !FRV
759	help
760	  The initial RAM filesystem is a ramfs which is loaded by the
761	  boot loader (loadlin or lilo) and that is mounted as root
762	  before the normal boot procedure. It is typically used to
763	  load modules needed to mount the "real" root file system,
764	  etc. See <file:Documentation/initrd.txt> for details.
765
766	  If RAM disk support (BLK_DEV_RAM) is also included, this
767	  also enables initial RAM disk (initrd) support and adds
768	  15 Kbytes (more on some other architectures) to the kernel size.
769
770	  If unsure say Y.
771
772if BLK_DEV_INITRD
773
774source "usr/Kconfig"
775
776endif
777
778config CC_OPTIMIZE_FOR_SIZE
779	bool "Optimize for size"
780	default y
781	help
782	  Enabling this option will pass "-Os" instead of "-O2" to gcc
783	  resulting in a smaller kernel.
784
785	  If unsure, say Y.
786
787config SYSCTL
788	bool
789
790config ANON_INODES
791	bool
792
793menuconfig EMBEDDED
794	bool "Configure standard kernel features (for small systems)"
795	help
796	  This option allows certain base kernel options and settings
797          to be disabled or tweaked. This is for specialized
798          environments which can tolerate a "non-standard" kernel.
799          Only use this if you really know what you are doing.
800
801config UID16
802	bool "Enable 16-bit UID system calls" if EMBEDDED
803	depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
804	default y
805	help
806	  This enables the legacy 16-bit UID syscall wrappers.
807
808config SYSCTL_SYSCALL
809	bool "Sysctl syscall support" if EMBEDDED
810	depends on PROC_SYSCTL
811	default y
812	select SYSCTL
813	---help---
814	  sys_sysctl uses binary paths that have been found challenging
815	  to properly maintain and use.  The interface in /proc/sys
816	  using paths with ascii names is now the primary path to this
817	  information.
818
819	  Almost nothing using the binary sysctl interface so if you are
820	  trying to save some space it is probably safe to disable this,
821	  making your kernel marginally smaller.
822
823	  If unsure say Y here.
824
825config KALLSYMS
826	 bool "Load all symbols for debugging/ksymoops" if EMBEDDED
827	 default y
828	 help
829	   Say Y here to let the kernel print out symbolic crash information and
830	   symbolic stack backtraces. This increases the size of the kernel
831	   somewhat, as all symbols have to be loaded into the kernel image.
832
833config KALLSYMS_ALL
834	bool "Include all symbols in kallsyms"
835	depends on DEBUG_KERNEL && KALLSYMS
836	help
837	   Normally kallsyms only contains the symbols of functions, for nicer
838	   OOPS messages.  Some debuggers can use kallsyms for other
839	   symbols too: say Y here to include all symbols, if you need them 
840	   and you don't care about adding 300k to the size of your kernel.
841
842	   Say N.
843
844config KALLSYMS_EXTRA_PASS
845	bool "Do an extra kallsyms pass"
846	depends on KALLSYMS
847	help
848	   If kallsyms is not working correctly, the build will fail with
849	   inconsistent kallsyms data.  If that occurs, log a bug report and
850	   turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
851	   Always say N here unless you find a bug in kallsyms, which must be
852	   reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
853	   you wait for kallsyms to be fixed.
854
855
856config HOTPLUG
857	bool "Support for hot-pluggable devices" if EMBEDDED
858	default y
859	help
860	  This option is provided for the case where no hotplug or uevent
861	  capabilities is wanted by the kernel.  You should only consider
862	  disabling this option for embedded systems that do not use modules, a
863	  dynamic /dev tree, or dynamic device discovery.  Just say Y.
864
865config PRINTK
866	default y
867	bool "Enable support for printk" if EMBEDDED
868	help
869	  This option enables normal printk support. Removing it
870	  eliminates most of the message strings from the kernel image
871	  and makes the kernel more or less silent. As this makes it
872	  very difficult to diagnose system problems, saying N here is
873	  strongly discouraged.
874
875config BUG
876	bool "BUG() support" if EMBEDDED
877	default y
878	help
879          Disabling this option eliminates support for BUG and WARN, reducing
880          the size of your kernel image and potentially quietly ignoring
881          numerous fatal conditions. You should only consider disabling this
882          option for embedded systems with no facilities for reporting errors.
883          Just say Y.
884
885config ELF_CORE
886	default y
887	bool "Enable ELF core dumps" if EMBEDDED
888	help
889	  Enable support for generating core dumps. Disabling saves about 4k.
890
891config PCSPKR_PLATFORM
892	bool "Enable PC-Speaker support" if EMBEDDED
893	depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
894	default y
895	help
896          This option allows to disable the internal PC-Speaker
897          support, saving some memory.
898
899config BASE_FULL
900	default y
901	bool "Enable full-sized data structures for core" if EMBEDDED
902	help
903	  Disabling this option reduces the size of miscellaneous core
904	  kernel data structures. This saves memory on small machines,
905	  but may reduce performance.
906
907config FUTEX
908	bool "Enable futex support" if EMBEDDED
909	default y
910	select RT_MUTEXES
911	help
912	  Disabling this option will cause the kernel to be built without
913	  support for "fast userspace mutexes".  The resulting kernel may not
914	  run glibc-based applications correctly.
915
916config EPOLL
917	bool "Enable eventpoll support" if EMBEDDED
918	default y
919	select ANON_INODES
920	help
921	  Disabling this option will cause the kernel to be built without
922	  support for epoll family of system calls.
923
924config SIGNALFD
925	bool "Enable signalfd() system call" if EMBEDDED
926	select ANON_INODES
927	default y
928	help
929	  Enable the signalfd() system call that allows to receive signals
930	  on a file descriptor.
931
932	  If unsure, say Y.
933
934config TIMERFD
935	bool "Enable timerfd() system call" if EMBEDDED
936	select ANON_INODES
937	default y
938	help
939	  Enable the timerfd() system call that allows to receive timer
940	  events on a file descriptor.
941
942	  If unsure, say Y.
943
944config EVENTFD
945	bool "Enable eventfd() system call" if EMBEDDED
946	select ANON_INODES
947	default y
948	help
949	  Enable the eventfd() system call that allows to receive both
950	  kernel notification (ie. KAIO) or userspace notifications.
951
952	  If unsure, say Y.
953
954config SHMEM
955	bool "Use full shmem filesystem" if EMBEDDED
956	default y
957	depends on MMU
958	help
959	  The shmem is an internal filesystem used to manage shared memory.
960	  It is backed by swap and manages resource limits. It is also exported
961	  to userspace as tmpfs if TMPFS is enabled. Disabling this
962	  option replaces shmem and tmpfs with the much simpler ramfs code,
963	  which may be appropriate on small systems without swap.
964
965config AIO
966	bool "Enable AIO support" if EMBEDDED
967	default y
968	help
969	  This option enables POSIX asynchronous I/O which may by used
970          by some high performance threaded applications. Disabling
971          this option saves about 7k.
972
973config HAVE_PERF_EVENTS
974	bool
975	help
976	  See tools/perf/design.txt for details.
977
978config PERF_USE_VMALLOC
979	bool
980	help
981	  See tools/perf/design.txt for details
982
983menu "Kernel Performance Events And Counters"
984
985config PERF_EVENTS
986	bool "Kernel performance events and counters"
987	default y if (PROFILING || PERF_COUNTERS)
988	depends on HAVE_PERF_EVENTS
989	select ANON_INODES
990	help
991	  Enable kernel support for various performance events provided
992	  by software and hardware.
993
994	  Software events are supported either built-in or via the
995	  use of generic tracepoints.
996
997	  Most modern CPUs support performance events via performance
998	  counter registers. These registers count the number of certain
999	  types of hw events: such as instructions executed, cachemisses
1000	  suffered, or branches mis-predicted - without slowing down the
1001	  kernel or applications. These registers can also trigger interrupts
1002	  when a threshold number of events have passed - and can thus be
1003	  used to profile the code that runs on that CPU.
1004
1005	  The Linux Performance Event subsystem provides an abstraction of
1006	  these software and hardware event capabilities, available via a
1007	  system call and used by the "perf" utility in tools/perf/. It
1008	  provides per task and per CPU counters, and it provides event
1009	  capabilities on top of those.
1010
1011	  Say Y if unsure.
1012
1013config PERF_COUNTERS
1014	bool "Kernel performance counters (old config option)"
1015	depends on HAVE_PERF_EVENTS
1016	help
1017	  This config has been obsoleted by the PERF_EVENTS
1018	  config option - please see that one for details.
1019
1020	  It has no effect on the kernel whether you enable
1021	  it or not, it is a compatibility placeholder.
1022
1023	  Say N if unsure.
1024
1025config DEBUG_PERF_USE_VMALLOC
1026	default n
1027	bool "Debug: use vmalloc to back perf mmap() buffers"
1028	depends on PERF_EVENTS && DEBUG_KERNEL
1029	select PERF_USE_VMALLOC
1030	help
1031	 Use vmalloc memory to back perf mmap() buffers.
1032
1033	 Mostly useful for debugging the vmalloc code on platforms
1034	 that don't require it.
1035
1036	 Say N if unsure.
1037
1038endmenu
1039
1040config VM_EVENT_COUNTERS
1041	default y
1042	bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
1043	help
1044	  VM event counters are needed for event counts to be shown.
1045	  This option allows the disabling of the VM event counters
1046	  on EMBEDDED systems.  /proc/vmstat will only show page counts
1047	  if VM event counters are disabled.
1048
1049config PCI_QUIRKS
1050	default y
1051	bool "Enable PCI quirk workarounds" if EMBEDDED
1052	depends on PCI
1053	help
1054	  This enables workarounds for various PCI chipset
1055          bugs/quirks. Disable this only if your target machine is
1056          unaffected by PCI quirks.
1057
1058config SLUB_DEBUG
1059	default y
1060	bool "Enable SLUB debugging support" if EMBEDDED
1061	depends on SLUB && SYSFS
1062	help
1063	  SLUB has extensive debug support features. Disabling these can
1064	  result in significant savings in code size. This also disables
1065	  SLUB sysfs support. /sys/slab will not exist and there will be
1066	  no support for cache validation etc.
1067
1068config COMPAT_BRK
1069	bool "Disable heap randomization"
1070	default y
1071	help
1072	  Randomizing heap placement makes heap exploits harder, but it
1073	  also breaks ancient binaries (including anything libc5 based).
1074	  This option changes the bootup default to heap randomization
1075	  disabled, and can be overridden at runtime by setting
1076	  /proc/sys/kernel/randomize_va_space to 2.
1077
1078	  On non-ancient distros (post-2000 ones) N is usually a safe choice.
1079
1080choice
1081	prompt "Choose SLAB allocator"
1082	default SLUB
1083	help
1084	   This option allows to select a slab allocator.
1085
1086config SLAB
1087	bool "SLAB"
1088	help
1089	  The regular slab allocator that is established and known to work
1090	  well in all environments. It organizes cache hot objects in
1091	  per cpu and per node queues.
1092
1093config SLUB
1094	bool "SLUB (Unqueued Allocator)"
1095	help
1096	   SLUB is a slab allocator that minimizes cache line usage
1097	   instead of managing queues of cached objects (SLAB approach).
1098	   Per cpu caching is realized using slabs of objects instead
1099	   of queues of objects. SLUB can use memory efficiently
1100	   and has enhanced diagnostics. SLUB is the default choice for
1101	   a slab allocator.
1102
1103config SLOB
1104	depends on EMBEDDED
1105	bool "SLOB (Simple Allocator)"
1106	help
1107	   SLOB replaces the stock allocator with a drastically simpler
1108	   allocator. SLOB is generally more space efficient but
1109	   does not perform as well on large systems.
1110
1111endchoice
1112
1113config MMAP_ALLOW_UNINITIALIZED
1114	bool "Allow mmapped anonymous memory to be uninitialized"
1115	depends on EMBEDDED && !MMU
1116	default n
1117	help
1118	  Normally, and according to the Linux spec, anonymous memory obtained
1119	  from mmap() has it's contents cleared before it is passed to
1120	  userspace.  Enabling this config option allows you to request that
1121	  mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1122	  providing a huge performance boost.  If this option is not enabled,
1123	  then the flag will be ignored.
1124
1125	  This is taken advantage of by uClibc's malloc(), and also by
1126	  ELF-FDPIC binfmt's brk and stack allocator.
1127
1128	  Because of the obvious security issues, this option should only be
1129	  enabled on embedded devices where you control what is run in
1130	  userspace.  Since that isn't generally a problem on no-MMU systems,
1131	  it is normally safe to say Y here.
1132
1133	  See Documentation/nommu-mmap.txt for more information.
1134
1135config PROFILING
1136	bool "Profiling support"
1137	help
1138	  Say Y here to enable the extended profiling support mechanisms used
1139	  by profilers such as OProfile.
1140
1141#
1142# Place an empty function call at each tracepoint site. Can be
1143# dynamically changed for a probe function.
1144#
1145config TRACEPOINTS
1146	bool
1147
1148source "arch/Kconfig"
1149
1150endmenu		# General setup
1151
1152config HAVE_GENERIC_DMA_COHERENT
1153	bool
1154	default n
1155
1156config SLABINFO
1157	bool
1158	depends on PROC_FS
1159	depends on SLAB || SLUB_DEBUG
1160	default y
1161
1162config RT_MUTEXES
1163	boolean
1164
1165config BASE_SMALL
1166	int
1167	default 0 if BASE_FULL
1168	default 1 if !BASE_FULL
1169
1170menuconfig MODULES
1171	bool "Enable loadable module support"
1172	help
1173	  Kernel modules are small pieces of compiled code which can
1174	  be inserted in the running kernel, rather than being
1175	  permanently built into the kernel.  You use the "modprobe"
1176	  tool to add (and sometimes remove) them.  If you say Y here,
1177	  many parts of the kernel can be built as modules (by
1178	  answering M instead of Y where indicated): this is most
1179	  useful for infrequently used options which are not required
1180	  for booting.  For more information, see the man pages for
1181	  modprobe, lsmod, modinfo, insmod and rmmod.
1182
1183	  If you say Y here, you will need to run "make
1184	  modules_install" to put the modules under /lib/modules/
1185	  where modprobe can find them (you may need to be root to do
1186	  this).
1187
1188	  If unsure, say Y.
1189
1190if MODULES
1191
1192config MODULE_FORCE_LOAD
1193	bool "Forced module loading"
1194	default n
1195	help
1196	  Allow loading of modules without version information (ie. modprobe
1197	  --force).  Forced module loading sets the 'F' (forced) taint flag and
1198	  is usually a really bad idea.
1199
1200config MODULE_UNLOAD
1201	bool "Module unloading"
1202	help
1203	  Without this option you will not be able to unload any
1204	  modules (note that some modules may not be unloadable
1205	  anyway), which makes your kernel smaller, faster
1206	  and simpler.  If unsure, say Y.
1207
1208config MODULE_FORCE_UNLOAD
1209	bool "Forced module unloading"
1210	depends on MODULE_UNLOAD && EXPERIMENTAL
1211	help
1212	  This option allows you to force a module to unload, even if the
1213	  kernel believes it is unsafe: the kernel will remove the module
1214	  without waiting for anyone to stop using it (using the -f option to
1215	  rmmod).  This is mainly for kernel developers and desperate users.
1216	  If unsure, say N.
1217
1218config MODVERSIONS
1219	bool "Module versioning support"
1220	help
1221	  Usually, you have to use modules compiled with your kernel.
1222	  Saying Y here makes it sometimes possible to use modules
1223	  compiled for different kernels, by adding enough information
1224	  to the modules to (hopefully) spot any changes which would
1225	  make them incompatible with the kernel you are running.  If
1226	  unsure, say N.
1227
1228config MODULE_SRCVERSION_ALL
1229	bool "Source checksum for all modules"
1230	help
1231	  Modules which contain a MODULE_VERSION get an extra "srcversion"
1232	  field inserted into their modinfo section, which contains a
1233    	  sum of the source files which made it.  This helps maintainers
1234	  see exactly which source was used to build a module (since
1235	  others sometimes change the module source without updating
1236	  the version).  With this option, such a "srcversion" field
1237	  will be created for all modules.  If unsure, say N.
1238
1239endif # MODULES
1240
1241config INIT_ALL_POSSIBLE
1242	bool
1243	help
1244	  Back when each arch used to define their own cpu_online_map and
1245	  cpu_possible_map, some of them chose to initialize cpu_possible_map
1246	  with all 1s, and others with all 0s.  When they were centralised,
1247	  it was better to provide this option than to break all the archs
1248	  and have several arch maintainers pursuing me down dark alleys.
1249
1250config STOP_MACHINE
1251	bool
1252	default y
1253	depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1254	help
1255	  Need stop_machine() primitive.
1256
1257source "block/Kconfig"
1258
1259config PREEMPT_NOTIFIERS
1260	bool
1261
1262config PADATA
1263	depends on SMP
1264	bool
1265
1266source "kernel/Kconfig.locks"
1267