xref: /openbmc/linux/init/Kconfig (revision 293d5b43)
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
23config IRQ_WORK
24	bool
25
26config BUILDTIME_EXTABLE_SORT
27	bool
28
29menu "General setup"
30
31config BROKEN
32	bool
33
34config BROKEN_ON_SMP
35	bool
36	depends on BROKEN || !SMP
37	default y
38
39config INIT_ENV_ARG_LIMIT
40	int
41	default 32 if !UML
42	default 128 if UML
43	help
44	  Maximum of each of the number of arguments and environment
45	  variables passed to init from the kernel command line.
46
47
48config CROSS_COMPILE
49	string "Cross-compiler tool prefix"
50	help
51	  Same as running 'make CROSS_COMPILE=prefix-' but stored for
52	  default make runs in this kernel build directory.  You don't
53	  need to set this unless you want the configured kernel build
54	  directory to select the cross-compiler automatically.
55
56config COMPILE_TEST
57	bool "Compile also drivers which will not load"
58	depends on !UML
59	default n
60	help
61	  Some drivers can be compiled on a different platform than they are
62	  intended to be run on. Despite they cannot be loaded there (or even
63	  when they load they cannot be used due to missing HW support),
64	  developers still, opposing to distributors, might want to build such
65	  drivers to compile-test them.
66
67	  If you are a developer and want to build everything available, say Y
68	  here. If you are a user/distributor, say N here to exclude useless
69	  drivers to be distributed.
70
71config LOCALVERSION
72	string "Local version - append to kernel release"
73	help
74	  Append an extra string to the end of your kernel version.
75	  This will show up when you type uname, for example.
76	  The string you set here will be appended after the contents of
77	  any files with a filename matching localversion* in your
78	  object and source tree, in that order.  Your total string can
79	  be a maximum of 64 characters.
80
81config LOCALVERSION_AUTO
82	bool "Automatically append version information to the version string"
83	default y
84	depends on !COMPILE_TEST
85	help
86	  This will try to automatically determine if the current tree is a
87	  release tree by looking for git tags that belong to the current
88	  top of tree revision.
89
90	  A string of the format -gxxxxxxxx will be added to the localversion
91	  if a git-based tree is found.  The string generated by this will be
92	  appended after any matching localversion* files, and after the value
93	  set in CONFIG_LOCALVERSION.
94
95	  (The actual string used here is the first eight characters produced
96	  by running the command:
97
98	    $ git rev-parse --verify HEAD
99
100	  which is done within the script "scripts/setlocalversion".)
101
102config HAVE_KERNEL_GZIP
103	bool
104
105config HAVE_KERNEL_BZIP2
106	bool
107
108config HAVE_KERNEL_LZMA
109	bool
110
111config HAVE_KERNEL_XZ
112	bool
113
114config HAVE_KERNEL_LZO
115	bool
116
117config HAVE_KERNEL_LZ4
118	bool
119
120choice
121	prompt "Kernel compression mode"
122	default KERNEL_GZIP
123	depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
124	help
125	  The linux kernel is a kind of self-extracting executable.
126	  Several compression algorithms are available, which differ
127	  in efficiency, compression and decompression speed.
128	  Compression speed is only relevant when building a kernel.
129	  Decompression speed is relevant at each boot.
130
131	  If you have any problems with bzip2 or lzma compressed
132	  kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
133	  version of this functionality (bzip2 only), for 2.4, was
134	  supplied by Christian Ludwig)
135
136	  High compression options are mostly useful for users, who
137	  are low on disk space (embedded systems), but for whom ram
138	  size matters less.
139
140	  If in doubt, select 'gzip'
141
142config KERNEL_GZIP
143	bool "Gzip"
144	depends on HAVE_KERNEL_GZIP
145	help
146	  The old and tried gzip compression. It provides a good balance
147	  between compression ratio and decompression speed.
148
149config KERNEL_BZIP2
150	bool "Bzip2"
151	depends on HAVE_KERNEL_BZIP2
152	help
153	  Its compression ratio and speed is intermediate.
154	  Decompression speed is slowest among the choices.  The kernel
155	  size is about 10% smaller with bzip2, in comparison to gzip.
156	  Bzip2 uses a large amount of memory. For modern kernels you
157	  will need at least 8MB RAM or more for booting.
158
159config KERNEL_LZMA
160	bool "LZMA"
161	depends on HAVE_KERNEL_LZMA
162	help
163	  This compression algorithm's ratio is best.  Decompression speed
164	  is between gzip and bzip2.  Compression is slowest.
165	  The kernel size is about 33% smaller with LZMA in comparison to gzip.
166
167config KERNEL_XZ
168	bool "XZ"
169	depends on HAVE_KERNEL_XZ
170	help
171	  XZ uses the LZMA2 algorithm and instruction set specific
172	  BCJ filters which can improve compression ratio of executable
173	  code. The size of the kernel is about 30% smaller with XZ in
174	  comparison to gzip. On architectures for which there is a BCJ
175	  filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
176	  will create a few percent smaller kernel than plain LZMA.
177
178	  The speed is about the same as with LZMA: The decompression
179	  speed of XZ is better than that of bzip2 but worse than gzip
180	  and LZO. Compression is slow.
181
182config KERNEL_LZO
183	bool "LZO"
184	depends on HAVE_KERNEL_LZO
185	help
186	  Its compression ratio is the poorest among the choices. The kernel
187	  size is about 10% bigger than gzip; however its speed
188	  (both compression and decompression) is the fastest.
189
190config KERNEL_LZ4
191	bool "LZ4"
192	depends on HAVE_KERNEL_LZ4
193	help
194	  LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
195	  A preliminary version of LZ4 de/compression tool is available at
196	  <https://code.google.com/p/lz4/>.
197
198	  Its compression ratio is worse than LZO. The size of the kernel
199	  is about 8% bigger than LZO. But the decompression speed is
200	  faster than LZO.
201
202endchoice
203
204config DEFAULT_HOSTNAME
205	string "Default hostname"
206	default "(none)"
207	help
208	  This option determines the default system hostname before userspace
209	  calls sethostname(2). The kernel traditionally uses "(none)" here,
210	  but you may wish to use a different default here to make a minimal
211	  system more usable with less configuration.
212
213config SWAP
214	bool "Support for paging of anonymous memory (swap)"
215	depends on MMU && BLOCK
216	default y
217	help
218	  This option allows you to choose whether you want to have support
219	  for so called swap devices or swap files in your kernel that are
220	  used to provide more virtual memory than the actual RAM present
221	  in your computer.  If unsure say Y.
222
223config SYSVIPC
224	bool "System V IPC"
225	---help---
226	  Inter Process Communication is a suite of library functions and
227	  system calls which let processes (running programs) synchronize and
228	  exchange information. It is generally considered to be a good thing,
229	  and some programs won't run unless you say Y here. In particular, if
230	  you want to run the DOS emulator dosemu under Linux (read the
231	  DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
232	  you'll need to say Y here.
233
234	  You can find documentation about IPC with "info ipc" and also in
235	  section 6.4 of the Linux Programmer's Guide, available from
236	  <http://www.tldp.org/guides.html>.
237
238config SYSVIPC_SYSCTL
239	bool
240	depends on SYSVIPC
241	depends on SYSCTL
242	default y
243
244config POSIX_MQUEUE
245	bool "POSIX Message Queues"
246	depends on NET
247	---help---
248	  POSIX variant of message queues is a part of IPC. In POSIX message
249	  queues every message has a priority which decides about succession
250	  of receiving it by a process. If you want to compile and run
251	  programs written e.g. for Solaris with use of its POSIX message
252	  queues (functions mq_*) say Y here.
253
254	  POSIX message queues are visible as a filesystem called 'mqueue'
255	  and can be mounted somewhere if you want to do filesystem
256	  operations on message queues.
257
258	  If unsure, say Y.
259
260config POSIX_MQUEUE_SYSCTL
261	bool
262	depends on POSIX_MQUEUE
263	depends on SYSCTL
264	default y
265
266config CROSS_MEMORY_ATTACH
267	bool "Enable process_vm_readv/writev syscalls"
268	depends on MMU
269	default y
270	help
271	  Enabling this option adds the system calls process_vm_readv and
272	  process_vm_writev which allow a process with the correct privileges
273	  to directly read from or write to another process' address space.
274	  See the man page for more details.
275
276config FHANDLE
277	bool "open by fhandle syscalls" if EXPERT
278	select EXPORTFS
279	default y
280	help
281	  If you say Y here, a user level program will be able to map
282	  file names to handle and then later use the handle for
283	  different file system operations. This is useful in implementing
284	  userspace file servers, which now track files using handles instead
285	  of names. The handle would remain the same even if file names
286	  get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
287	  syscalls.
288
289config USELIB
290	bool "uselib syscall"
291	def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
292	help
293	  This option enables the uselib syscall, a system call used in the
294	  dynamic linker from libc5 and earlier.  glibc does not use this
295	  system call.  If you intend to run programs built on libc5 or
296	  earlier, you may need to enable this syscall.  Current systems
297	  running glibc can safely disable this.
298
299config AUDIT
300	bool "Auditing support"
301	depends on NET
302	help
303	  Enable auditing infrastructure that can be used with another
304	  kernel subsystem, such as SELinux (which requires this for
305	  logging of avc messages output).  System call auditing is included
306	  on architectures which support it.
307
308config HAVE_ARCH_AUDITSYSCALL
309	bool
310
311config AUDITSYSCALL
312	def_bool y
313	depends on AUDIT && HAVE_ARCH_AUDITSYSCALL
314
315config AUDIT_WATCH
316	def_bool y
317	depends on AUDITSYSCALL
318	select FSNOTIFY
319
320config AUDIT_TREE
321	def_bool y
322	depends on AUDITSYSCALL
323	select FSNOTIFY
324
325source "kernel/irq/Kconfig"
326source "kernel/time/Kconfig"
327
328menu "CPU/Task time and stats accounting"
329
330config VIRT_CPU_ACCOUNTING
331	bool
332
333choice
334	prompt "Cputime accounting"
335	default TICK_CPU_ACCOUNTING if !PPC64
336	default VIRT_CPU_ACCOUNTING_NATIVE if PPC64
337
338# Kind of a stub config for the pure tick based cputime accounting
339config TICK_CPU_ACCOUNTING
340	bool "Simple tick based cputime accounting"
341	depends on !S390 && !NO_HZ_FULL
342	help
343	  This is the basic tick based cputime accounting that maintains
344	  statistics about user, system and idle time spent on per jiffies
345	  granularity.
346
347	  If unsure, say Y.
348
349config VIRT_CPU_ACCOUNTING_NATIVE
350	bool "Deterministic task and CPU time accounting"
351	depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL
352	select VIRT_CPU_ACCOUNTING
353	help
354	  Select this option to enable more accurate task and CPU time
355	  accounting.  This is done by reading a CPU counter on each
356	  kernel entry and exit and on transitions within the kernel
357	  between system, softirq and hardirq state, so there is a
358	  small performance impact.  In the case of s390 or IBM POWER > 5,
359	  this also enables accounting of stolen time on logically-partitioned
360	  systems.
361
362config VIRT_CPU_ACCOUNTING_GEN
363	bool "Full dynticks CPU time accounting"
364	depends on HAVE_CONTEXT_TRACKING
365	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
366	select VIRT_CPU_ACCOUNTING
367	select CONTEXT_TRACKING
368	help
369	  Select this option to enable task and CPU time accounting on full
370	  dynticks systems. This accounting is implemented by watching every
371	  kernel-user boundaries using the context tracking subsystem.
372	  The accounting is thus performed at the expense of some significant
373	  overhead.
374
375	  For now this is only useful if you are working on the full
376	  dynticks subsystem development.
377
378	  If unsure, say N.
379
380endchoice
381
382config IRQ_TIME_ACCOUNTING
383	bool "Fine granularity task level IRQ time accounting"
384	depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE
385	help
386	  Select this option to enable fine granularity task irq time
387	  accounting. This is done by reading a timestamp on each
388	  transitions between softirq and hardirq state, so there can be a
389	  small performance impact.
390
391	  If in doubt, say N here.
392
393config BSD_PROCESS_ACCT
394	bool "BSD Process Accounting"
395	depends on MULTIUSER
396	help
397	  If you say Y here, a user level program will be able to instruct the
398	  kernel (via a special system call) to write process accounting
399	  information to a file: whenever a process exits, information about
400	  that process will be appended to the file by the kernel.  The
401	  information includes things such as creation time, owning user,
402	  command name, memory usage, controlling terminal etc. (the complete
403	  list is in the struct acct in <file:include/linux/acct.h>).  It is
404	  up to the user level program to do useful things with this
405	  information.  This is generally a good idea, so say Y.
406
407config BSD_PROCESS_ACCT_V3
408	bool "BSD Process Accounting version 3 file format"
409	depends on BSD_PROCESS_ACCT
410	default n
411	help
412	  If you say Y here, the process accounting information is written
413	  in a new file format that also logs the process IDs of each
414	  process and it's parent. Note that this file format is incompatible
415	  with previous v0/v1/v2 file formats, so you will need updated tools
416	  for processing it. A preliminary version of these tools is available
417	  at <http://www.gnu.org/software/acct/>.
418
419config TASKSTATS
420	bool "Export task/process statistics through netlink"
421	depends on NET
422	depends on MULTIUSER
423	default n
424	help
425	  Export selected statistics for tasks/processes through the
426	  generic netlink interface. Unlike BSD process accounting, the
427	  statistics are available during the lifetime of tasks/processes as
428	  responses to commands. Like BSD accounting, they are sent to user
429	  space on task exit.
430
431	  Say N if unsure.
432
433config TASK_DELAY_ACCT
434	bool "Enable per-task delay accounting"
435	depends on TASKSTATS
436	select SCHED_INFO
437	help
438	  Collect information on time spent by a task waiting for system
439	  resources like cpu, synchronous block I/O completion and swapping
440	  in pages. Such statistics can help in setting a task's priorities
441	  relative to other tasks for cpu, io, rss limits etc.
442
443	  Say N if unsure.
444
445config TASK_XACCT
446	bool "Enable extended accounting over taskstats"
447	depends on TASKSTATS
448	help
449	  Collect extended task accounting data and send the data
450	  to userland for processing over the taskstats interface.
451
452	  Say N if unsure.
453
454config TASK_IO_ACCOUNTING
455	bool "Enable per-task storage I/O accounting"
456	depends on TASK_XACCT
457	help
458	  Collect information on the number of bytes of storage I/O which this
459	  task has caused.
460
461	  Say N if unsure.
462
463endmenu # "CPU/Task time and stats accounting"
464
465menu "RCU Subsystem"
466
467config TREE_RCU
468	bool
469	default y if !PREEMPT && SMP
470	help
471	  This option selects the RCU implementation that is
472	  designed for very large SMP system with hundreds or
473	  thousands of CPUs.  It also scales down nicely to
474	  smaller systems.
475
476config PREEMPT_RCU
477	bool
478	default y if PREEMPT
479	help
480	  This option selects the RCU implementation that is
481	  designed for very large SMP systems with hundreds or
482	  thousands of CPUs, but for which real-time response
483	  is also required.  It also scales down nicely to
484	  smaller systems.
485
486	  Select this option if you are unsure.
487
488config TINY_RCU
489	bool
490	default y if !PREEMPT && !SMP
491	help
492	  This option selects the RCU implementation that is
493	  designed for UP systems from which real-time response
494	  is not required.  This option greatly reduces the
495	  memory footprint of RCU.
496
497config RCU_EXPERT
498	bool "Make expert-level adjustments to RCU configuration"
499	default n
500	help
501	  This option needs to be enabled if you wish to make
502	  expert-level adjustments to RCU configuration.  By default,
503	  no such adjustments can be made, which has the often-beneficial
504	  side-effect of preventing "make oldconfig" from asking you all
505	  sorts of detailed questions about how you would like numerous
506	  obscure RCU options to be set up.
507
508	  Say Y if you need to make expert-level adjustments to RCU.
509
510	  Say N if you are unsure.
511
512config SRCU
513	bool
514	help
515	  This option selects the sleepable version of RCU. This version
516	  permits arbitrary sleeping or blocking within RCU read-side critical
517	  sections.
518
519config TASKS_RCU
520	bool
521	default n
522	depends on !UML
523	select SRCU
524	help
525	  This option enables a task-based RCU implementation that uses
526	  only voluntary context switch (not preemption!), idle, and
527	  user-mode execution as quiescent states.
528
529config RCU_STALL_COMMON
530	def_bool ( TREE_RCU || PREEMPT_RCU || RCU_TRACE )
531	help
532	  This option enables RCU CPU stall code that is common between
533	  the TINY and TREE variants of RCU.  The purpose is to allow
534	  the tiny variants to disable RCU CPU stall warnings, while
535	  making these warnings mandatory for the tree variants.
536
537config CONTEXT_TRACKING
538       bool
539
540config CONTEXT_TRACKING_FORCE
541	bool "Force context tracking"
542	depends on CONTEXT_TRACKING
543	default y if !NO_HZ_FULL
544	help
545	  The major pre-requirement for full dynticks to work is to
546	  support the context tracking subsystem. But there are also
547	  other dependencies to provide in order to make the full
548	  dynticks working.
549
550	  This option stands for testing when an arch implements the
551	  context tracking backend but doesn't yet fullfill all the
552	  requirements to make the full dynticks feature working.
553	  Without the full dynticks, there is no way to test the support
554	  for context tracking and the subsystems that rely on it: RCU
555	  userspace extended quiescent state and tickless cputime
556	  accounting. This option copes with the absence of the full
557	  dynticks subsystem by forcing the context tracking on all
558	  CPUs in the system.
559
560	  Say Y only if you're working on the development of an
561	  architecture backend for the context tracking.
562
563	  Say N otherwise, this option brings an overhead that you
564	  don't want in production.
565
566
567config RCU_FANOUT
568	int "Tree-based hierarchical RCU fanout value"
569	range 2 64 if 64BIT
570	range 2 32 if !64BIT
571	depends on (TREE_RCU || PREEMPT_RCU) && RCU_EXPERT
572	default 64 if 64BIT
573	default 32 if !64BIT
574	help
575	  This option controls the fanout of hierarchical implementations
576	  of RCU, allowing RCU to work efficiently on machines with
577	  large numbers of CPUs.  This value must be at least the fourth
578	  root of NR_CPUS, which allows NR_CPUS to be insanely large.
579	  The default value of RCU_FANOUT should be used for production
580	  systems, but if you are stress-testing the RCU implementation
581	  itself, small RCU_FANOUT values allow you to test large-system
582	  code paths on small(er) systems.
583
584	  Select a specific number if testing RCU itself.
585	  Take the default if unsure.
586
587config RCU_FANOUT_LEAF
588	int "Tree-based hierarchical RCU leaf-level fanout value"
589	range 2 64 if 64BIT
590	range 2 32 if !64BIT
591	depends on (TREE_RCU || PREEMPT_RCU) && RCU_EXPERT
592	default 16
593	help
594	  This option controls the leaf-level fanout of hierarchical
595	  implementations of RCU, and allows trading off cache misses
596	  against lock contention.  Systems that synchronize their
597	  scheduling-clock interrupts for energy-efficiency reasons will
598	  want the default because the smaller leaf-level fanout keeps
599	  lock contention levels acceptably low.  Very large systems
600	  (hundreds or thousands of CPUs) will instead want to set this
601	  value to the maximum value possible in order to reduce the
602	  number of cache misses incurred during RCU's grace-period
603	  initialization.  These systems tend to run CPU-bound, and thus
604	  are not helped by synchronized interrupts, and thus tend to
605	  skew them, which reduces lock contention enough that large
606	  leaf-level fanouts work well.
607
608	  Select a specific number if testing RCU itself.
609
610	  Select the maximum permissible value for large systems.
611
612	  Take the default if unsure.
613
614config RCU_FAST_NO_HZ
615	bool "Accelerate last non-dyntick-idle CPU's grace periods"
616	depends on NO_HZ_COMMON && SMP && RCU_EXPERT
617	default n
618	help
619	  This option permits CPUs to enter dynticks-idle state even if
620	  they have RCU callbacks queued, and prevents RCU from waking
621	  these CPUs up more than roughly once every four jiffies (by
622	  default, you can adjust this using the rcutree.rcu_idle_gp_delay
623	  parameter), thus improving energy efficiency.  On the other
624	  hand, this option increases the duration of RCU grace periods,
625	  for example, slowing down synchronize_rcu().
626
627	  Say Y if energy efficiency is critically important, and you
628	  	don't care about increased grace-period durations.
629
630	  Say N if you are unsure.
631
632config TREE_RCU_TRACE
633	def_bool RCU_TRACE && ( TREE_RCU || PREEMPT_RCU )
634	select DEBUG_FS
635	help
636	  This option provides tracing for the TREE_RCU and
637	  PREEMPT_RCU implementations, permitting Makefile to
638	  trivially select kernel/rcutree_trace.c.
639
640config RCU_BOOST
641	bool "Enable RCU priority boosting"
642	depends on RT_MUTEXES && PREEMPT_RCU && RCU_EXPERT
643	default n
644	help
645	  This option boosts the priority of preempted RCU readers that
646	  block the current preemptible RCU grace period for too long.
647	  This option also prevents heavy loads from blocking RCU
648	  callback invocation for all flavors of RCU.
649
650	  Say Y here if you are working with real-time apps or heavy loads
651	  Say N here if you are unsure.
652
653config RCU_KTHREAD_PRIO
654	int "Real-time priority to use for RCU worker threads"
655	range 1 99 if RCU_BOOST
656	range 0 99 if !RCU_BOOST
657	default 1 if RCU_BOOST
658	default 0 if !RCU_BOOST
659	depends on RCU_EXPERT
660	help
661	  This option specifies the SCHED_FIFO priority value that will be
662	  assigned to the rcuc/n and rcub/n threads and is also the value
663	  used for RCU_BOOST (if enabled). If you are working with a
664	  real-time application that has one or more CPU-bound threads
665	  running at a real-time priority level, you should set
666	  RCU_KTHREAD_PRIO to a priority higher than the highest-priority
667	  real-time CPU-bound application thread.  The default RCU_KTHREAD_PRIO
668	  value of 1 is appropriate in the common case, which is real-time
669	  applications that do not have any CPU-bound threads.
670
671	  Some real-time applications might not have a single real-time
672	  thread that saturates a given CPU, but instead might have
673	  multiple real-time threads that, taken together, fully utilize
674	  that CPU.  In this case, you should set RCU_KTHREAD_PRIO to
675	  a priority higher than the lowest-priority thread that is
676	  conspiring to prevent the CPU from running any non-real-time
677	  tasks.  For example, if one thread at priority 10 and another
678	  thread at priority 5 are between themselves fully consuming
679	  the CPU time on a given CPU, then RCU_KTHREAD_PRIO should be
680	  set to priority 6 or higher.
681
682	  Specify the real-time priority, or take the default if unsure.
683
684config RCU_BOOST_DELAY
685	int "Milliseconds to delay boosting after RCU grace-period start"
686	range 0 3000
687	depends on RCU_BOOST
688	default 500
689	help
690	  This option specifies the time to wait after the beginning of
691	  a given grace period before priority-boosting preempted RCU
692	  readers blocking that grace period.  Note that any RCU reader
693	  blocking an expedited RCU grace period is boosted immediately.
694
695	  Accept the default if unsure.
696
697config RCU_NOCB_CPU
698	bool "Offload RCU callback processing from boot-selected CPUs"
699	depends on TREE_RCU || PREEMPT_RCU
700	depends on RCU_EXPERT || NO_HZ_FULL
701	default n
702	help
703	  Use this option to reduce OS jitter for aggressive HPC or
704	  real-time workloads.	It can also be used to offload RCU
705	  callback invocation to energy-efficient CPUs in battery-powered
706	  asymmetric multiprocessors.
707
708	  This option offloads callback invocation from the set of
709	  CPUs specified at boot time by the rcu_nocbs parameter.
710	  For each such CPU, a kthread ("rcuox/N") will be created to
711	  invoke callbacks, where the "N" is the CPU being offloaded,
712	  and where the "x" is "b" for RCU-bh, "p" for RCU-preempt, and
713	  "s" for RCU-sched.  Nothing prevents this kthread from running
714	  on the specified CPUs, but (1) the kthreads may be preempted
715	  between each callback, and (2) affinity or cgroups can be used
716	  to force the kthreads to run on whatever set of CPUs is desired.
717
718	  Say Y here if you want to help to debug reduced OS jitter.
719	  Say N here if you are unsure.
720
721choice
722	prompt "Build-forced no-CBs CPUs"
723	default RCU_NOCB_CPU_NONE
724	depends on RCU_NOCB_CPU
725	help
726	  This option allows no-CBs CPUs (whose RCU callbacks are invoked
727	  from kthreads rather than from softirq context) to be specified
728	  at build time.  Additional no-CBs CPUs may be specified by
729	  the rcu_nocbs= boot parameter.
730
731config RCU_NOCB_CPU_NONE
732	bool "No build_forced no-CBs CPUs"
733	help
734	  This option does not force any of the CPUs to be no-CBs CPUs.
735	  Only CPUs designated by the rcu_nocbs= boot parameter will be
736	  no-CBs CPUs, whose RCU callbacks will be invoked by per-CPU
737	  kthreads whose names begin with "rcuo".  All other CPUs will
738	  invoke their own RCU callbacks in softirq context.
739
740	  Select this option if you want to choose no-CBs CPUs at
741	  boot time, for example, to allow testing of different no-CBs
742	  configurations without having to rebuild the kernel each time.
743
744config RCU_NOCB_CPU_ZERO
745	bool "CPU 0 is a build_forced no-CBs CPU"
746	help
747	  This option forces CPU 0 to be a no-CBs CPU, so that its RCU
748	  callbacks are invoked by a per-CPU kthread whose name begins
749	  with "rcuo".	Additional CPUs may be designated as no-CBs
750	  CPUs using the rcu_nocbs= boot parameter will be no-CBs CPUs.
751	  All other CPUs will invoke their own RCU callbacks in softirq
752	  context.
753
754	  Select this if CPU 0 needs to be a no-CBs CPU for real-time
755	  or energy-efficiency reasons, but the real reason it exists
756	  is to ensure that randconfig testing covers mixed systems.
757
758config RCU_NOCB_CPU_ALL
759	bool "All CPUs are build_forced no-CBs CPUs"
760	help
761	  This option forces all CPUs to be no-CBs CPUs.  The rcu_nocbs=
762	  boot parameter will be ignored.  All CPUs' RCU callbacks will
763	  be executed in the context of per-CPU rcuo kthreads created for
764	  this purpose.  Assuming that the kthreads whose names start with
765	  "rcuo" are bound to "housekeeping" CPUs, this reduces OS jitter
766	  on the remaining CPUs, but might decrease memory locality during
767	  RCU-callback invocation, thus potentially degrading throughput.
768
769	  Select this if all CPUs need to be no-CBs CPUs for real-time
770	  or energy-efficiency reasons.
771
772endchoice
773
774config RCU_EXPEDITE_BOOT
775	bool
776	default n
777	help
778	  This option enables expedited grace periods at boot time,
779	  as if rcu_expedite_gp() had been invoked early in boot.
780	  The corresponding rcu_unexpedite_gp() is invoked from
781	  rcu_end_inkernel_boot(), which is intended to be invoked
782	  at the end of the kernel-only boot sequence, just before
783	  init is exec'ed.
784
785	  Accept the default if unsure.
786
787endmenu # "RCU Subsystem"
788
789config BUILD_BIN2C
790	bool
791	default n
792
793config IKCONFIG
794	tristate "Kernel .config support"
795	select BUILD_BIN2C
796	---help---
797	  This option enables the complete Linux kernel ".config" file
798	  contents to be saved in the kernel. It provides documentation
799	  of which kernel options are used in a running kernel or in an
800	  on-disk kernel.  This information can be extracted from the kernel
801	  image file with the script scripts/extract-ikconfig and used as
802	  input to rebuild the current kernel or to build another kernel.
803	  It can also be extracted from a running kernel by reading
804	  /proc/config.gz if enabled (below).
805
806config IKCONFIG_PROC
807	bool "Enable access to .config through /proc/config.gz"
808	depends on IKCONFIG && PROC_FS
809	---help---
810	  This option enables access to the kernel configuration file
811	  through /proc/config.gz.
812
813config LOG_BUF_SHIFT
814	int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
815	range 12 25
816	default 17
817	depends on PRINTK
818	help
819	  Select the minimal kernel log buffer size as a power of 2.
820	  The final size is affected by LOG_CPU_MAX_BUF_SHIFT config
821	  parameter, see below. Any higher size also might be forced
822	  by "log_buf_len" boot parameter.
823
824	  Examples:
825		     17 => 128 KB
826		     16 => 64 KB
827		     15 => 32 KB
828		     14 => 16 KB
829		     13 =>  8 KB
830		     12 =>  4 KB
831
832config LOG_CPU_MAX_BUF_SHIFT
833	int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"
834	depends on SMP
835	range 0 21
836	default 12 if !BASE_SMALL
837	default 0 if BASE_SMALL
838	depends on PRINTK
839	help
840	  This option allows to increase the default ring buffer size
841	  according to the number of CPUs. The value defines the contribution
842	  of each CPU as a power of 2. The used space is typically only few
843	  lines however it might be much more when problems are reported,
844	  e.g. backtraces.
845
846	  The increased size means that a new buffer has to be allocated and
847	  the original static one is unused. It makes sense only on systems
848	  with more CPUs. Therefore this value is used only when the sum of
849	  contributions is greater than the half of the default kernel ring
850	  buffer as defined by LOG_BUF_SHIFT. The default values are set
851	  so that more than 64 CPUs are needed to trigger the allocation.
852
853	  Also this option is ignored when "log_buf_len" kernel parameter is
854	  used as it forces an exact (power of two) size of the ring buffer.
855
856	  The number of possible CPUs is used for this computation ignoring
857	  hotplugging making the computation optimal for the worst case
858	  scenario while allowing a simple algorithm to be used from bootup.
859
860	  Examples shift values and their meaning:
861		     17 => 128 KB for each CPU
862		     16 =>  64 KB for each CPU
863		     15 =>  32 KB for each CPU
864		     14 =>  16 KB for each CPU
865		     13 =>   8 KB for each CPU
866		     12 =>   4 KB for each CPU
867
868config NMI_LOG_BUF_SHIFT
869	int "Temporary per-CPU NMI log buffer size (12 => 4KB, 13 => 8KB)"
870	range 10 21
871	default 13
872	depends on PRINTK_NMI
873	help
874	  Select the size of a per-CPU buffer where NMI messages are temporary
875	  stored. They are copied to the main log buffer in a safe context
876	  to avoid a deadlock. The value defines the size as a power of 2.
877
878	  NMI messages are rare and limited. The largest one is when
879	  a backtrace is printed. It usually fits into 4KB. Select
880	  8KB if you want to be on the safe side.
881
882	  Examples:
883		     17 => 128 KB for each CPU
884		     16 =>  64 KB for each CPU
885		     15 =>  32 KB for each CPU
886		     14 =>  16 KB for each CPU
887		     13 =>   8 KB for each CPU
888		     12 =>   4 KB for each CPU
889
890#
891# Architectures with an unreliable sched_clock() should select this:
892#
893config HAVE_UNSTABLE_SCHED_CLOCK
894	bool
895
896config GENERIC_SCHED_CLOCK
897	bool
898
899#
900# For architectures that want to enable the support for NUMA-affine scheduler
901# balancing logic:
902#
903config ARCH_SUPPORTS_NUMA_BALANCING
904	bool
905
906#
907# For architectures that prefer to flush all TLBs after a number of pages
908# are unmapped instead of sending one IPI per page to flush. The architecture
909# must provide guarantees on what happens if a clean TLB cache entry is
910# written after the unmap. Details are in mm/rmap.c near the check for
911# should_defer_flush. The architecture should also consider if the full flush
912# and the refill costs are offset by the savings of sending fewer IPIs.
913config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
914	bool
915
916#
917# For architectures that know their GCC __int128 support is sound
918#
919config ARCH_SUPPORTS_INT128
920	bool
921
922# For architectures that (ab)use NUMA to represent different memory regions
923# all cpu-local but of different latencies, such as SuperH.
924#
925config ARCH_WANT_NUMA_VARIABLE_LOCALITY
926	bool
927
928config NUMA_BALANCING
929	bool "Memory placement aware NUMA scheduler"
930	depends on ARCH_SUPPORTS_NUMA_BALANCING
931	depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
932	depends on SMP && NUMA && MIGRATION
933	help
934	  This option adds support for automatic NUMA aware memory/task placement.
935	  The mechanism is quite primitive and is based on migrating memory when
936	  it has references to the node the task is running on.
937
938	  This system will be inactive on UMA systems.
939
940config NUMA_BALANCING_DEFAULT_ENABLED
941	bool "Automatically enable NUMA aware memory/task placement"
942	default y
943	depends on NUMA_BALANCING
944	help
945	  If set, automatic NUMA balancing will be enabled if running on a NUMA
946	  machine.
947
948menuconfig CGROUPS
949	bool "Control Group support"
950	select KERNFS
951	help
952	  This option adds support for grouping sets of processes together, for
953	  use with process control subsystems such as Cpusets, CFS, memory
954	  controls or device isolation.
955	  See
956		- Documentation/scheduler/sched-design-CFS.txt	(CFS)
957		- Documentation/cgroup-v1/ (features for grouping, isolation
958					  and resource control)
959
960	  Say N if unsure.
961
962if CGROUPS
963
964config PAGE_COUNTER
965       bool
966
967config MEMCG
968	bool "Memory controller"
969	select PAGE_COUNTER
970	select EVENTFD
971	help
972	  Provides control over the memory footprint of tasks in a cgroup.
973
974config MEMCG_SWAP
975	bool "Swap controller"
976	depends on MEMCG && SWAP
977	help
978	  Provides control over the swap space consumed by tasks in a cgroup.
979
980config MEMCG_SWAP_ENABLED
981	bool "Swap controller enabled by default"
982	depends on MEMCG_SWAP
983	default y
984	help
985	  Memory Resource Controller Swap Extension comes with its price in
986	  a bigger memory consumption. General purpose distribution kernels
987	  which want to enable the feature but keep it disabled by default
988	  and let the user enable it by swapaccount=1 boot command line
989	  parameter should have this option unselected.
990	  For those who want to have the feature enabled by default should
991	  select this option (if, for some reason, they need to disable it
992	  then swapaccount=0 does the trick).
993
994config BLK_CGROUP
995	bool "IO controller"
996	depends on BLOCK
997	default n
998	---help---
999	Generic block IO controller cgroup interface. This is the common
1000	cgroup interface which should be used by various IO controlling
1001	policies.
1002
1003	Currently, CFQ IO scheduler uses it to recognize task groups and
1004	control disk bandwidth allocation (proportional time slice allocation)
1005	to such task groups. It is also used by bio throttling logic in
1006	block layer to implement upper limit in IO rates on a device.
1007
1008	This option only enables generic Block IO controller infrastructure.
1009	One needs to also enable actual IO controlling logic/policy. For
1010	enabling proportional weight division of disk bandwidth in CFQ, set
1011	CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
1012	CONFIG_BLK_DEV_THROTTLING=y.
1013
1014	See Documentation/cgroup-v1/blkio-controller.txt for more information.
1015
1016config DEBUG_BLK_CGROUP
1017	bool "IO controller debugging"
1018	depends on BLK_CGROUP
1019	default n
1020	---help---
1021	Enable some debugging help. Currently it exports additional stat
1022	files in a cgroup which can be useful for debugging.
1023
1024config CGROUP_WRITEBACK
1025	bool
1026	depends on MEMCG && BLK_CGROUP
1027	default y
1028
1029menuconfig CGROUP_SCHED
1030	bool "CPU controller"
1031	default n
1032	help
1033	  This feature lets CPU scheduler recognize task groups and control CPU
1034	  bandwidth allocation to such task groups. It uses cgroups to group
1035	  tasks.
1036
1037if CGROUP_SCHED
1038config FAIR_GROUP_SCHED
1039	bool "Group scheduling for SCHED_OTHER"
1040	depends on CGROUP_SCHED
1041	default CGROUP_SCHED
1042
1043config CFS_BANDWIDTH
1044	bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
1045	depends on FAIR_GROUP_SCHED
1046	default n
1047	help
1048	  This option allows users to define CPU bandwidth rates (limits) for
1049	  tasks running within the fair group scheduler.  Groups with no limit
1050	  set are considered to be unconstrained and will run with no
1051	  restriction.
1052	  See tip/Documentation/scheduler/sched-bwc.txt for more information.
1053
1054config RT_GROUP_SCHED
1055	bool "Group scheduling for SCHED_RR/FIFO"
1056	depends on CGROUP_SCHED
1057	default n
1058	help
1059	  This feature lets you explicitly allocate real CPU bandwidth
1060	  to task groups. If enabled, it will also make it impossible to
1061	  schedule realtime tasks for non-root users until you allocate
1062	  realtime bandwidth for them.
1063	  See Documentation/scheduler/sched-rt-group.txt for more information.
1064
1065endif #CGROUP_SCHED
1066
1067config CGROUP_PIDS
1068	bool "PIDs controller"
1069	help
1070	  Provides enforcement of process number limits in the scope of a
1071	  cgroup. Any attempt to fork more processes than is allowed in the
1072	  cgroup will fail. PIDs are fundamentally a global resource because it
1073	  is fairly trivial to reach PID exhaustion before you reach even a
1074	  conservative kmemcg limit. As a result, it is possible to grind a
1075	  system to halt without being limited by other cgroup policies. The
1076	  PIDs controller is designed to stop this from happening.
1077
1078	  It should be noted that organisational operations (such as attaching
1079	  to a cgroup hierarchy will *not* be blocked by the PIDs controller),
1080	  since the PIDs limit only affects a process's ability to fork, not to
1081	  attach to a cgroup.
1082
1083config CGROUP_FREEZER
1084	bool "Freezer controller"
1085	help
1086	  Provides a way to freeze and unfreeze all tasks in a
1087	  cgroup.
1088
1089	  This option affects the ORIGINAL cgroup interface. The cgroup2 memory
1090	  controller includes important in-kernel memory consumers per default.
1091
1092	  If you're using cgroup2, say N.
1093
1094config CGROUP_HUGETLB
1095	bool "HugeTLB controller"
1096	depends on HUGETLB_PAGE
1097	select PAGE_COUNTER
1098	default n
1099	help
1100	  Provides a cgroup controller for HugeTLB pages.
1101	  When you enable this, you can put a per cgroup limit on HugeTLB usage.
1102	  The limit is enforced during page fault. Since HugeTLB doesn't
1103	  support page reclaim, enforcing the limit at page fault time implies
1104	  that, the application will get SIGBUS signal if it tries to access
1105	  HugeTLB pages beyond its limit. This requires the application to know
1106	  beforehand how much HugeTLB pages it would require for its use. The
1107	  control group is tracked in the third page lru pointer. This means
1108	  that we cannot use the controller with huge page less than 3 pages.
1109
1110config CPUSETS
1111	bool "Cpuset controller"
1112	help
1113	  This option will let you create and manage CPUSETs which
1114	  allow dynamically partitioning a system into sets of CPUs and
1115	  Memory Nodes and assigning tasks to run only within those sets.
1116	  This is primarily useful on large SMP or NUMA systems.
1117
1118	  Say N if unsure.
1119
1120config PROC_PID_CPUSET
1121	bool "Include legacy /proc/<pid>/cpuset file"
1122	depends on CPUSETS
1123	default y
1124
1125config CGROUP_DEVICE
1126	bool "Device controller"
1127	help
1128	  Provides a cgroup controller implementing whitelists for
1129	  devices which a process in the cgroup can mknod or open.
1130
1131config CGROUP_CPUACCT
1132	bool "Simple CPU accounting controller"
1133	help
1134	  Provides a simple controller for monitoring the
1135	  total CPU consumed by the tasks in a cgroup.
1136
1137config CGROUP_PERF
1138	bool "Perf controller"
1139	depends on PERF_EVENTS
1140	help
1141	  This option extends the perf per-cpu mode to restrict monitoring
1142	  to threads which belong to the cgroup specified and run on the
1143	  designated cpu.
1144
1145	  Say N if unsure.
1146
1147config CGROUP_DEBUG
1148	bool "Example controller"
1149	default n
1150	help
1151	  This option enables a simple controller that exports
1152	  debugging information about the cgroups framework.
1153
1154	  Say N.
1155
1156endif # CGROUPS
1157
1158config CHECKPOINT_RESTORE
1159	bool "Checkpoint/restore support" if EXPERT
1160	select PROC_CHILDREN
1161	default n
1162	help
1163	  Enables additional kernel features in a sake of checkpoint/restore.
1164	  In particular it adds auxiliary prctl codes to setup process text,
1165	  data and heap segment sizes, and a few additional /proc filesystem
1166	  entries.
1167
1168	  If unsure, say N here.
1169
1170menuconfig NAMESPACES
1171	bool "Namespaces support" if EXPERT
1172	depends on MULTIUSER
1173	default !EXPERT
1174	help
1175	  Provides the way to make tasks work with different objects using
1176	  the same id. For example same IPC id may refer to different objects
1177	  or same user id or pid may refer to different tasks when used in
1178	  different namespaces.
1179
1180if NAMESPACES
1181
1182config UTS_NS
1183	bool "UTS namespace"
1184	default y
1185	help
1186	  In this namespace tasks see different info provided with the
1187	  uname() system call
1188
1189config IPC_NS
1190	bool "IPC namespace"
1191	depends on (SYSVIPC || POSIX_MQUEUE)
1192	default y
1193	help
1194	  In this namespace tasks work with IPC ids which correspond to
1195	  different IPC objects in different namespaces.
1196
1197config USER_NS
1198	bool "User namespace"
1199	default n
1200	help
1201	  This allows containers, i.e. vservers, to use user namespaces
1202	  to provide different user info for different servers.
1203
1204	  When user namespaces are enabled in the kernel it is
1205	  recommended that the MEMCG option also be enabled and that
1206	  user-space use the memory control groups to limit the amount
1207	  of memory a memory unprivileged users can use.
1208
1209	  If unsure, say N.
1210
1211config PID_NS
1212	bool "PID Namespaces"
1213	default y
1214	help
1215	  Support process id namespaces.  This allows having multiple
1216	  processes with the same pid as long as they are in different
1217	  pid namespaces.  This is a building block of containers.
1218
1219config NET_NS
1220	bool "Network namespace"
1221	depends on NET
1222	default y
1223	help
1224	  Allow user space to create what appear to be multiple instances
1225	  of the network stack.
1226
1227endif # NAMESPACES
1228
1229config SCHED_AUTOGROUP
1230	bool "Automatic process group scheduling"
1231	select CGROUPS
1232	select CGROUP_SCHED
1233	select FAIR_GROUP_SCHED
1234	help
1235	  This option optimizes the scheduler for common desktop workloads by
1236	  automatically creating and populating task groups.  This separation
1237	  of workloads isolates aggressive CPU burners (like build jobs) from
1238	  desktop applications.  Task group autogeneration is currently based
1239	  upon task session.
1240
1241config SYSFS_DEPRECATED
1242	bool "Enable deprecated sysfs features to support old userspace tools"
1243	depends on SYSFS
1244	default n
1245	help
1246	  This option adds code that switches the layout of the "block" class
1247	  devices, to not show up in /sys/class/block/, but only in
1248	  /sys/block/.
1249
1250	  This switch is only active when the sysfs.deprecated=1 boot option is
1251	  passed or the SYSFS_DEPRECATED_V2 option is set.
1252
1253	  This option allows new kernels to run on old distributions and tools,
1254	  which might get confused by /sys/class/block/. Since 2007/2008 all
1255	  major distributions and tools handle this just fine.
1256
1257	  Recent distributions and userspace tools after 2009/2010 depend on
1258	  the existence of /sys/class/block/, and will not work with this
1259	  option enabled.
1260
1261	  Only if you are using a new kernel on an old distribution, you might
1262	  need to say Y here.
1263
1264config SYSFS_DEPRECATED_V2
1265	bool "Enable deprecated sysfs features by default"
1266	default n
1267	depends on SYSFS
1268	depends on SYSFS_DEPRECATED
1269	help
1270	  Enable deprecated sysfs by default.
1271
1272	  See the CONFIG_SYSFS_DEPRECATED option for more details about this
1273	  option.
1274
1275	  Only if you are using a new kernel on an old distribution, you might
1276	  need to say Y here. Even then, odds are you would not need it
1277	  enabled, you can always pass the boot option if absolutely necessary.
1278
1279config RELAY
1280	bool "Kernel->user space relay support (formerly relayfs)"
1281	help
1282	  This option enables support for relay interface support in
1283	  certain file systems (such as debugfs).
1284	  It is designed to provide an efficient mechanism for tools and
1285	  facilities to relay large amounts of data from kernel space to
1286	  user space.
1287
1288	  If unsure, say N.
1289
1290config BLK_DEV_INITRD
1291	bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
1292	depends on BROKEN || !FRV
1293	help
1294	  The initial RAM filesystem is a ramfs which is loaded by the
1295	  boot loader (loadlin or lilo) and that is mounted as root
1296	  before the normal boot procedure. It is typically used to
1297	  load modules needed to mount the "real" root file system,
1298	  etc. See <file:Documentation/initrd.txt> for details.
1299
1300	  If RAM disk support (BLK_DEV_RAM) is also included, this
1301	  also enables initial RAM disk (initrd) support and adds
1302	  15 Kbytes (more on some other architectures) to the kernel size.
1303
1304	  If unsure say Y.
1305
1306if BLK_DEV_INITRD
1307
1308source "usr/Kconfig"
1309
1310endif
1311
1312choice
1313	prompt "Compiler optimization level"
1314	default CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
1315
1316config CC_OPTIMIZE_FOR_PERFORMANCE
1317	bool "Optimize for performance"
1318	help
1319	  This is the default optimization level for the kernel, building
1320	  with the "-O2" compiler flag for best performance and most
1321	  helpful compile-time warnings.
1322
1323config CC_OPTIMIZE_FOR_SIZE
1324	bool "Optimize for size"
1325	help
1326	  Enabling this option will pass "-Os" instead of "-O2" to
1327	  your compiler resulting in a smaller kernel.
1328
1329	  If unsure, say N.
1330
1331endchoice
1332
1333config SYSCTL
1334	bool
1335
1336config ANON_INODES
1337	bool
1338
1339config HAVE_UID16
1340	bool
1341
1342config SYSCTL_EXCEPTION_TRACE
1343	bool
1344	help
1345	  Enable support for /proc/sys/debug/exception-trace.
1346
1347config SYSCTL_ARCH_UNALIGN_NO_WARN
1348	bool
1349	help
1350	  Enable support for /proc/sys/kernel/ignore-unaligned-usertrap
1351	  Allows arch to define/use @no_unaligned_warning to possibly warn
1352	  about unaligned access emulation going on under the hood.
1353
1354config SYSCTL_ARCH_UNALIGN_ALLOW
1355	bool
1356	help
1357	  Enable support for /proc/sys/kernel/unaligned-trap
1358	  Allows arches to define/use @unaligned_enabled to runtime toggle
1359	  the unaligned access emulation.
1360	  see arch/parisc/kernel/unaligned.c for reference
1361
1362config HAVE_PCSPKR_PLATFORM
1363	bool
1364
1365# interpreter that classic socket filters depend on
1366config BPF
1367	bool
1368
1369menuconfig EXPERT
1370	bool "Configure standard kernel features (expert users)"
1371	# Unhide debug options, to make the on-by-default options visible
1372	select DEBUG_KERNEL
1373	help
1374	  This option allows certain base kernel options and settings
1375          to be disabled or tweaked. This is for specialized
1376          environments which can tolerate a "non-standard" kernel.
1377          Only use this if you really know what you are doing.
1378
1379config UID16
1380	bool "Enable 16-bit UID system calls" if EXPERT
1381	depends on HAVE_UID16 && MULTIUSER
1382	default y
1383	help
1384	  This enables the legacy 16-bit UID syscall wrappers.
1385
1386config MULTIUSER
1387	bool "Multiple users, groups and capabilities support" if EXPERT
1388	default y
1389	help
1390	  This option enables support for non-root users, groups and
1391	  capabilities.
1392
1393	  If you say N here, all processes will run with UID 0, GID 0, and all
1394	  possible capabilities.  Saying N here also compiles out support for
1395	  system calls related to UIDs, GIDs, and capabilities, such as setuid,
1396	  setgid, and capset.
1397
1398	  If unsure, say Y here.
1399
1400config SGETMASK_SYSCALL
1401	bool "sgetmask/ssetmask syscalls support" if EXPERT
1402	def_bool PARISC || MN10300 || BLACKFIN || M68K || PPC || MIPS || X86 || SPARC || CRIS || MICROBLAZE || SUPERH
1403	---help---
1404	  sys_sgetmask and sys_ssetmask are obsolete system calls
1405	  no longer supported in libc but still enabled by default in some
1406	  architectures.
1407
1408	  If unsure, leave the default option here.
1409
1410config SYSFS_SYSCALL
1411	bool "Sysfs syscall support" if EXPERT
1412	default y
1413	---help---
1414	  sys_sysfs is an obsolete system call no longer supported in libc.
1415	  Note that disabling this option is more secure but might break
1416	  compatibility with some systems.
1417
1418	  If unsure say Y here.
1419
1420config SYSCTL_SYSCALL
1421	bool "Sysctl syscall support" if EXPERT
1422	depends on PROC_SYSCTL
1423	default n
1424	select SYSCTL
1425	---help---
1426	  sys_sysctl uses binary paths that have been found challenging
1427	  to properly maintain and use.  The interface in /proc/sys
1428	  using paths with ascii names is now the primary path to this
1429	  information.
1430
1431	  Almost nothing using the binary sysctl interface so if you are
1432	  trying to save some space it is probably safe to disable this,
1433	  making your kernel marginally smaller.
1434
1435	  If unsure say N here.
1436
1437config KALLSYMS
1438	 bool "Load all symbols for debugging/ksymoops" if EXPERT
1439	 default y
1440	 help
1441	   Say Y here to let the kernel print out symbolic crash information and
1442	   symbolic stack backtraces. This increases the size of the kernel
1443	   somewhat, as all symbols have to be loaded into the kernel image.
1444
1445config KALLSYMS_ALL
1446	bool "Include all symbols in kallsyms"
1447	depends on DEBUG_KERNEL && KALLSYMS
1448	help
1449	   Normally kallsyms only contains the symbols of functions for nicer
1450	   OOPS messages and backtraces (i.e., symbols from the text and inittext
1451	   sections). This is sufficient for most cases. And only in very rare
1452	   cases (e.g., when a debugger is used) all symbols are required (e.g.,
1453	   names of variables from the data sections, etc).
1454
1455	   This option makes sure that all symbols are loaded into the kernel
1456	   image (i.e., symbols from all sections) in cost of increased kernel
1457	   size (depending on the kernel configuration, it may be 300KiB or
1458	   something like this).
1459
1460	   Say N unless you really need all symbols.
1461
1462config KALLSYMS_ABSOLUTE_PERCPU
1463	bool
1464	depends on KALLSYMS
1465	default X86_64 && SMP
1466
1467config KALLSYMS_BASE_RELATIVE
1468	bool
1469	depends on KALLSYMS
1470	default !IA64 && !(TILE && 64BIT)
1471	help
1472	  Instead of emitting them as absolute values in the native word size,
1473	  emit the symbol references in the kallsyms table as 32-bit entries,
1474	  each containing a relative value in the range [base, base + U32_MAX]
1475	  or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either
1476	  an absolute value in the range [0, S32_MAX] or a relative value in the
1477	  range [base, base + S32_MAX], where base is the lowest relative symbol
1478	  address encountered in the image.
1479
1480	  On 64-bit builds, this reduces the size of the address table by 50%,
1481	  but more importantly, it results in entries whose values are build
1482	  time constants, and no relocation pass is required at runtime to fix
1483	  up the entries based on the runtime load address of the kernel.
1484
1485config PRINTK
1486	default y
1487	bool "Enable support for printk" if EXPERT
1488	select IRQ_WORK
1489	help
1490	  This option enables normal printk support. Removing it
1491	  eliminates most of the message strings from the kernel image
1492	  and makes the kernel more or less silent. As this makes it
1493	  very difficult to diagnose system problems, saying N here is
1494	  strongly discouraged.
1495
1496config PRINTK_NMI
1497	def_bool y
1498	depends on PRINTK
1499	depends on HAVE_NMI
1500
1501config BUG
1502	bool "BUG() support" if EXPERT
1503	default y
1504	help
1505          Disabling this option eliminates support for BUG and WARN, reducing
1506          the size of your kernel image and potentially quietly ignoring
1507          numerous fatal conditions. You should only consider disabling this
1508          option for embedded systems with no facilities for reporting errors.
1509          Just say Y.
1510
1511config ELF_CORE
1512	depends on COREDUMP
1513	default y
1514	bool "Enable ELF core dumps" if EXPERT
1515	help
1516	  Enable support for generating core dumps. Disabling saves about 4k.
1517
1518
1519config PCSPKR_PLATFORM
1520	bool "Enable PC-Speaker support" if EXPERT
1521	depends on HAVE_PCSPKR_PLATFORM
1522	select I8253_LOCK
1523	default y
1524	help
1525          This option allows to disable the internal PC-Speaker
1526          support, saving some memory.
1527
1528config BASE_FULL
1529	default y
1530	bool "Enable full-sized data structures for core" if EXPERT
1531	help
1532	  Disabling this option reduces the size of miscellaneous core
1533	  kernel data structures. This saves memory on small machines,
1534	  but may reduce performance.
1535
1536config FUTEX
1537	bool "Enable futex support" if EXPERT
1538	default y
1539	select RT_MUTEXES
1540	help
1541	  Disabling this option will cause the kernel to be built without
1542	  support for "fast userspace mutexes".  The resulting kernel may not
1543	  run glibc-based applications correctly.
1544
1545config HAVE_FUTEX_CMPXCHG
1546	bool
1547	depends on FUTEX
1548	help
1549	  Architectures should select this if futex_atomic_cmpxchg_inatomic()
1550	  is implemented and always working. This removes a couple of runtime
1551	  checks.
1552
1553config EPOLL
1554	bool "Enable eventpoll support" if EXPERT
1555	default y
1556	select ANON_INODES
1557	help
1558	  Disabling this option will cause the kernel to be built without
1559	  support for epoll family of system calls.
1560
1561config SIGNALFD
1562	bool "Enable signalfd() system call" if EXPERT
1563	select ANON_INODES
1564	default y
1565	help
1566	  Enable the signalfd() system call that allows to receive signals
1567	  on a file descriptor.
1568
1569	  If unsure, say Y.
1570
1571config TIMERFD
1572	bool "Enable timerfd() system call" if EXPERT
1573	select ANON_INODES
1574	default y
1575	help
1576	  Enable the timerfd() system call that allows to receive timer
1577	  events on a file descriptor.
1578
1579	  If unsure, say Y.
1580
1581config EVENTFD
1582	bool "Enable eventfd() system call" if EXPERT
1583	select ANON_INODES
1584	default y
1585	help
1586	  Enable the eventfd() system call that allows to receive both
1587	  kernel notification (ie. KAIO) or userspace notifications.
1588
1589	  If unsure, say Y.
1590
1591# syscall, maps, verifier
1592config BPF_SYSCALL
1593	bool "Enable bpf() system call"
1594	select ANON_INODES
1595	select BPF
1596	default n
1597	help
1598	  Enable the bpf() system call that allows to manipulate eBPF
1599	  programs and maps via file descriptors.
1600
1601config SHMEM
1602	bool "Use full shmem filesystem" if EXPERT
1603	default y
1604	depends on MMU
1605	help
1606	  The shmem is an internal filesystem used to manage shared memory.
1607	  It is backed by swap and manages resource limits. It is also exported
1608	  to userspace as tmpfs if TMPFS is enabled. Disabling this
1609	  option replaces shmem and tmpfs with the much simpler ramfs code,
1610	  which may be appropriate on small systems without swap.
1611
1612config AIO
1613	bool "Enable AIO support" if EXPERT
1614	default y
1615	help
1616	  This option enables POSIX asynchronous I/O which may by used
1617	  by some high performance threaded applications. Disabling
1618	  this option saves about 7k.
1619
1620config ADVISE_SYSCALLS
1621	bool "Enable madvise/fadvise syscalls" if EXPERT
1622	default y
1623	help
1624	  This option enables the madvise and fadvise syscalls, used by
1625	  applications to advise the kernel about their future memory or file
1626	  usage, improving performance. If building an embedded system where no
1627	  applications use these syscalls, you can disable this option to save
1628	  space.
1629
1630config USERFAULTFD
1631	bool "Enable userfaultfd() system call"
1632	select ANON_INODES
1633	depends on MMU
1634	help
1635	  Enable the userfaultfd() system call that allows to intercept and
1636	  handle page faults in userland.
1637
1638config PCI_QUIRKS
1639	default y
1640	bool "Enable PCI quirk workarounds" if EXPERT
1641	depends on PCI
1642	help
1643	  This enables workarounds for various PCI chipset
1644	  bugs/quirks. Disable this only if your target machine is
1645	  unaffected by PCI quirks.
1646
1647config MEMBARRIER
1648	bool "Enable membarrier() system call" if EXPERT
1649	default y
1650	help
1651	  Enable the membarrier() system call that allows issuing memory
1652	  barriers across all running threads, which can be used to distribute
1653	  the cost of user-space memory barriers asymmetrically by transforming
1654	  pairs of memory barriers into pairs consisting of membarrier() and a
1655	  compiler barrier.
1656
1657	  If unsure, say Y.
1658
1659config EMBEDDED
1660	bool "Embedded system"
1661	option allnoconfig_y
1662	select EXPERT
1663	help
1664	  This option should be enabled if compiling the kernel for
1665	  an embedded system so certain expert options are available
1666	  for configuration.
1667
1668config HAVE_PERF_EVENTS
1669	bool
1670	help
1671	  See tools/perf/design.txt for details.
1672
1673config PERF_USE_VMALLOC
1674	bool
1675	help
1676	  See tools/perf/design.txt for details
1677
1678menu "Kernel Performance Events And Counters"
1679
1680config PERF_EVENTS
1681	bool "Kernel performance events and counters"
1682	default y if PROFILING
1683	depends on HAVE_PERF_EVENTS
1684	select ANON_INODES
1685	select IRQ_WORK
1686	select SRCU
1687	help
1688	  Enable kernel support for various performance events provided
1689	  by software and hardware.
1690
1691	  Software events are supported either built-in or via the
1692	  use of generic tracepoints.
1693
1694	  Most modern CPUs support performance events via performance
1695	  counter registers. These registers count the number of certain
1696	  types of hw events: such as instructions executed, cachemisses
1697	  suffered, or branches mis-predicted - without slowing down the
1698	  kernel or applications. These registers can also trigger interrupts
1699	  when a threshold number of events have passed - and can thus be
1700	  used to profile the code that runs on that CPU.
1701
1702	  The Linux Performance Event subsystem provides an abstraction of
1703	  these software and hardware event capabilities, available via a
1704	  system call and used by the "perf" utility in tools/perf/. It
1705	  provides per task and per CPU counters, and it provides event
1706	  capabilities on top of those.
1707
1708	  Say Y if unsure.
1709
1710config DEBUG_PERF_USE_VMALLOC
1711	default n
1712	bool "Debug: use vmalloc to back perf mmap() buffers"
1713	depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
1714	select PERF_USE_VMALLOC
1715	help
1716	 Use vmalloc memory to back perf mmap() buffers.
1717
1718	 Mostly useful for debugging the vmalloc code on platforms
1719	 that don't require it.
1720
1721	 Say N if unsure.
1722
1723endmenu
1724
1725config VM_EVENT_COUNTERS
1726	default y
1727	bool "Enable VM event counters for /proc/vmstat" if EXPERT
1728	help
1729	  VM event counters are needed for event counts to be shown.
1730	  This option allows the disabling of the VM event counters
1731	  on EXPERT systems.  /proc/vmstat will only show page counts
1732	  if VM event counters are disabled.
1733
1734config SLUB_DEBUG
1735	default y
1736	bool "Enable SLUB debugging support" if EXPERT
1737	depends on SLUB && SYSFS
1738	help
1739	  SLUB has extensive debug support features. Disabling these can
1740	  result in significant savings in code size. This also disables
1741	  SLUB sysfs support. /sys/slab will not exist and there will be
1742	  no support for cache validation etc.
1743
1744config COMPAT_BRK
1745	bool "Disable heap randomization"
1746	default y
1747	help
1748	  Randomizing heap placement makes heap exploits harder, but it
1749	  also breaks ancient binaries (including anything libc5 based).
1750	  This option changes the bootup default to heap randomization
1751	  disabled, and can be overridden at runtime by setting
1752	  /proc/sys/kernel/randomize_va_space to 2.
1753
1754	  On non-ancient distros (post-2000 ones) N is usually a safe choice.
1755
1756choice
1757	prompt "Choose SLAB allocator"
1758	default SLUB
1759	help
1760	   This option allows to select a slab allocator.
1761
1762config SLAB
1763	bool "SLAB"
1764	select HAVE_HARDENED_USERCOPY_ALLOCATOR
1765	help
1766	  The regular slab allocator that is established and known to work
1767	  well in all environments. It organizes cache hot objects in
1768	  per cpu and per node queues.
1769
1770config SLUB
1771	bool "SLUB (Unqueued Allocator)"
1772	select HAVE_HARDENED_USERCOPY_ALLOCATOR
1773	help
1774	   SLUB is a slab allocator that minimizes cache line usage
1775	   instead of managing queues of cached objects (SLAB approach).
1776	   Per cpu caching is realized using slabs of objects instead
1777	   of queues of objects. SLUB can use memory efficiently
1778	   and has enhanced diagnostics. SLUB is the default choice for
1779	   a slab allocator.
1780
1781config SLOB
1782	depends on EXPERT
1783	bool "SLOB (Simple Allocator)"
1784	help
1785	   SLOB replaces the stock allocator with a drastically simpler
1786	   allocator. SLOB is generally more space efficient but
1787	   does not perform as well on large systems.
1788
1789endchoice
1790
1791config SLAB_FREELIST_RANDOM
1792	default n
1793	depends on SLAB || SLUB
1794	bool "SLAB freelist randomization"
1795	help
1796	  Randomizes the freelist order used on creating new pages. This
1797	  security feature reduces the predictability of the kernel slab
1798	  allocator against heap overflows.
1799
1800config SLUB_CPU_PARTIAL
1801	default y
1802	depends on SLUB && SMP
1803	bool "SLUB per cpu partial cache"
1804	help
1805	  Per cpu partial caches accellerate objects allocation and freeing
1806	  that is local to a processor at the price of more indeterminism
1807	  in the latency of the free. On overflow these caches will be cleared
1808	  which requires the taking of locks that may cause latency spikes.
1809	  Typically one would choose no for a realtime system.
1810
1811config MMAP_ALLOW_UNINITIALIZED
1812	bool "Allow mmapped anonymous memory to be uninitialized"
1813	depends on EXPERT && !MMU
1814	default n
1815	help
1816	  Normally, and according to the Linux spec, anonymous memory obtained
1817	  from mmap() has it's contents cleared before it is passed to
1818	  userspace.  Enabling this config option allows you to request that
1819	  mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1820	  providing a huge performance boost.  If this option is not enabled,
1821	  then the flag will be ignored.
1822
1823	  This is taken advantage of by uClibc's malloc(), and also by
1824	  ELF-FDPIC binfmt's brk and stack allocator.
1825
1826	  Because of the obvious security issues, this option should only be
1827	  enabled on embedded devices where you control what is run in
1828	  userspace.  Since that isn't generally a problem on no-MMU systems,
1829	  it is normally safe to say Y here.
1830
1831	  See Documentation/nommu-mmap.txt for more information.
1832
1833config SYSTEM_DATA_VERIFICATION
1834	def_bool n
1835	select SYSTEM_TRUSTED_KEYRING
1836	select KEYS
1837	select CRYPTO
1838	select CRYPTO_RSA
1839	select ASYMMETRIC_KEY_TYPE
1840	select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
1841	select ASN1
1842	select OID_REGISTRY
1843	select X509_CERTIFICATE_PARSER
1844	select PKCS7_MESSAGE_PARSER
1845	help
1846	  Provide PKCS#7 message verification using the contents of the system
1847	  trusted keyring to provide public keys.  This then can be used for
1848	  module verification, kexec image verification and firmware blob
1849	  verification.
1850
1851config PROFILING
1852	bool "Profiling support"
1853	help
1854	  Say Y here to enable the extended profiling support mechanisms used
1855	  by profilers such as OProfile.
1856
1857#
1858# Place an empty function call at each tracepoint site. Can be
1859# dynamically changed for a probe function.
1860#
1861config TRACEPOINTS
1862	bool
1863
1864source "arch/Kconfig"
1865
1866endmenu		# General setup
1867
1868config HAVE_GENERIC_DMA_COHERENT
1869	bool
1870	default n
1871
1872config SLABINFO
1873	bool
1874	depends on PROC_FS
1875	depends on SLAB || SLUB_DEBUG
1876	default y
1877
1878config RT_MUTEXES
1879	bool
1880
1881config BASE_SMALL
1882	int
1883	default 0 if BASE_FULL
1884	default 1 if !BASE_FULL
1885
1886menuconfig MODULES
1887	bool "Enable loadable module support"
1888	option modules
1889	help
1890	  Kernel modules are small pieces of compiled code which can
1891	  be inserted in the running kernel, rather than being
1892	  permanently built into the kernel.  You use the "modprobe"
1893	  tool to add (and sometimes remove) them.  If you say Y here,
1894	  many parts of the kernel can be built as modules (by
1895	  answering M instead of Y where indicated): this is most
1896	  useful for infrequently used options which are not required
1897	  for booting.  For more information, see the man pages for
1898	  modprobe, lsmod, modinfo, insmod and rmmod.
1899
1900	  If you say Y here, you will need to run "make
1901	  modules_install" to put the modules under /lib/modules/
1902	  where modprobe can find them (you may need to be root to do
1903	  this).
1904
1905	  If unsure, say Y.
1906
1907if MODULES
1908
1909config MODULE_FORCE_LOAD
1910	bool "Forced module loading"
1911	default n
1912	help
1913	  Allow loading of modules without version information (ie. modprobe
1914	  --force).  Forced module loading sets the 'F' (forced) taint flag and
1915	  is usually a really bad idea.
1916
1917config MODULE_UNLOAD
1918	bool "Module unloading"
1919	help
1920	  Without this option you will not be able to unload any
1921	  modules (note that some modules may not be unloadable
1922	  anyway), which makes your kernel smaller, faster
1923	  and simpler.  If unsure, say Y.
1924
1925config MODULE_FORCE_UNLOAD
1926	bool "Forced module unloading"
1927	depends on MODULE_UNLOAD
1928	help
1929	  This option allows you to force a module to unload, even if the
1930	  kernel believes it is unsafe: the kernel will remove the module
1931	  without waiting for anyone to stop using it (using the -f option to
1932	  rmmod).  This is mainly for kernel developers and desperate users.
1933	  If unsure, say N.
1934
1935config MODVERSIONS
1936	bool "Module versioning support"
1937	help
1938	  Usually, you have to use modules compiled with your kernel.
1939	  Saying Y here makes it sometimes possible to use modules
1940	  compiled for different kernels, by adding enough information
1941	  to the modules to (hopefully) spot any changes which would
1942	  make them incompatible with the kernel you are running.  If
1943	  unsure, say N.
1944
1945config MODULE_SRCVERSION_ALL
1946	bool "Source checksum for all modules"
1947	help
1948	  Modules which contain a MODULE_VERSION get an extra "srcversion"
1949	  field inserted into their modinfo section, which contains a
1950    	  sum of the source files which made it.  This helps maintainers
1951	  see exactly which source was used to build a module (since
1952	  others sometimes change the module source without updating
1953	  the version).  With this option, such a "srcversion" field
1954	  will be created for all modules.  If unsure, say N.
1955
1956config MODULE_SIG
1957	bool "Module signature verification"
1958	depends on MODULES
1959	select SYSTEM_DATA_VERIFICATION
1960	help
1961	  Check modules for valid signatures upon load: the signature
1962	  is simply appended to the module. For more information see
1963	  Documentation/module-signing.txt.
1964
1965	  Note that this option adds the OpenSSL development packages as a
1966	  kernel build dependency so that the signing tool can use its crypto
1967	  library.
1968
1969	  !!!WARNING!!!  If you enable this option, you MUST make sure that the
1970	  module DOES NOT get stripped after being signed.  This includes the
1971	  debuginfo strip done by some packagers (such as rpmbuild) and
1972	  inclusion into an initramfs that wants the module size reduced.
1973
1974config MODULE_SIG_FORCE
1975	bool "Require modules to be validly signed"
1976	depends on MODULE_SIG
1977	help
1978	  Reject unsigned modules or signed modules for which we don't have a
1979	  key.  Without this, such modules will simply taint the kernel.
1980
1981config MODULE_SIG_ALL
1982	bool "Automatically sign all modules"
1983	default y
1984	depends on MODULE_SIG
1985	help
1986	  Sign all modules during make modules_install. Without this option,
1987	  modules must be signed manually, using the scripts/sign-file tool.
1988
1989comment "Do not forget to sign required modules with scripts/sign-file"
1990	depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
1991
1992choice
1993	prompt "Which hash algorithm should modules be signed with?"
1994	depends on MODULE_SIG
1995	help
1996	  This determines which sort of hashing algorithm will be used during
1997	  signature generation.  This algorithm _must_ be built into the kernel
1998	  directly so that signature verification can take place.  It is not
1999	  possible to load a signed module containing the algorithm to check
2000	  the signature on that module.
2001
2002config MODULE_SIG_SHA1
2003	bool "Sign modules with SHA-1"
2004	select CRYPTO_SHA1
2005
2006config MODULE_SIG_SHA224
2007	bool "Sign modules with SHA-224"
2008	select CRYPTO_SHA256
2009
2010config MODULE_SIG_SHA256
2011	bool "Sign modules with SHA-256"
2012	select CRYPTO_SHA256
2013
2014config MODULE_SIG_SHA384
2015	bool "Sign modules with SHA-384"
2016	select CRYPTO_SHA512
2017
2018config MODULE_SIG_SHA512
2019	bool "Sign modules with SHA-512"
2020	select CRYPTO_SHA512
2021
2022endchoice
2023
2024config MODULE_SIG_HASH
2025	string
2026	depends on MODULE_SIG
2027	default "sha1" if MODULE_SIG_SHA1
2028	default "sha224" if MODULE_SIG_SHA224
2029	default "sha256" if MODULE_SIG_SHA256
2030	default "sha384" if MODULE_SIG_SHA384
2031	default "sha512" if MODULE_SIG_SHA512
2032
2033config MODULE_COMPRESS
2034	bool "Compress modules on installation"
2035	depends on MODULES
2036	help
2037
2038	  Compresses kernel modules when 'make modules_install' is run; gzip or
2039	  xz depending on "Compression algorithm" below.
2040
2041	  module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
2042
2043	  Out-of-tree kernel modules installed using Kbuild will also be
2044	  compressed upon installation.
2045
2046	  Note: for modules inside an initrd or initramfs, it's more efficient
2047	  to compress the whole initrd or initramfs instead.
2048
2049	  Note: This is fully compatible with signed modules.
2050
2051	  If in doubt, say N.
2052
2053choice
2054	prompt "Compression algorithm"
2055	depends on MODULE_COMPRESS
2056	default MODULE_COMPRESS_GZIP
2057	help
2058	  This determines which sort of compression will be used during
2059	  'make modules_install'.
2060
2061	  GZIP (default) and XZ are supported.
2062
2063config MODULE_COMPRESS_GZIP
2064	bool "GZIP"
2065
2066config MODULE_COMPRESS_XZ
2067	bool "XZ"
2068
2069endchoice
2070
2071config TRIM_UNUSED_KSYMS
2072	bool "Trim unused exported kernel symbols"
2073	depends on MODULES && !UNUSED_SYMBOLS
2074	help
2075	  The kernel and some modules make many symbols available for
2076	  other modules to use via EXPORT_SYMBOL() and variants. Depending
2077	  on the set of modules being selected in your kernel configuration,
2078	  many of those exported symbols might never be used.
2079
2080	  This option allows for unused exported symbols to be dropped from
2081	  the build. In turn, this provides the compiler more opportunities
2082	  (especially when using LTO) for optimizing the code and reducing
2083	  binary size.  This might have some security advantages as well.
2084
2085	  If unsure, or if you need to build out-of-tree modules, say N.
2086
2087endif # MODULES
2088
2089config MODULES_TREE_LOOKUP
2090	def_bool y
2091	depends on PERF_EVENTS || TRACING
2092
2093config INIT_ALL_POSSIBLE
2094	bool
2095	help
2096	  Back when each arch used to define their own cpu_online_mask and
2097	  cpu_possible_mask, some of them chose to initialize cpu_possible_mask
2098	  with all 1s, and others with all 0s.  When they were centralised,
2099	  it was better to provide this option than to break all the archs
2100	  and have several arch maintainers pursuing me down dark alleys.
2101
2102source "block/Kconfig"
2103
2104config PREEMPT_NOTIFIERS
2105	bool
2106
2107config PADATA
2108	depends on SMP
2109	bool
2110
2111# Can be selected by architectures with broken toolchains
2112# that get confused by correct const<->read_only section
2113# mappings
2114config BROKEN_RODATA
2115	bool
2116
2117config ASN1
2118	tristate
2119	help
2120	  Build a simple ASN.1 grammar compiler that produces a bytecode output
2121	  that can be interpreted by the ASN.1 stream decoder and used to
2122	  inform it as to what tags are to be expected in a stream and what
2123	  functions to call on what tags.
2124
2125source "kernel/Kconfig.locks"
2126