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