blob: 29bbad9338d60bc5b06267c939a7ee8ae15582c2 [file] [log] [blame]
Roman Zippelface4372006-06-08 22:12:45 -07001config DEFCONFIG_LIST
2 string
Paolo 'Blaisorblade' Giarrussob2670eac2006-10-19 23:28:23 -07003 depends on !UML
Roman Zippelface4372006-06-08 22:12:45 -07004 option defconfig_list
Masahiro Yamada29726662018-05-28 18:21:47 +09005 default "/lib/modules/$(shell,uname --release)/.config"
Roman Zippelface4372006-06-08 22:12:45 -07006 default "/etc/kernel-config"
Masahiro Yamada29726662018-05-28 18:21:47 +09007 default "/boot/config-$(shell,uname --release)"
Masahiro Yamada104daea2018-05-28 18:21:40 +09008 default ARCH_DEFCONFIG
9 default "arch/$(ARCH)/defconfig"
Roman Zippelface4372006-06-08 22:12:45 -070010
Masahiro Yamadaa4353892018-05-28 18:22:01 +090011config CC_IS_GCC
12 def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc)
13
14config GCC_VERSION
15 int
16 default $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//') if CC_IS_GCC
17 default 0
18
Masahiro Yamada469cb732018-05-28 18:22:02 +090019config CC_IS_CLANG
20 def_bool $(success,$(CC) --version | head -n 1 | grep -q clang)
21
22config CLANG_VERSION
23 int
24 default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
25
Peter Oberparleiterb99b87f2009-06-17 16:28:03 -070026config CONSTRUCTORS
27 bool
28 depends on !UML
Peter Oberparleiterb99b87f2009-06-17 16:28:03 -070029
Peter Zijlstrae360adb2010-10-14 14:01:34 +080030config IRQ_WORK
31 bool
Peter Zijlstrae360adb2010-10-14 14:01:34 +080032
David Daney1dbdc6f2012-04-19 14:59:57 -070033config BUILDTIME_EXTABLE_SORT
34 bool
35
Andy Lutomirskic65eacb2016-09-13 14:29:24 -070036config THREAD_INFO_IN_TASK
37 bool
38 help
39 Select this to move thread_info off the stack into task_struct. To
40 make this work, an arch will need to remove all thread_info fields
41 except flags and fix any runtime bugs.
42
Andy Lutomirskic6c314a2016-09-15 22:45:43 -070043 One subtle change that will be needed is to use try_get_task_stack()
44 and put_task_stack() in save_thread_stack_tsk() and get_wchan().
45
Al Boldiff0cfc62007-07-31 00:39:23 -070046menu "General setup"
Linus Torvalds1da177e2005-04-16 15:20:36 -070047
Linus Torvalds1da177e2005-04-16 15:20:36 -070048config BROKEN
49 bool
Linus Torvalds1da177e2005-04-16 15:20:36 -070050
51config BROKEN_ON_SMP
52 bool
53 depends on BROKEN || !SMP
54 default y
55
Linus Torvalds1da177e2005-04-16 15:20:36 -070056config INIT_ENV_ARG_LIMIT
57 int
Adrian Bunkdd673bc2006-06-30 01:55:51 -070058 default 32 if !UML
59 default 128 if UML
Linus Torvalds1da177e2005-04-16 15:20:36 -070060 help
Randy Dunlap34ad92c2005-10-30 15:01:46 -080061 Maximum of each of the number of arguments and environment
62 variables passed to init from the kernel command line.
Linus Torvalds1da177e2005-04-16 15:20:36 -070063
Jiri Slaby4bb16672013-05-22 10:56:24 +020064config COMPILE_TEST
65 bool "Compile also drivers which will not load"
Richard Weinbergerbc083a62016-08-02 14:03:27 -070066 depends on !UML
Jiri Slaby4bb16672013-05-22 10:56:24 +020067 default n
68 help
69 Some drivers can be compiled on a different platform than they are
70 intended to be run on. Despite they cannot be loaded there (or even
71 when they load they cannot be used due to missing HW support),
72 developers still, opposing to distributors, might want to build such
73 drivers to compile-test them.
74
75 If you are a developer and want to build everything available, say Y
76 here. If you are a user/distributor, say N here to exclude useless
77 drivers to be distributed.
78
Linus Torvalds1da177e2005-04-16 15:20:36 -070079config LOCALVERSION
80 string "Local version - append to kernel release"
81 help
82 Append an extra string to the end of your kernel version.
83 This will show up when you type uname, for example.
84 The string you set here will be appended after the contents of
85 any files with a filename matching localversion* in your
86 object and source tree, in that order. Your total string can
87 be a maximum of 64 characters.
88
Ryan Andersonaaebf432005-07-31 04:57:49 -040089config LOCALVERSION_AUTO
90 bool "Automatically append version information to the version string"
91 default y
Alexey Dobriyanac3339b2016-08-02 14:07:21 -070092 depends on !COMPILE_TEST
Ryan Andersonaaebf432005-07-31 04:57:49 -040093 help
94 This will try to automatically determine if the current tree is a
Robert P. J. Day6e5a5422007-05-01 23:08:11 +020095 release tree by looking for git tags that belong to the current
96 top of tree revision.
Ryan Andersonaaebf432005-07-31 04:57:49 -040097
98 A string of the format -gxxxxxxxx will be added to the localversion
Robert P. J. Day6e5a5422007-05-01 23:08:11 +020099 if a git-based tree is found. The string generated by this will be
Ryan Andersonaaebf432005-07-31 04:57:49 -0400100 appended after any matching localversion* files, and after the value
Robert P. J. Day6e5a5422007-05-01 23:08:11 +0200101 set in CONFIG_LOCALVERSION.
Ryan Andersonaaebf432005-07-31 04:57:49 -0400102
Robert P. J. Day6e5a5422007-05-01 23:08:11 +0200103 (The actual string used here is the first eight characters produced
104 by running the command:
105
106 $ git rev-parse --verify HEAD
107
108 which is done within the script "scripts/setlocalversion".)
Ryan Andersonaaebf432005-07-31 04:57:49 -0400109
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800110config HAVE_KERNEL_GZIP
111 bool
112
113config HAVE_KERNEL_BZIP2
114 bool
115
116config HAVE_KERNEL_LZMA
117 bool
118
Lasse Collin3ebe1242011-01-12 17:01:23 -0800119config HAVE_KERNEL_XZ
120 bool
121
Albin Tonnerre7dd65fe2010-01-08 14:42:42 -0800122config HAVE_KERNEL_LZO
123 bool
124
Kyungsik Leee76e1fd2013-07-08 16:01:46 -0700125config HAVE_KERNEL_LZ4
126 bool
127
Alain Knaff30d65db2009-01-04 22:46:17 +0100128choice
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800129 prompt "Kernel compression mode"
130 default KERNEL_GZIP
H. Peter Anvin2d3c6272013-11-14 21:43:47 -0800131 depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800132 help
Alain Knaff30d65db2009-01-04 22:46:17 +0100133 The linux kernel is a kind of self-extracting executable.
134 Several compression algorithms are available, which differ
135 in efficiency, compression and decompression speed.
136 Compression speed is only relevant when building a kernel.
137 Decompression speed is relevant at each boot.
138
139 If you have any problems with bzip2 or lzma compressed
140 kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
141 version of this functionality (bzip2 only), for 2.4, was
142 supplied by Christian Ludwig)
143
144 High compression options are mostly useful for users, who
145 are low on disk space (embedded systems), but for whom ram
146 size matters less.
147
148 If in doubt, select 'gzip'
149
150config KERNEL_GZIP
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800151 bool "Gzip"
152 depends on HAVE_KERNEL_GZIP
153 help
Albin Tonnerre7dd65fe2010-01-08 14:42:42 -0800154 The old and tried gzip compression. It provides a good balance
155 between compression ratio and decompression speed.
Alain Knaff30d65db2009-01-04 22:46:17 +0100156
157config KERNEL_BZIP2
158 bool "Bzip2"
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800159 depends on HAVE_KERNEL_BZIP2
Alain Knaff30d65db2009-01-04 22:46:17 +0100160 help
161 Its compression ratio and speed is intermediate.
Randy Dunlap0a4dd352012-05-31 16:26:46 -0700162 Decompression speed is slowest among the choices. The kernel
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800163 size is about 10% smaller with bzip2, in comparison to gzip.
164 Bzip2 uses a large amount of memory. For modern kernels you
165 will need at least 8MB RAM or more for booting.
Alain Knaff30d65db2009-01-04 22:46:17 +0100166
167config KERNEL_LZMA
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800168 bool "LZMA"
169 depends on HAVE_KERNEL_LZMA
170 help
Randy Dunlap0a4dd352012-05-31 16:26:46 -0700171 This compression algorithm's ratio is best. Decompression speed
172 is between gzip and bzip2. Compression is slowest.
173 The kernel size is about 33% smaller with LZMA in comparison to gzip.
Alain Knaff30d65db2009-01-04 22:46:17 +0100174
Lasse Collin3ebe1242011-01-12 17:01:23 -0800175config KERNEL_XZ
176 bool "XZ"
177 depends on HAVE_KERNEL_XZ
178 help
179 XZ uses the LZMA2 algorithm and instruction set specific
180 BCJ filters which can improve compression ratio of executable
181 code. The size of the kernel is about 30% smaller with XZ in
182 comparison to gzip. On architectures for which there is a BCJ
183 filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
184 will create a few percent smaller kernel than plain LZMA.
185
186 The speed is about the same as with LZMA: The decompression
187 speed of XZ is better than that of bzip2 but worse than gzip
188 and LZO. Compression is slow.
189
Albin Tonnerre7dd65fe2010-01-08 14:42:42 -0800190config KERNEL_LZO
191 bool "LZO"
192 depends on HAVE_KERNEL_LZO
193 help
Randy Dunlap0a4dd352012-05-31 16:26:46 -0700194 Its compression ratio is the poorest among the choices. The kernel
Stephan Sperber681b3042010-07-14 11:23:08 +0200195 size is about 10% bigger than gzip; however its speed
Albin Tonnerre7dd65fe2010-01-08 14:42:42 -0800196 (both compression and decompression) is the fastest.
197
Kyungsik Leee76e1fd2013-07-08 16:01:46 -0700198config KERNEL_LZ4
199 bool "LZ4"
200 depends on HAVE_KERNEL_LZ4
201 help
202 LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
203 A preliminary version of LZ4 de/compression tool is available at
204 <https://code.google.com/p/lz4/>.
205
206 Its compression ratio is worse than LZO. The size of the kernel
207 is about 8% bigger than LZO. But the decompression speed is
208 faster than LZO.
209
Alain Knaff30d65db2009-01-04 22:46:17 +0100210endchoice
211
Josh Triplettbd5dc172011-06-15 15:08:28 -0700212config DEFAULT_HOSTNAME
213 string "Default hostname"
214 default "(none)"
215 help
216 This option determines the default system hostname before userspace
217 calls sethostname(2). The kernel traditionally uses "(none)" here,
218 but you may wish to use a different default here to make a minimal
219 system more usable with less configuration.
220
Christoph Hellwig17c46a62018-07-31 13:39:29 +0200221#
222# For some reason microblaze and nios2 hard code SWAP=n. Hopefully we can
223# add proper SWAP support to them, in which case this can be remove.
224#
225config ARCH_NO_SWAP
226 bool
227
Linus Torvalds1da177e2005-04-16 15:20:36 -0700228config SWAP
229 bool "Support for paging of anonymous memory (swap)"
Christoph Hellwig17c46a62018-07-31 13:39:29 +0200230 depends on MMU && BLOCK && !ARCH_NO_SWAP
Linus Torvalds1da177e2005-04-16 15:20:36 -0700231 default y
232 help
233 This option allows you to choose whether you want to have support
Jesper Juhl92c35042006-01-15 02:40:08 +0100234 for so called swap devices or swap files in your kernel that are
Linus Torvalds1da177e2005-04-16 15:20:36 -0700235 used to provide more virtual memory than the actual RAM present
236 in your computer. If unsure say Y.
237
238config SYSVIPC
239 bool "System V IPC"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700240 ---help---
241 Inter Process Communication is a suite of library functions and
242 system calls which let processes (running programs) synchronize and
243 exchange information. It is generally considered to be a good thing,
244 and some programs won't run unless you say Y here. In particular, if
245 you want to run the DOS emulator dosemu under Linux (read the
246 DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
247 you'll need to say Y here.
248
249 You can find documentation about IPC with "info ipc" and also in
250 section 6.4 of the Linux Programmer's Guide, available from
251 <http://www.tldp.org/guides.html>.
252
Eric W. Biedermana5494dc2007-02-14 00:34:06 -0800253config SYSVIPC_SYSCTL
254 bool
255 depends on SYSVIPC
256 depends on SYSCTL
257 default y
258
Linus Torvalds1da177e2005-04-16 15:20:36 -0700259config POSIX_MQUEUE
260 bool "POSIX Message Queues"
Kees Cook19c92392012-10-02 11:19:29 -0700261 depends on NET
Linus Torvalds1da177e2005-04-16 15:20:36 -0700262 ---help---
263 POSIX variant of message queues is a part of IPC. In POSIX message
264 queues every message has a priority which decides about succession
265 of receiving it by a process. If you want to compile and run
266 programs written e.g. for Solaris with use of its POSIX message
Robert P. J. Dayb0e37652007-05-09 07:25:13 +0200267 queues (functions mq_*) say Y here.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700268
269 POSIX message queues are visible as a filesystem called 'mqueue'
270 and can be mounted somewhere if you want to do filesystem
271 operations on message queues.
272
273 If unsure, say Y.
274
Serge E. Hallynbdc8e5f2009-04-06 19:01:11 -0700275config POSIX_MQUEUE_SYSCTL
276 bool
277 depends on POSIX_MQUEUE
278 depends on SYSCTL
279 default y
280
Konstantin Khlebnikov226b4cc2014-06-04 16:10:50 -0700281config CROSS_MEMORY_ATTACH
282 bool "Enable process_vm_readv/writev syscalls"
283 depends on MMU
284 default y
285 help
286 Enabling this option adds the system calls process_vm_readv and
287 process_vm_writev which allow a process with the correct privileges
Geert Uytterhoevena2a368d2014-08-12 13:46:11 -0700288 to directly read from or write to another process' address space.
Konstantin Khlebnikov226b4cc2014-06-04 16:10:50 -0700289 See the man page for more details.
290
Josh Triplett69369a72014-04-03 14:48:27 -0700291config USELIB
292 bool "uselib syscall"
Riku Voipiob2113a42016-01-15 16:58:13 -0800293 def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
Josh Triplett69369a72014-04-03 14:48:27 -0700294 help
295 This option enables the uselib syscall, a system call used in the
296 dynamic linker from libc5 and earlier. glibc does not use this
297 system call. If you intend to run programs built on libc5 or
298 earlier, you may need to enable this syscall. Current systems
299 running glibc can safely disable this.
300
Linus Torvalds1da177e2005-04-16 15:20:36 -0700301config AUDIT
302 bool "Auditing support"
Chris Wright804a6a492005-05-11 10:52:45 +0100303 depends on NET
Linus Torvalds1da177e2005-04-16 15:20:36 -0700304 help
305 Enable auditing infrastructure that can be used with another
306 kernel subsystem, such as SELinux (which requires this for
Paul Moorecb74ed22016-01-13 09:18:55 -0500307 logging of avc messages output). System call auditing is included
308 on architectures which support it.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700309
AKASHI Takahiro7a017722014-02-25 18:16:24 +0900310config HAVE_ARCH_AUDITSYSCALL
311 bool
312
Linus Torvalds1da177e2005-04-16 15:20:36 -0700313config AUDITSYSCALL
Paul Moorecb74ed22016-01-13 09:18:55 -0500314 def_bool y
AKASHI Takahiro7a017722014-02-25 18:16:24 +0900315 depends on AUDIT && HAVE_ARCH_AUDITSYSCALL
Linus Torvalds1da177e2005-04-16 15:20:36 -0700316
Eric Paris939a67f2009-12-17 20:12:06 -0500317config AUDIT_WATCH
318 def_bool y
319 depends on AUDITSYSCALL
320 select FSNOTIFY
Linus Torvalds1da177e2005-04-16 15:20:36 -0700321
Al Viro74c3cbe2007-07-22 08:04:18 -0400322config AUDIT_TREE
323 def_bool y
Eric Paris63c882a2009-05-21 17:02:01 -0400324 depends on AUDITSYSCALL
Eric Paris28a3a7e2009-12-17 20:12:05 -0500325 select FSNOTIFY
Al Viro74c3cbe2007-07-22 08:04:18 -0400326
Thomas Gleixnerd9817eb2010-09-27 12:45:59 +0000327source "kernel/irq/Kconfig"
Thomas Gleixner764e0da2012-05-21 23:16:18 +0200328source "kernel/time/Kconfig"
Christoph Hellwig87a4c372018-07-31 13:39:32 +0200329source "kernel/Kconfig.preempt"
Thomas Gleixnerd9817eb2010-09-27 12:45:59 +0000330
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200331menu "CPU/Task time and stats accounting"
332
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200333config VIRT_CPU_ACCOUNTING
334 bool
335
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200336choice
337 prompt "Cputime accounting"
338 default TICK_CPU_ACCOUNTING if !PPC64
Stephen Rothwell02fc8d32013-02-08 14:19:38 +1100339 default VIRT_CPU_ACCOUNTING_NATIVE if PPC64
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200340
341# Kind of a stub config for the pure tick based cputime accounting
342config TICK_CPU_ACCOUNTING
343 bool "Simple tick based cputime accounting"
Frederic Weisbeckerc58b0df2013-04-26 15:16:31 +0200344 depends on !S390 && !NO_HZ_FULL
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200345 help
346 This is the basic tick based cputime accounting that maintains
347 statistics about user, system and idle time spent on per jiffies
348 granularity.
349
350 If unsure, say Y.
351
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200352config VIRT_CPU_ACCOUNTING_NATIVE
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200353 bool "Deterministic task and CPU time accounting"
Frederic Weisbeckerc58b0df2013-04-26 15:16:31 +0200354 depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200355 select VIRT_CPU_ACCOUNTING
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200356 help
357 Select this option to enable more accurate task and CPU time
358 accounting. This is done by reading a CPU counter on each
359 kernel entry and exit and on transitions within the kernel
360 between system, softirq and hardirq state, so there is a
361 small performance impact. In the case of s390 or IBM POWER > 5,
362 this also enables accounting of stolen time on logically-partitioned
363 systems.
364
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200365config VIRT_CPU_ACCOUNTING_GEN
366 bool "Full dynticks CPU time accounting"
Kevin Hilmanff3fb252013-09-16 15:28:19 -0700367 depends on HAVE_CONTEXT_TRACKING
Kevin Hilman554b0002013-09-16 15:28:21 -0700368 depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200369 select VIRT_CPU_ACCOUNTING
370 select CONTEXT_TRACKING
371 help
372 Select this option to enable task and CPU time accounting on full
373 dynticks systems. This accounting is implemented by watching every
374 kernel-user boundaries using the context tracking subsystem.
375 The accounting is thus performed at the expense of some significant
376 overhead.
377
378 For now this is only useful if you are working on the full
379 dynticks subsystem development.
380
381 If unsure, say N.
382
Rik van Rielb58c3582016-07-13 16:50:02 +0200383endchoice
384
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200385config IRQ_TIME_ACCOUNTING
386 bool "Fine granularity task level IRQ time accounting"
Rik van Rielb58c3582016-07-13 16:50:02 +0200387 depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200388 help
389 Select this option to enable fine granularity task irq time
390 accounting. This is done by reading a timestamp on each
391 transitions between softirq and hardirq state, so there can be a
392 small performance impact.
393
394 If in doubt, say N here.
395
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200396config BSD_PROCESS_ACCT
397 bool "BSD Process Accounting"
Iulia Manda28138932015-04-15 16:16:41 -0700398 depends on MULTIUSER
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200399 help
400 If you say Y here, a user level program will be able to instruct the
401 kernel (via a special system call) to write process accounting
402 information to a file: whenever a process exits, information about
403 that process will be appended to the file by the kernel. The
404 information includes things such as creation time, owning user,
405 command name, memory usage, controlling terminal etc. (the complete
406 list is in the struct acct in <file:include/linux/acct.h>). It is
407 up to the user level program to do useful things with this
408 information. This is generally a good idea, so say Y.
409
410config BSD_PROCESS_ACCT_V3
411 bool "BSD Process Accounting version 3 file format"
412 depends on BSD_PROCESS_ACCT
413 default n
414 help
415 If you say Y here, the process accounting information is written
416 in a new file format that also logs the process IDs of each
417 process and it's parent. Note that this file format is incompatible
418 with previous v0/v1/v2 file formats, so you will need updated tools
419 for processing it. A preliminary version of these tools is available
420 at <http://www.gnu.org/software/acct/>.
421
422config TASKSTATS
Kees Cook19c92392012-10-02 11:19:29 -0700423 bool "Export task/process statistics through netlink"
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200424 depends on NET
Iulia Manda28138932015-04-15 16:16:41 -0700425 depends on MULTIUSER
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200426 default n
427 help
428 Export selected statistics for tasks/processes through the
429 generic netlink interface. Unlike BSD process accounting, the
430 statistics are available during the lifetime of tasks/processes as
431 responses to commands. Like BSD accounting, they are sent to user
432 space on task exit.
433
434 Say N if unsure.
435
436config TASK_DELAY_ACCT
Kees Cook19c92392012-10-02 11:19:29 -0700437 bool "Enable per-task delay accounting"
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200438 depends on TASKSTATS
Naveen N. Raof6db8342015-06-25 23:53:37 +0530439 select SCHED_INFO
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200440 help
441 Collect information on time spent by a task waiting for system
442 resources like cpu, synchronous block I/O completion and swapping
443 in pages. Such statistics can help in setting a task's priorities
444 relative to other tasks for cpu, io, rss limits etc.
445
446 Say N if unsure.
447
448config TASK_XACCT
Kees Cook19c92392012-10-02 11:19:29 -0700449 bool "Enable extended accounting over taskstats"
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200450 depends on TASKSTATS
451 help
452 Collect extended task accounting data and send the data
453 to userland for processing over the taskstats interface.
454
455 Say N if unsure.
456
457config TASK_IO_ACCOUNTING
Kees Cook19c92392012-10-02 11:19:29 -0700458 bool "Enable per-task storage I/O accounting"
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200459 depends on TASK_XACCT
460 help
461 Collect information on the number of bytes of storage I/O which this
462 task has caused.
463
464 Say N if unsure.
465
466endmenu # "CPU/Task time and stats accounting"
467
Frederic Weisbecker5c4991e2017-10-27 04:42:34 +0200468config CPU_ISOLATION
469 bool "CPU isolation"
Geert Uytterhoeven414a2dc2018-01-02 12:13:10 +0100470 depends on SMP || COMPILE_TEST
Frederic Weisbecker2c438382017-12-14 19:18:26 +0100471 default y
Frederic Weisbecker5c4991e2017-10-27 04:42:34 +0200472 help
473 Make sure that CPUs running critical tasks are not disturbed by
474 any source of "noise" such as unbound workqueues, timers, kthreads...
Frederic Weisbecker2c438382017-12-14 19:18:26 +0100475 Unbound jobs get offloaded to housekeeping CPUs. This is driven by
476 the "isolcpus=" boot parameter.
477
478 Say Y if unsure.
Frederic Weisbecker5c4991e2017-10-27 04:42:34 +0200479
Paul E. McKenney0af92d42017-05-17 08:43:40 -0700480source "kernel/rcu/Kconfig"
Mike Travisc903ff82009-01-15 12:28:29 -0800481
Vivek Goyalde5b56b2014-08-08 14:25:41 -0700482config BUILD_BIN2C
483 bool
484 default n
485
Linus Torvalds1da177e2005-04-16 15:20:36 -0700486config IKCONFIG
Ross Birof2443ab2006-09-30 23:27:25 -0700487 tristate "Kernel .config support"
Vivek Goyalde5b56b2014-08-08 14:25:41 -0700488 select BUILD_BIN2C
Linus Torvalds1da177e2005-04-16 15:20:36 -0700489 ---help---
490 This option enables the complete Linux kernel ".config" file
491 contents to be saved in the kernel. It provides documentation
492 of which kernel options are used in a running kernel or in an
493 on-disk kernel. This information can be extracted from the kernel
494 image file with the script scripts/extract-ikconfig and used as
495 input to rebuild the current kernel or to build another kernel.
496 It can also be extracted from a running kernel by reading
497 /proc/config.gz if enabled (below).
498
499config IKCONFIG_PROC
500 bool "Enable access to .config through /proc/config.gz"
501 depends on IKCONFIG && PROC_FS
502 ---help---
503 This option enables access to the kernel configuration file
504 through /proc/config.gz.
505
Alistair John Strachan794543a2007-05-08 00:31:15 -0700506config LOG_BUF_SHIFT
507 int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
Ingo Molnarfb39f982015-07-01 10:19:11 +0200508 range 12 25
Adrian Bunkf17a32e2008-04-29 00:58:58 -0700509 default 17
Josh Triplett361e9df2014-10-03 16:00:54 -0700510 depends on PRINTK
Alistair John Strachan794543a2007-05-08 00:31:15 -0700511 help
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700512 Select the minimal kernel log buffer size as a power of 2.
513 The final size is affected by LOG_CPU_MAX_BUF_SHIFT config
514 parameter, see below. Any higher size also might be forced
515 by "log_buf_len" boot parameter.
516
Adrian Bunkf17a32e2008-04-29 00:58:58 -0700517 Examples:
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700518 17 => 128 KB
Adrian Bunkf17a32e2008-04-29 00:58:58 -0700519 16 => 64 KB
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700520 15 => 32 KB
521 14 => 16 KB
Alistair John Strachan794543a2007-05-08 00:31:15 -0700522 13 => 8 KB
523 12 => 4 KB
524
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700525config LOG_CPU_MAX_BUF_SHIFT
526 int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"
Geert Uytterhoeven2240a312014-10-13 15:51:11 -0700527 depends on SMP
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700528 range 0 21
529 default 12 if !BASE_SMALL
530 default 0 if BASE_SMALL
Josh Triplett361e9df2014-10-03 16:00:54 -0700531 depends on PRINTK
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700532 help
533 This option allows to increase the default ring buffer size
534 according to the number of CPUs. The value defines the contribution
535 of each CPU as a power of 2. The used space is typically only few
536 lines however it might be much more when problems are reported,
537 e.g. backtraces.
538
539 The increased size means that a new buffer has to be allocated and
540 the original static one is unused. It makes sense only on systems
541 with more CPUs. Therefore this value is used only when the sum of
542 contributions is greater than the half of the default kernel ring
543 buffer as defined by LOG_BUF_SHIFT. The default values are set
544 so that more than 64 CPUs are needed to trigger the allocation.
545
546 Also this option is ignored when "log_buf_len" kernel parameter is
547 used as it forces an exact (power of two) size of the ring buffer.
548
549 The number of possible CPUs is used for this computation ignoring
Geert Uytterhoeven5e0d8d52016-06-05 10:47:02 +0200550 hotplugging making the computation optimal for the worst case
551 scenario while allowing a simple algorithm to be used from bootup.
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700552
553 Examples shift values and their meaning:
554 17 => 128 KB for each CPU
555 16 => 64 KB for each CPU
556 15 => 32 KB for each CPU
557 14 => 16 KB for each CPU
558 13 => 8 KB for each CPU
559 12 => 4 KB for each CPU
560
Sergey Senozhatskyf92bac32016-12-27 23:16:05 +0900561config PRINTK_SAFE_LOG_BUF_SHIFT
562 int "Temporary per-CPU printk log buffer size (12 => 4KB, 13 => 8KB)"
Petr Mladek427934b2016-05-20 17:00:39 -0700563 range 10 21
564 default 13
Sergey Senozhatskyf92bac32016-12-27 23:16:05 +0900565 depends on PRINTK
Petr Mladek427934b2016-05-20 17:00:39 -0700566 help
Sergey Senozhatskyf92bac32016-12-27 23:16:05 +0900567 Select the size of an alternate printk per-CPU buffer where messages
568 printed from usafe contexts are temporary stored. One example would
569 be NMI messages, another one - printk recursion. The messages are
570 copied to the main log buffer in a safe context to avoid a deadlock.
571 The value defines the size as a power of 2.
Petr Mladek427934b2016-05-20 17:00:39 -0700572
Sergey Senozhatskyf92bac32016-12-27 23:16:05 +0900573 Those messages are rare and limited. The largest one is when
Petr Mladek427934b2016-05-20 17:00:39 -0700574 a backtrace is printed. It usually fits into 4KB. Select
575 8KB if you want to be on the safe side.
576
577 Examples:
578 17 => 128 KB for each CPU
579 16 => 64 KB for each CPU
580 15 => 32 KB for each CPU
581 14 => 16 KB for each CPU
582 13 => 8 KB for each CPU
583 12 => 4 KB for each CPU
584
KAMEZAWA Hiroyuki5cdc38f2009-01-07 18:07:30 -0800585#
586# Architectures with an unreliable sched_clock() should select this:
587#
588config HAVE_UNSTABLE_SCHED_CLOCK
589 bool
590
Stephen Boyd38ff87f2013-06-01 23:39:40 -0700591config GENERIC_SCHED_CLOCK
592 bool
593
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200594#
595# For architectures that want to enable the support for NUMA-affine scheduler
596# balancing logic:
597#
598config ARCH_SUPPORTS_NUMA_BALANCING
599 bool
600
Peter Zijlstrabe5e6102013-11-18 18:27:06 +0100601#
Mel Gorman72b252a2015-09-04 15:47:32 -0700602# For architectures that prefer to flush all TLBs after a number of pages
603# are unmapped instead of sending one IPI per page to flush. The architecture
604# must provide guarantees on what happens if a clean TLB cache entry is
605# written after the unmap. Details are in mm/rmap.c near the check for
606# should_defer_flush. The architecture should also consider if the full flush
607# and the refill costs are offset by the savings of sending fewer IPIs.
608config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
609 bool
610
611#
Peter Zijlstrabe5e6102013-11-18 18:27:06 +0100612# For architectures that know their GCC __int128 support is sound
613#
614config ARCH_SUPPORTS_INT128
615 bool
616
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200617# For architectures that (ab)use NUMA to represent different memory regions
618# all cpu-local but of different latencies, such as SuperH.
619#
620config ARCH_WANT_NUMA_VARIABLE_LOCALITY
621 bool
622
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200623config NUMA_BALANCING
624 bool "Memory placement aware NUMA scheduler"
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200625 depends on ARCH_SUPPORTS_NUMA_BALANCING
626 depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
627 depends on SMP && NUMA && MIGRATION
628 help
629 This option adds support for automatic NUMA aware memory/task placement.
630 The mechanism is quite primitive and is based on migrating memory when
Paul Gortmaker6d56a412013-08-13 11:06:50 -0400631 it has references to the node the task is running on.
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200632
633 This system will be inactive on UMA systems.
634
Aneesh Kumar K.V6f7c97e2014-12-10 15:43:37 -0800635config NUMA_BALANCING_DEFAULT_ENABLED
636 bool "Automatically enable NUMA aware memory/task placement"
637 default y
638 depends on NUMA_BALANCING
639 help
640 If set, automatic NUMA balancing will be enabled if running on a NUMA
641 machine.
642
Li Zefan23964d22009-01-15 13:50:58 -0800643menuconfig CGROUPS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500644 bool "Control Group support"
Tejun Heo2bd59d42014-02-11 11:52:49 -0500645 select KERNFS
Paul Menageddbcc7e2007-10-18 23:39:30 -0700646 help
Li Zefan23964d22009-01-15 13:50:58 -0800647 This option adds support for grouping sets of processes together, for
KAMEZAWA Hiroyuki5cdc38f2009-01-07 18:07:30 -0800648 use with process control subsystems such as Cpusets, CFS, memory
649 controls or device isolation.
650 See
KAMEZAWA Hiroyuki5cdc38f2009-01-07 18:07:30 -0800651 - Documentation/scheduler/sched-design-CFS.txt (CFS)
seokhoon.yoon9991a9c2016-08-02 14:03:13 -0700652 - Documentation/cgroup-v1/ (features for grouping, isolation
Li Zefan45ce80f2009-01-15 13:50:59 -0800653 and resource control)
Paul Menageddbcc7e2007-10-18 23:39:30 -0700654
655 Say N if unsure.
656
Li Zefan23964d22009-01-15 13:50:58 -0800657if CGROUPS
658
Johannes Weiner3e32cb22014-12-10 15:42:31 -0800659config PAGE_COUNTER
660 bool
661
Andrew Mortonc255a452012-07-31 16:43:02 -0700662config MEMCG
Johannes Weinera0166ec2015-12-17 17:19:56 -0500663 bool "Memory controller"
Johannes Weiner3e32cb22014-12-10 15:42:31 -0800664 select PAGE_COUNTER
Tejun Heo79bd9812013-11-22 18:20:42 -0500665 select EVENTFD
Balbir Singh00f0b822008-03-04 14:28:39 -0800666 help
Johannes Weinera0166ec2015-12-17 17:19:56 -0500667 Provides control over the memory footprint of tasks in a cgroup.
Balbir Singh00f0b822008-03-04 14:28:39 -0800668
Andrew Mortonc255a452012-07-31 16:43:02 -0700669config MEMCG_SWAP
Johannes Weinera0166ec2015-12-17 17:19:56 -0500670 bool "Swap controller"
Andrew Mortonc255a452012-07-31 16:43:02 -0700671 depends on MEMCG && SWAP
KAMEZAWA Hiroyukic0777192009-01-07 18:07:57 -0800672 help
Johannes Weinera0166ec2015-12-17 17:19:56 -0500673 Provides control over the swap space consumed by tasks in a cgroup.
674
Andrew Mortonc255a452012-07-31 16:43:02 -0700675config MEMCG_SWAP_ENABLED
Johannes Weinera0166ec2015-12-17 17:19:56 -0500676 bool "Swap controller enabled by default"
Andrew Mortonc255a452012-07-31 16:43:02 -0700677 depends on MEMCG_SWAP
Michal Hockoa42c3902010-11-24 12:57:08 -0800678 default y
679 help
680 Memory Resource Controller Swap Extension comes with its price in
681 a bigger memory consumption. General purpose distribution kernels
Jim Cromie43d547f2010-12-17 14:32:36 -0700682 which want to enable the feature but keep it disabled by default
Michal Hocko07555ac2013-08-22 16:35:46 -0700683 and let the user enable it by swapaccount=1 boot command line
Michal Hockoa42c3902010-11-24 12:57:08 -0800684 parameter should have this option unselected.
685 For those who want to have the feature enabled by default should
686 select this option (if, for some reason, they need to disable it
WANG Cong00a66d22011-07-25 17:12:12 -0700687 then swapaccount=0 does the trick).
KAMEZAWA Hiroyukic0777192009-01-07 18:07:57 -0800688
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500689config BLK_CGROUP
690 bool "IO controller"
691 depends on BLOCK
Aneesh Kumar K.V2bc64a22012-07-31 16:42:12 -0700692 default n
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500693 ---help---
694 Generic block IO controller cgroup interface. This is the common
695 cgroup interface which should be used by various IO controlling
696 policies.
Aneesh Kumar K.V2bc64a22012-07-31 16:42:12 -0700697
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500698 Currently, CFQ IO scheduler uses it to recognize task groups and
699 control disk bandwidth allocation (proportional time slice allocation)
700 to such task groups. It is also used by bio throttling logic in
701 block layer to implement upper limit in IO rates on a device.
Stephane Eraniane5d13672011-02-14 11:20:01 +0200702
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500703 This option only enables generic Block IO controller infrastructure.
704 One needs to also enable actual IO controlling logic/policy. For
705 enabling proportional weight division of disk bandwidth in CFQ, set
706 CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
707 CONFIG_BLK_DEV_THROTTLING=y.
708
seokhoon.yoon9991a9c2016-08-02 14:03:13 -0700709 See Documentation/cgroup-v1/blkio-controller.txt for more information.
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500710
711config DEBUG_BLK_CGROUP
712 bool "IO controller debugging"
713 depends on BLK_CGROUP
714 default n
715 ---help---
716 Enable some debugging help. Currently it exports additional stat
717 files in a cgroup which can be useful for debugging.
718
719config CGROUP_WRITEBACK
720 bool
721 depends on MEMCG && BLK_CGROUP
722 default y
Stephane Eraniane5d13672011-02-14 11:20:01 +0200723
Dhaval Giani7c941432010-01-20 13:26:18 +0100724menuconfig CGROUP_SCHED
Johannes Weinera0166ec2015-12-17 17:19:56 -0500725 bool "CPU controller"
Dhaval Giani7c941432010-01-20 13:26:18 +0100726 default n
727 help
728 This feature lets CPU scheduler recognize task groups and control CPU
729 bandwidth allocation to such task groups. It uses cgroups to group
730 tasks.
731
732if CGROUP_SCHED
733config FAIR_GROUP_SCHED
734 bool "Group scheduling for SCHED_OTHER"
735 depends on CGROUP_SCHED
736 default CGROUP_SCHED
737
Paul Turnerab84d312011-07-21 09:43:28 -0700738config CFS_BANDWIDTH
739 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
Paul Turnerab84d312011-07-21 09:43:28 -0700740 depends on FAIR_GROUP_SCHED
741 default n
742 help
743 This option allows users to define CPU bandwidth rates (limits) for
744 tasks running within the fair group scheduler. Groups with no limit
745 set are considered to be unconstrained and will run with no
746 restriction.
Sebastian Andrzej Siewiorcd33d882018-05-15 18:53:28 +0200747 See Documentation/scheduler/sched-bwc.txt for more information.
Paul Turnerab84d312011-07-21 09:43:28 -0700748
Dhaval Giani7c941432010-01-20 13:26:18 +0100749config RT_GROUP_SCHED
750 bool "Group scheduling for SCHED_RR/FIFO"
Dhaval Giani7c941432010-01-20 13:26:18 +0100751 depends on CGROUP_SCHED
752 default n
753 help
754 This feature lets you explicitly allocate real CPU bandwidth
Li Zefan32bd7eb2010-03-24 13:17:19 +0800755 to task groups. If enabled, it will also make it impossible to
Dhaval Giani7c941432010-01-20 13:26:18 +0100756 schedule realtime tasks for non-root users until you allocate
757 realtime bandwidth for them.
758 See Documentation/scheduler/sched-rt-group.txt for more information.
759
760endif #CGROUP_SCHED
761
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500762config CGROUP_PIDS
763 bool "PIDs controller"
764 help
765 Provides enforcement of process number limits in the scope of a
766 cgroup. Any attempt to fork more processes than is allowed in the
767 cgroup will fail. PIDs are fundamentally a global resource because it
768 is fairly trivial to reach PID exhaustion before you reach even a
769 conservative kmemcg limit. As a result, it is possible to grind a
770 system to halt without being limited by other cgroup policies. The
Parav Pandit6cc578d2016-03-05 11:30:56 +0530771 PIDs controller is designed to stop this from happening.
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500772
773 It should be noted that organisational operations (such as attaching
Parav Pandit6cc578d2016-03-05 11:30:56 +0530774 to a cgroup hierarchy will *not* be blocked by the PIDs controller),
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500775 since the PIDs limit only affects a process's ability to fork, not to
776 attach to a cgroup.
777
Parav Pandit39d3e752017-01-10 00:02:13 +0000778config CGROUP_RDMA
779 bool "RDMA controller"
780 help
781 Provides enforcement of RDMA resources defined by IB stack.
782 It is fairly easy for consumers to exhaust RDMA resources, which
783 can result into resource unavailability to other consumers.
784 RDMA controller is designed to stop this from happening.
785 Attaching processes with active RDMA resources to the cgroup
786 hierarchy is allowed even if can cross the hierarchy's limit.
787
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500788config CGROUP_FREEZER
789 bool "Freezer controller"
790 help
791 Provides a way to freeze and unfreeze all tasks in a
792 cgroup.
793
Johannes Weiner489c2a22016-01-20 15:02:41 -0800794 This option affects the ORIGINAL cgroup interface. The cgroup2 memory
795 controller includes important in-kernel memory consumers per default.
796
797 If you're using cgroup2, say N.
798
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500799config CGROUP_HUGETLB
800 bool "HugeTLB controller"
801 depends on HUGETLB_PAGE
802 select PAGE_COUNTER
Vivek Goyalafc24d42010-04-26 19:27:56 +0200803 default n
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500804 help
805 Provides a cgroup controller for HugeTLB pages.
806 When you enable this, you can put a per cgroup limit on HugeTLB usage.
807 The limit is enforced during page fault. Since HugeTLB doesn't
808 support page reclaim, enforcing the limit at page fault time implies
809 that, the application will get SIGBUS signal if it tries to access
810 HugeTLB pages beyond its limit. This requires the application to know
811 beforehand how much HugeTLB pages it would require for its use. The
812 control group is tracked in the third page lru pointer. This means
813 that we cannot use the controller with huge page less than 3 pages.
Vivek Goyalafc24d42010-04-26 19:27:56 +0200814
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500815config CPUSETS
816 bool "Cpuset controller"
Nicolas Pitree1d4eee2017-06-14 13:19:23 -0400817 depends on SMP
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500818 help
819 This option will let you create and manage CPUSETs which
820 allow dynamically partitioning a system into sets of CPUs and
821 Memory Nodes and assigning tasks to run only within those sets.
822 This is primarily useful on large SMP or NUMA systems.
Vivek Goyalafc24d42010-04-26 19:27:56 +0200823
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500824 Say N if unsure.
Vivek Goyalafc24d42010-04-26 19:27:56 +0200825
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500826config PROC_PID_CPUSET
827 bool "Include legacy /proc/<pid>/cpuset file"
828 depends on CPUSETS
Tejun Heo89e9b9e2015-05-22 17:13:36 -0400829 default y
830
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500831config CGROUP_DEVICE
832 bool "Device controller"
833 help
834 Provides a cgroup controller implementing whitelists for
835 devices which a process in the cgroup can mknod or open.
836
837config CGROUP_CPUACCT
838 bool "Simple CPU accounting controller"
839 help
840 Provides a simple controller for monitoring the
841 total CPU consumed by the tasks in a cgroup.
842
843config CGROUP_PERF
844 bool "Perf controller"
845 depends on PERF_EVENTS
846 help
847 This option extends the perf per-cpu mode to restrict monitoring
848 to threads which belong to the cgroup specified and run on the
849 designated cpu.
850
851 Say N if unsure.
852
Daniel Mack30070982016-11-23 16:52:26 +0100853config CGROUP_BPF
854 bool "Support for eBPF programs attached to cgroups"
Andy Lutomirski483c4932016-12-16 08:33:45 -0800855 depends on BPF_SYSCALL
856 select SOCK_CGROUP_DATA
Daniel Mack30070982016-11-23 16:52:26 +0100857 help
858 Allow attaching eBPF programs to a cgroup using the bpf(2)
859 syscall command BPF_PROG_ATTACH.
860
861 In which context these programs are accessed depends on the type
862 of attachment. For instance, programs that are attached using
863 BPF_CGROUP_INET_INGRESS will be executed on the ingress path of
864 inet sockets.
865
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500866config CGROUP_DEBUG
Waiman Long23b0be42017-06-13 17:18:03 -0400867 bool "Debug controller"
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500868 default n
Waiman Long23b0be42017-06-13 17:18:03 -0400869 depends on DEBUG_KERNEL
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500870 help
871 This option enables a simple controller that exports
Waiman Long23b0be42017-06-13 17:18:03 -0400872 debugging information about the cgroups framework. This
873 controller is for control cgroup debugging only. Its
874 interfaces are not stable.
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500875
876 Say N.
877
Arnd Bergmann73b35142017-01-10 13:08:06 +0100878config SOCK_CGROUP_DATA
879 bool
880 default n
881
Li Zefan23964d22009-01-15 13:50:58 -0800882endif # CGROUPS
KAMEZAWA Hiroyukic0777192009-01-07 18:07:57 -0800883
Daniel Lezcano8dd2a822010-10-27 15:34:38 -0700884menuconfig NAMESPACES
David Rientjes6a108a12011-01-20 14:44:16 -0800885 bool "Namespaces support" if EXPERT
Iulia Manda28138932015-04-15 16:16:41 -0700886 depends on MULTIUSER
David Rientjes6a108a12011-01-20 14:44:16 -0800887 default !EXPERT
Pavel Emelyanovc5289a62008-02-08 04:18:19 -0800888 help
889 Provides the way to make tasks work with different objects using
890 the same id. For example same IPC id may refer to different objects
891 or same user id or pid may refer to different tasks when used in
892 different namespaces.
893
Daniel Lezcano8dd2a822010-10-27 15:34:38 -0700894if NAMESPACES
895
Pavel Emelyanov58bfdd6d2008-02-08 04:18:21 -0800896config UTS_NS
897 bool "UTS namespace"
Daniel Lezcano17a6d442010-10-27 15:34:37 -0700898 default y
Pavel Emelyanov58bfdd6d2008-02-08 04:18:21 -0800899 help
900 In this namespace tasks see different info provided with the
901 uname() system call
902
Pavel Emelyanovae5e1b22008-02-08 04:18:22 -0800903config IPC_NS
904 bool "IPC namespace"
Daniel Lezcano8dd2a822010-10-27 15:34:38 -0700905 depends on (SYSVIPC || POSIX_MQUEUE)
Daniel Lezcano17a6d442010-10-27 15:34:37 -0700906 default y
Pavel Emelyanovae5e1b22008-02-08 04:18:22 -0800907 help
908 In this namespace tasks work with IPC ids which correspond to
Serge E. Hallyn614b84c2009-04-06 19:01:08 -0700909 different IPC objects in different namespaces.
Pavel Emelyanovae5e1b22008-02-08 04:18:22 -0800910
Pavel Emelyanovaee16ce2008-02-08 04:18:23 -0800911config USER_NS
Kees Cook19c92392012-10-02 11:19:29 -0700912 bool "User namespace"
Eric W. Biederman5673a942011-11-17 10:23:55 -0800913 default n
Pavel Emelyanovaee16ce2008-02-08 04:18:23 -0800914 help
915 This allows containers, i.e. vservers, to use user namespaces
916 to provide different user info for different servers.
Eric W. Biedermane11f0ae2013-01-25 16:48:31 -0800917
918 When user namespaces are enabled in the kernel it is
Johannes Weinerd886f4e2016-01-20 15:02:47 -0800919 recommended that the MEMCG option also be enabled and that
920 user-space use the memory control groups to limit the amount
921 of memory a memory unprivileged users can use.
Eric W. Biedermane11f0ae2013-01-25 16:48:31 -0800922
Pavel Emelyanovaee16ce2008-02-08 04:18:23 -0800923 If unsure, say N.
924
Pavel Emelyanov74bd59b2008-02-08 04:18:24 -0800925config PID_NS
Daniel Lezcano9bd38c22010-10-27 15:34:37 -0700926 bool "PID Namespaces"
Daniel Lezcano17a6d442010-10-27 15:34:37 -0700927 default y
Pavel Emelyanov74bd59b2008-02-08 04:18:24 -0800928 help
Heikki Orsila12d2b8f2008-07-06 15:48:02 +0300929 Support process id namespaces. This allows having multiple
Matt LaPlante692105b2009-01-26 11:12:25 +0100930 processes with the same pid as long as they are in different
Pavel Emelyanov74bd59b2008-02-08 04:18:24 -0800931 pid namespaces. This is a building block of containers.
932
Matt Helsleyd6eb6332009-01-26 12:25:55 -0800933config NET_NS
934 bool "Network namespace"
Daniel Lezcano8dd2a822010-10-27 15:34:38 -0700935 depends on NET
Daniel Lezcano17a6d442010-10-27 15:34:37 -0700936 default y
Matt Helsleyd6eb6332009-01-26 12:25:55 -0800937 help
938 Allow user space to create what appear to be multiple instances
939 of the network stack.
940
Daniel Lezcano8dd2a822010-10-27 15:34:38 -0700941endif # NAMESPACES
942
Mike Galbraith5091faa2010-11-30 14:18:03 +0100943config SCHED_AUTOGROUP
944 bool "Automatic process group scheduling"
Mike Galbraith5091faa2010-11-30 14:18:03 +0100945 select CGROUPS
946 select CGROUP_SCHED
947 select FAIR_GROUP_SCHED
948 help
949 This option optimizes the scheduler for common desktop workloads by
950 automatically creating and populating task groups. This separation
951 of workloads isolates aggressive CPU burners (like build jobs) from
952 desktop applications. Task group autogeneration is currently based
953 upon task session.
954
Daniel Lezcano7af37be2010-10-27 15:34:41 -0700955config SYSFS_DEPRECATED
Ferenc Wagner5d6a4ea2011-01-10 19:04:22 +0100956 bool "Enable deprecated sysfs features to support old userspace tools"
Daniel Lezcano7af37be2010-10-27 15:34:41 -0700957 depends on SYSFS
958 default n
959 help
960 This option adds code that switches the layout of the "block" class
961 devices, to not show up in /sys/class/block/, but only in
962 /sys/block/.
963
964 This switch is only active when the sysfs.deprecated=1 boot option is
965 passed or the SYSFS_DEPRECATED_V2 option is set.
966
967 This option allows new kernels to run on old distributions and tools,
968 which might get confused by /sys/class/block/. Since 2007/2008 all
969 major distributions and tools handle this just fine.
970
971 Recent distributions and userspace tools after 2009/2010 depend on
972 the existence of /sys/class/block/, and will not work with this
973 option enabled.
974
975 Only if you are using a new kernel on an old distribution, you might
976 need to say Y here.
977
978config SYSFS_DEPRECATED_V2
Ferenc Wagner5d6a4ea2011-01-10 19:04:22 +0100979 bool "Enable deprecated sysfs features by default"
Daniel Lezcano7af37be2010-10-27 15:34:41 -0700980 default n
981 depends on SYSFS
982 depends on SYSFS_DEPRECATED
983 help
984 Enable deprecated sysfs by default.
985
986 See the CONFIG_SYSFS_DEPRECATED option for more details about this
987 option.
988
989 Only if you are using a new kernel on an old distribution, you might
990 need to say Y here. Even then, odds are you would not need it
991 enabled, you can always pass the boot option if absolutely necessary.
992
993config RELAY
994 bool "Kernel->user space relay support (formerly relayfs)"
Peter Zijlstra26b56792016-10-11 13:54:33 -0700995 select IRQ_WORK
Daniel Lezcano7af37be2010-10-27 15:34:41 -0700996 help
997 This option enables support for relay interface support in
998 certain file systems (such as debugfs).
999 It is designed to provide an efficient mechanism for tools and
1000 facilities to relay large amounts of data from kernel space to
1001 user space.
1002
1003 If unsure, say N.
1004
Dimitri Gorokhovikf9916332007-03-06 01:42:17 -08001005config BLK_DEV_INITRD
1006 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
Dimitri Gorokhovikf9916332007-03-06 01:42:17 -08001007 help
1008 The initial RAM filesystem is a ramfs which is loaded by the
1009 boot loader (loadlin or lilo) and that is mounted as root
1010 before the normal boot procedure. It is typically used to
1011 load modules needed to mount the "real" root file system,
Mauro Carvalho Chehab8c27ceff32016-10-18 10:12:27 -02001012 etc. See <file:Documentation/admin-guide/initrd.rst> for details.
Dimitri Gorokhovikf9916332007-03-06 01:42:17 -08001013
1014 If RAM disk support (BLK_DEV_RAM) is also included, this
1015 also enables initial RAM disk (initrd) support and adds
1016 15 Kbytes (more on some other architectures) to the kernel size.
1017
1018 If unsure say Y.
1019
Jean-Paul Samanc33df4e2007-02-10 01:44:43 -08001020if BLK_DEV_INITRD
1021
Sam Ravnborgdbec4862005-08-10 20:44:50 +02001022source "usr/Kconfig"
1023
Jean-Paul Samanc33df4e2007-02-10 01:44:43 -08001024endif
1025
Arnd Bergmann877417e2016-04-25 17:35:27 +02001026choice
1027 prompt "Compiler optimization level"
Ulf Magnusson2cc3ce22017-10-04 01:53:26 +02001028 default CC_OPTIMIZE_FOR_PERFORMANCE
Arnd Bergmann877417e2016-04-25 17:35:27 +02001029
1030config CC_OPTIMIZE_FOR_PERFORMANCE
1031 bool "Optimize for performance"
1032 help
1033 This is the default optimization level for the kernel, building
1034 with the "-O2" compiler flag for best performance and most
1035 helpful compile-time warnings.
1036
Linus Torvaldsc45b4f12005-12-14 18:52:21 -08001037config CC_OPTIMIZE_FOR_SIZE
Ingo Molnar96fffeb2008-04-28 01:39:43 +02001038 bool "Optimize for size"
Linus Torvaldsc45b4f12005-12-14 18:52:21 -08001039 help
Masahiro Yamada31a4af72014-08-05 14:43:07 +09001040 Enabling this option will pass "-Os" instead of "-O2" to
1041 your compiler resulting in a smaller kernel.
Linus Torvaldsc45b4f12005-12-14 18:52:21 -08001042
Kirill Smelkov3a55fb02012-11-02 15:41:01 +04001043 If unsure, say N.
Linus Torvaldsc45b4f12005-12-14 18:52:21 -08001044
Arnd Bergmann877417e2016-04-25 17:35:27 +02001045endchoice
1046
Nicholas Piggin5d20ee32018-05-09 23:00:00 +10001047config HAVE_LD_DEAD_CODE_DATA_ELIMINATION
1048 bool
1049 help
1050 This requires that the arch annotates or otherwise protects
1051 its external entry points from being discarded. Linker scripts
1052 must also merge .text.*, .data.*, and .bss.* correctly into
1053 output sections. Care must be taken not to pull in unrelated
1054 sections (e.g., '.text.init'). Typically '.' in section names
1055 is used to distinguish them from label names / C identifiers.
1056
1057config LD_DEAD_CODE_DATA_ELIMINATION
1058 bool "Dead code and data elimination (EXPERIMENTAL)"
1059 depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION
1060 depends on EXPERT
1061 help
Masahiro Yamada8b9d2712018-06-24 01:41:51 +09001062 Enable this if you want to do dead code and data elimination with
1063 the linker by compiling with -ffunction-sections -fdata-sections,
1064 and linking with --gc-sections.
Nicholas Piggin5d20ee32018-05-09 23:00:00 +10001065
1066 This can reduce on disk and in-memory size of the kernel
1067 code and static data, particularly for small configs and
1068 on small systems. This has the possibility of introducing
1069 silently broken kernel if the required annotations are not
1070 present. This option is not well tested yet, so use at your
1071 own risk.
1072
Randy Dunlap08470622006-09-30 23:28:13 -07001073config SYSCTL
1074 bool
1075
Randy Dunlapb943c462009-03-10 12:55:46 -07001076config ANON_INODES
1077 bool
1078
Mike Frysinger657a5202013-04-30 15:28:45 -07001079config HAVE_UID16
1080 bool
1081
1082config SYSCTL_EXCEPTION_TRACE
1083 bool
1084 help
1085 Enable support for /proc/sys/debug/exception-trace.
1086
1087config SYSCTL_ARCH_UNALIGN_NO_WARN
1088 bool
1089 help
1090 Enable support for /proc/sys/kernel/ignore-unaligned-usertrap
1091 Allows arch to define/use @no_unaligned_warning to possibly warn
1092 about unaligned access emulation going on under the hood.
1093
1094config SYSCTL_ARCH_UNALIGN_ALLOW
1095 bool
1096 help
1097 Enable support for /proc/sys/kernel/unaligned-trap
1098 Allows arches to define/use @unaligned_enabled to runtime toggle
1099 the unaligned access emulation.
1100 see arch/parisc/kernel/unaligned.c for reference
1101
Mike Frysinger657a5202013-04-30 15:28:45 -07001102config HAVE_PCSPKR_PLATFORM
1103 bool
1104
Alexei Starovoitovf89b7752014-10-23 18:41:08 -07001105# interpreter that classic socket filters depend on
1106config BPF
1107 bool
1108
David Rientjes6a108a12011-01-20 14:44:16 -08001109menuconfig EXPERT
1110 bool "Configure standard kernel features (expert users)"
Josh Triplettf505c552011-06-05 18:23:58 -07001111 # Unhide debug options, to make the on-by-default options visible
1112 select DEBUG_KERNEL
Linus Torvalds1da177e2005-04-16 15:20:36 -07001113 help
1114 This option allows certain base kernel options and settings
1115 to be disabled or tweaked. This is for specialized
1116 environments which can tolerate a "non-standard" kernel.
1117 Only use this if you really know what you are doing.
1118
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001119config UID16
David Rientjes6a108a12011-01-20 14:44:16 -08001120 bool "Enable 16-bit UID system calls" if EXPERT
Iulia Manda28138932015-04-15 16:16:41 -07001121 depends on HAVE_UID16 && MULTIUSER
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001122 default y
1123 help
1124 This enables the legacy 16-bit UID syscall wrappers.
1125
Iulia Manda28138932015-04-15 16:16:41 -07001126config MULTIUSER
1127 bool "Multiple users, groups and capabilities support" if EXPERT
1128 default y
1129 help
1130 This option enables support for non-root users, groups and
1131 capabilities.
1132
1133 If you say N here, all processes will run with UID 0, GID 0, and all
1134 possible capabilities. Saying N here also compiles out support for
1135 system calls related to UIDs, GIDs, and capabilities, such as setuid,
1136 setgid, and capset.
1137
1138 If unsure, say Y here.
1139
Fabian Frederickf6187762014-06-04 16:11:12 -07001140config SGETMASK_SYSCALL
1141 bool "sgetmask/ssetmask syscalls support" if EXPERT
Arnd Bergmanna687a532018-03-07 23:30:54 +01001142 def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH
Fabian Frederickf6187762014-06-04 16:11:12 -07001143 ---help---
1144 sys_sgetmask and sys_ssetmask are obsolete system calls
1145 no longer supported in libc but still enabled by default in some
1146 architectures.
1147
1148 If unsure, leave the default option here.
1149
Fabian Frederick6af9f7b2014-04-03 14:48:25 -07001150config SYSFS_SYSCALL
1151 bool "Sysfs syscall support" if EXPERT
1152 default y
1153 ---help---
1154 sys_sysfs is an obsolete system call no longer supported in libc.
1155 Note that disabling this option is more secure but might break
1156 compatibility with some systems.
1157
1158 If unsure say Y here.
1159
Eric W. Biedermanb89a8172006-09-27 01:51:04 -07001160config SYSCTL_SYSCALL
David Rientjes6a108a12011-01-20 14:44:16 -08001161 bool "Sysctl syscall support" if EXPERT
Eric W. Biederman26a70342009-11-05 05:26:41 -08001162 depends on PROC_SYSCTL
WANG Congc736de62011-11-02 13:39:25 -07001163 default n
Eric W. Biedermanb89a8172006-09-27 01:51:04 -07001164 select SYSCTL
1165 ---help---
Eric W. Biederman13bb7e32006-11-08 17:44:51 -08001166 sys_sysctl uses binary paths that have been found challenging
1167 to properly maintain and use. The interface in /proc/sys
1168 using paths with ascii names is now the primary path to this
1169 information.
Eric W. Biedermanb89a8172006-09-27 01:51:04 -07001170
Eric W. Biederman13bb7e32006-11-08 17:44:51 -08001171 Almost nothing using the binary sysctl interface so if you are
1172 trying to save some space it is probably safe to disable this,
1173 making your kernel marginally smaller.
Eric W. Biedermanb89a8172006-09-27 01:51:04 -07001174
WANG Congc736de62011-11-02 13:39:25 -07001175 If unsure say N here.
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001176
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001177config FHANDLE
1178 bool "open by fhandle syscalls" if EXPERT
1179 select EXPORTFS
1180 default y
1181 help
1182 If you say Y here, a user level program will be able to map
1183 file names to handle and then later use the handle for
1184 different file system operations. This is useful in implementing
1185 userspace file servers, which now track files using handles instead
1186 of names. The handle would remain the same even if file names
1187 get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
1188 syscalls.
1189
Nicolas Pitrebaa73d92016-11-11 00:10:10 -05001190config POSIX_TIMERS
1191 bool "Posix Clocks & timers" if EXPERT
1192 default y
1193 help
1194 This includes native support for POSIX timers to the kernel.
1195 Some embedded systems have no use for them and therefore they
1196 can be configured out to reduce the size of the kernel image.
1197
1198 When this option is disabled, the following syscalls won't be
1199 available: timer_create, timer_gettime: timer_getoverrun,
1200 timer_settime, timer_delete, clock_adjtime, getitimer,
1201 setitimer, alarm. Furthermore, the clock_settime, clock_gettime,
1202 clock_getres and clock_nanosleep syscalls will be limited to
1203 CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only.
1204
1205 If unsure say y.
1206
Matt Mackalld59745c2005-05-01 08:59:02 -07001207config PRINTK
1208 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001209 bool "Enable support for printk" if EXPERT
Frederic Weisbecker74876a92012-10-12 18:00:23 +02001210 select IRQ_WORK
Matt Mackalld59745c2005-05-01 08:59:02 -07001211 help
1212 This option enables normal printk support. Removing it
1213 eliminates most of the message strings from the kernel image
1214 and makes the kernel more or less silent. As this makes it
1215 very difficult to diagnose system problems, saying N here is
1216 strongly discouraged.
1217
Petr Mladek42a0bb32016-05-20 17:00:33 -07001218config PRINTK_NMI
1219 def_bool y
1220 depends on PRINTK
1221 depends on HAVE_NMI
1222
Matt Mackallc8538a72005-05-01 08:59:01 -07001223config BUG
David Rientjes6a108a12011-01-20 14:44:16 -08001224 bool "BUG() support" if EXPERT
Matt Mackallc8538a72005-05-01 08:59:01 -07001225 default y
1226 help
1227 Disabling this option eliminates support for BUG and WARN, reducing
1228 the size of your kernel image and potentially quietly ignoring
1229 numerous fatal conditions. You should only consider disabling this
1230 option for embedded systems with no facilities for reporting errors.
1231 Just say Y.
1232
Matt Mackall708e9a72006-01-08 01:05:25 -08001233config ELF_CORE
Alex Kelly046d6622012-10-04 17:15:23 -07001234 depends on COREDUMP
Matt Mackall708e9a72006-01-08 01:05:25 -08001235 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001236 bool "Enable ELF core dumps" if EXPERT
Matt Mackall708e9a72006-01-08 01:05:25 -08001237 help
1238 Enable support for generating core dumps. Disabling saves about 4k.
1239
Ralf Baechle8761f1a2011-06-01 19:05:09 +01001240
Stas Sergeeve5e1d3c2008-05-07 12:39:56 +02001241config PCSPKR_PLATFORM
David Rientjes6a108a12011-01-20 14:44:16 -08001242 bool "Enable PC-Speaker support" if EXPERT
Ralf Baechle8761f1a2011-06-01 19:05:09 +01001243 depends on HAVE_PCSPKR_PLATFORM
Ralf Baechle15f304b2011-06-01 19:04:59 +01001244 select I8253_LOCK
Stas Sergeeve5e1d3c2008-05-07 12:39:56 +02001245 default y
1246 help
1247 This option allows to disable the internal PC-Speaker
1248 support, saving some memory.
1249
Linus Torvalds1da177e2005-04-16 15:20:36 -07001250config BASE_FULL
1251 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001252 bool "Enable full-sized data structures for core" if EXPERT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001253 help
1254 Disabling this option reduces the size of miscellaneous core
1255 kernel data structures. This saves memory on small machines,
1256 but may reduce performance.
1257
1258config FUTEX
David Rientjes6a108a12011-01-20 14:44:16 -08001259 bool "Enable futex support" if EXPERT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001260 default y
Nicolas Pitrebc2eecd2017-08-01 00:31:32 -04001261 imply RT_MUTEXES
Linus Torvalds1da177e2005-04-16 15:20:36 -07001262 help
1263 Disabling this option will cause the kernel to be built without
1264 support for "fast userspace mutexes". The resulting kernel may not
1265 run glibc-based applications correctly.
1266
Nicolas Pitrebc2eecd2017-08-01 00:31:32 -04001267config FUTEX_PI
1268 bool
1269 depends on FUTEX && RT_MUTEXES
1270 default y
1271
Heiko Carstens03b8c7b2014-03-02 13:09:47 +01001272config HAVE_FUTEX_CMPXCHG
1273 bool
Josh Triplett62b4d202014-10-03 16:19:24 -07001274 depends on FUTEX
Heiko Carstens03b8c7b2014-03-02 13:09:47 +01001275 help
1276 Architectures should select this if futex_atomic_cmpxchg_inatomic()
1277 is implemented and always working. This removes a couple of runtime
1278 checks.
1279
Linus Torvalds1da177e2005-04-16 15:20:36 -07001280config EPOLL
David Rientjes6a108a12011-01-20 14:44:16 -08001281 bool "Enable eventpoll support" if EXPERT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001282 default y
Adrian Bunk448e3ce2007-07-31 00:39:10 -07001283 select ANON_INODES
Linus Torvalds1da177e2005-04-16 15:20:36 -07001284 help
1285 Disabling this option will cause the kernel to be built without
1286 support for epoll family of system calls.
1287
Davide Libenzifba2afa2007-05-10 22:23:13 -07001288config SIGNALFD
David Rientjes6a108a12011-01-20 14:44:16 -08001289 bool "Enable signalfd() system call" if EXPERT
Adrian Bunk448e3ce2007-07-31 00:39:10 -07001290 select ANON_INODES
Davide Libenzifba2afa2007-05-10 22:23:13 -07001291 default y
1292 help
1293 Enable the signalfd() system call that allows to receive signals
1294 on a file descriptor.
1295
1296 If unsure, say Y.
1297
Davide Libenzib215e282007-05-10 22:23:16 -07001298config TIMERFD
David Rientjes6a108a12011-01-20 14:44:16 -08001299 bool "Enable timerfd() system call" if EXPERT
Adrian Bunk448e3ce2007-07-31 00:39:10 -07001300 select ANON_INODES
Davide Libenzib215e282007-05-10 22:23:16 -07001301 default y
1302 help
1303 Enable the timerfd() system call that allows to receive timer
1304 events on a file descriptor.
1305
1306 If unsure, say Y.
1307
Davide Libenzie1ad7462007-05-10 22:23:19 -07001308config EVENTFD
David Rientjes6a108a12011-01-20 14:44:16 -08001309 bool "Enable eventfd() system call" if EXPERT
Adrian Bunk448e3ce2007-07-31 00:39:10 -07001310 select ANON_INODES
Davide Libenzie1ad7462007-05-10 22:23:19 -07001311 default y
1312 help
1313 Enable the eventfd() system call that allows to receive both
1314 kernel notification (ie. KAIO) or userspace notifications.
1315
1316 If unsure, say Y.
1317
Linus Torvalds1da177e2005-04-16 15:20:36 -07001318config SHMEM
David Rientjes6a108a12011-01-20 14:44:16 -08001319 bool "Use full shmem filesystem" if EXPERT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001320 default y
1321 depends on MMU
1322 help
1323 The shmem is an internal filesystem used to manage shared memory.
1324 It is backed by swap and manages resource limits. It is also exported
1325 to userspace as tmpfs if TMPFS is enabled. Disabling this
1326 option replaces shmem and tmpfs with the much simpler ramfs code,
1327 which may be appropriate on small systems without swap.
1328
Thomas Petazzoniebf3f092008-10-15 22:05:12 -07001329config AIO
David Rientjes6a108a12011-01-20 14:44:16 -08001330 bool "Enable AIO support" if EXPERT
Thomas Petazzoniebf3f092008-10-15 22:05:12 -07001331 default y
1332 help
1333 This option enables POSIX asynchronous I/O which may by used
Mike Frysinger657a5202013-04-30 15:28:45 -07001334 by some high performance threaded applications. Disabling
1335 this option saves about 7k.
1336
Josh Triplettd3ac21c2014-08-17 19:41:09 -05001337config ADVISE_SYSCALLS
1338 bool "Enable madvise/fadvise syscalls" if EXPERT
1339 default y
1340 help
1341 This option enables the madvise and fadvise syscalls, used by
1342 applications to advise the kernel about their future memory or file
1343 usage, improving performance. If building an embedded system where no
1344 applications use these syscalls, you can disable this option to save
1345 space.
1346
Mathieu Desnoyers5b25b132015-09-11 13:07:39 -07001347config MEMBARRIER
1348 bool "Enable membarrier() system call" if EXPERT
1349 default y
1350 help
1351 Enable the membarrier() system call that allows issuing memory
1352 barriers across all running threads, which can be used to distribute
1353 the cost of user-space memory barriers asymmetrically by transforming
1354 pairs of memory barriers into pairs consisting of membarrier() and a
1355 compiler barrier.
1356
1357 If unsure, say Y.
1358
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001359config CHECKPOINT_RESTORE
1360 bool "Checkpoint/restore support" if EXPERT
1361 select PROC_CHILDREN
1362 default n
1363 help
1364 Enables additional kernel features in a sake of checkpoint/restore.
1365 In particular it adds auxiliary prctl codes to setup process text,
1366 data and heap segment sizes, and a few additional /proc filesystem
1367 entries.
1368
1369 If unsure, say N here.
1370
1371config KALLSYMS
1372 bool "Load all symbols for debugging/ksymoops" if EXPERT
1373 default y
1374 help
1375 Say Y here to let the kernel print out symbolic crash information and
1376 symbolic stack backtraces. This increases the size of the kernel
1377 somewhat, as all symbols have to be loaded into the kernel image.
1378
1379config KALLSYMS_ALL
1380 bool "Include all symbols in kallsyms"
1381 depends on DEBUG_KERNEL && KALLSYMS
1382 help
1383 Normally kallsyms only contains the symbols of functions for nicer
1384 OOPS messages and backtraces (i.e., symbols from the text and inittext
1385 sections). This is sufficient for most cases. And only in very rare
1386 cases (e.g., when a debugger is used) all symbols are required (e.g.,
1387 names of variables from the data sections, etc).
1388
1389 This option makes sure that all symbols are loaded into the kernel
1390 image (i.e., symbols from all sections) in cost of increased kernel
1391 size (depending on the kernel configuration, it may be 300KiB or
1392 something like this).
1393
1394 Say N unless you really need all symbols.
1395
1396config KALLSYMS_ABSOLUTE_PERCPU
1397 bool
1398 depends on KALLSYMS
1399 default X86_64 && SMP
1400
1401config KALLSYMS_BASE_RELATIVE
1402 bool
1403 depends on KALLSYMS
Arnd Bergmanna687a532018-03-07 23:30:54 +01001404 default !IA64
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001405 help
1406 Instead of emitting them as absolute values in the native word size,
1407 emit the symbol references in the kallsyms table as 32-bit entries,
1408 each containing a relative value in the range [base, base + U32_MAX]
1409 or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either
1410 an absolute value in the range [0, S32_MAX] or a relative value in the
1411 range [base, base + S32_MAX], where base is the lowest relative symbol
1412 address encountered in the image.
1413
1414 On 64-bit builds, this reduces the size of the address table by 50%,
1415 but more importantly, it results in entries whose values are build
1416 time constants, and no relocation pass is required at runtime to fix
1417 up the entries based on the runtime load address of the kernel.
1418
1419# end of the "standard kernel features (expert users)" menu
1420
1421# syscall, maps, verifier
1422config BPF_SYSCALL
1423 bool "Enable bpf() system call"
1424 select ANON_INODES
1425 select BPF
Song Liubae77c52018-05-07 10:50:48 -07001426 select IRQ_WORK
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001427 default n
1428 help
1429 Enable the bpf() system call that allows to manipulate eBPF
1430 programs and maps via file descriptors.
1431
Alexei Starovoitov290af862018-01-09 10:04:29 -08001432config BPF_JIT_ALWAYS_ON
1433 bool "Permanently enable BPF JIT and remove BPF interpreter"
1434 depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT
1435 help
1436 Enables BPF JIT and removes BPF interpreter to avoid
1437 speculative execution of BPF instructions by the interpreter
1438
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001439config USERFAULTFD
1440 bool "Enable userfaultfd() system call"
1441 select ANON_INODES
1442 depends on MMU
1443 help
1444 Enable the userfaultfd() system call that allows to intercept and
1445 handle page faults in userland.
1446
Mathieu Desnoyers3ccfebe2018-01-29 15:20:11 -05001447config ARCH_HAS_MEMBARRIER_CALLBACKS
1448 bool
1449
Mathieu Desnoyers70216e12018-01-29 15:20:17 -05001450config ARCH_HAS_MEMBARRIER_SYNC_CORE
1451 bool
1452
Mathieu Desnoyersd7822b12018-06-02 08:43:54 -04001453config RSEQ
1454 bool "Enable rseq() system call" if EXPERT
1455 default y
1456 depends on HAVE_RSEQ
1457 select MEMBARRIER
1458 help
1459 Enable the restartable sequences system call. It provides a
1460 user-space cache for the current CPU number value, which
1461 speeds up getting the current CPU number from user-space,
1462 as well as an ABI to speed up user-space operations on
1463 per-CPU data.
1464
1465 If unsure, say Y.
1466
1467config DEBUG_RSEQ
1468 default n
1469 bool "Enabled debugging of rseq() system call" if EXPERT
1470 depends on RSEQ && DEBUG_KERNEL
1471 help
1472 Enable extra debugging checks for the rseq system call.
1473
1474 If unsure, say N.
1475
Randy Dunlap6befe5f2011-04-26 12:33:21 -07001476config EMBEDDED
1477 bool "Embedded system"
Josh Triplett5d2acfc2014-04-07 15:39:09 -07001478 option allnoconfig_y
Randy Dunlap6befe5f2011-04-26 12:33:21 -07001479 select EXPERT
1480 help
1481 This option should be enabled if compiling the kernel for
1482 an embedded system so certain expert options are available
1483 for configuration.
1484
Ingo Molnarcdd6c482009-09-21 12:02:48 +02001485config HAVE_PERF_EVENTS
Thomas Gleixner0793a612008-12-04 20:12:29 +01001486 bool
Mike Frysinger018df722009-06-12 13:17:43 -04001487 help
1488 See tools/perf/design.txt for details.
Thomas Gleixner0793a612008-12-04 20:12:29 +01001489
Peter Zijlstra906010b2009-09-21 16:08:49 +02001490config PERF_USE_VMALLOC
1491 bool
1492 help
1493 See tools/perf/design.txt for details
1494
William Breathitt Grayad90a3d2017-01-10 13:50:54 -05001495config PC104
William Breathitt Gray424529f2017-12-29 15:14:59 -05001496 bool "PC/104 support" if EXPERT
William Breathitt Grayad90a3d2017-01-10 13:50:54 -05001497 help
1498 Expose PC/104 form factor device drivers and options available for
1499 selection and configuration. Enable this option if your target
1500 machine has a PC/104 bus.
1501
Ingo Molnar57c0c152009-09-21 12:20:38 +02001502menu "Kernel Performance Events And Counters"
Thomas Gleixner0793a612008-12-04 20:12:29 +01001503
Ingo Molnarcdd6c482009-09-21 12:02:48 +02001504config PERF_EVENTS
Ingo Molnar57c0c152009-09-21 12:20:38 +02001505 bool "Kernel performance events and counters"
Robert Richter392d65a2012-04-05 18:24:44 +02001506 default y if PROFILING
Ingo Molnarcdd6c482009-09-21 12:02:48 +02001507 depends on HAVE_PERF_EVENTS
Ingo Molnar4c59e462008-12-08 19:38:33 +01001508 select ANON_INODES
Peter Zijlstrae360adb2010-10-14 14:01:34 +08001509 select IRQ_WORK
Pranith Kumar83fe27e2014-12-05 11:24:45 -05001510 select SRCU
Thomas Gleixner0793a612008-12-04 20:12:29 +01001511 help
Ingo Molnar57c0c152009-09-21 12:20:38 +02001512 Enable kernel support for various performance events provided
1513 by software and hardware.
Thomas Gleixner0793a612008-12-04 20:12:29 +01001514
Thadeu Lima de Souza Cascardodd770382009-10-30 19:32:25 -02001515 Software events are supported either built-in or via the
Ingo Molnar57c0c152009-09-21 12:20:38 +02001516 use of generic tracepoints.
1517
1518 Most modern CPUs support performance events via performance
1519 counter registers. These registers count the number of certain
Thomas Gleixner0793a612008-12-04 20:12:29 +01001520 types of hw events: such as instructions executed, cachemisses
1521 suffered, or branches mis-predicted - without slowing down the
1522 kernel or applications. These registers can also trigger interrupts
1523 when a threshold number of events have passed - and can thus be
1524 used to profile the code that runs on that CPU.
1525
Ingo Molnar57c0c152009-09-21 12:20:38 +02001526 The Linux Performance Event subsystem provides an abstraction of
Thadeu Lima de Souza Cascardodd770382009-10-30 19:32:25 -02001527 these software and hardware event capabilities, available via a
Ingo Molnar57c0c152009-09-21 12:20:38 +02001528 system call and used by the "perf" utility in tools/perf/. It
Thomas Gleixner0793a612008-12-04 20:12:29 +01001529 provides per task and per CPU counters, and it provides event
1530 capabilities on top of those.
1531
1532 Say Y if unsure.
1533
Peter Zijlstra906010b2009-09-21 16:08:49 +02001534config DEBUG_PERF_USE_VMALLOC
1535 default n
1536 bool "Debug: use vmalloc to back perf mmap() buffers"
Michael Ellermancb3071132015-05-04 16:26:39 +10001537 depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
Peter Zijlstra906010b2009-09-21 16:08:49 +02001538 select PERF_USE_VMALLOC
1539 help
1540 Use vmalloc memory to back perf mmap() buffers.
1541
1542 Mostly useful for debugging the vmalloc code on platforms
1543 that don't require it.
1544
1545 Say N if unsure.
1546
Thomas Gleixner0793a612008-12-04 20:12:29 +01001547endmenu
1548
Christoph Lameterf8891e52006-06-30 01:55:45 -07001549config VM_EVENT_COUNTERS
1550 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001551 bool "Enable VM event counters for /proc/vmstat" if EXPERT
Christoph Lameterf8891e52006-06-30 01:55:45 -07001552 help
Paul Jackson2aea4fb2006-12-22 01:06:10 -08001553 VM event counters are needed for event counts to be shown.
1554 This option allows the disabling of the VM event counters
David Rientjes6a108a12011-01-20 14:44:16 -08001555 on EXPERT systems. /proc/vmstat will only show page counts
Paul Jackson2aea4fb2006-12-22 01:06:10 -08001556 if VM event counters are disabled.
Christoph Lameterf8891e52006-06-30 01:55:45 -07001557
Christoph Lameter41ecc552007-05-09 02:32:44 -07001558config SLUB_DEBUG
1559 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001560 bool "Enable SLUB debugging support" if EXPERT
Christoph Lameterf6acb632008-04-29 16:16:06 -07001561 depends on SLUB && SYSFS
Christoph Lameter41ecc552007-05-09 02:32:44 -07001562 help
1563 SLUB has extensive debug support features. Disabling these can
1564 result in significant savings in code size. This also disables
1565 SLUB sysfs support. /sys/slab will not exist and there will be
1566 no support for cache validation etc.
1567
Tejun Heo1663f262017-02-22 15:41:39 -08001568config SLUB_MEMCG_SYSFS_ON
1569 default n
1570 bool "Enable memcg SLUB sysfs support by default" if EXPERT
1571 depends on SLUB && SYSFS && MEMCG
1572 help
1573 SLUB creates a directory under /sys/kernel/slab for each
1574 allocation cache to host info and debug files. If memory
1575 cgroup is enabled, each cache can have per memory cgroup
1576 caches. SLUB can create the same sysfs directories for these
1577 caches under /sys/kernel/slab/CACHE/cgroup but it can lead
1578 to a very high number of debug files being created. This is
1579 controlled by slub_memcg_sysfs boot parameter and this
1580 config option determines the parameter's default value.
1581
Randy Dunlapb943c462009-03-10 12:55:46 -07001582config COMPAT_BRK
1583 bool "Disable heap randomization"
1584 default y
1585 help
1586 Randomizing heap placement makes heap exploits harder, but it
1587 also breaks ancient binaries (including anything libc5 based).
1588 This option changes the bootup default to heap randomization
Matt LaPlante692105b2009-01-26 11:12:25 +01001589 disabled, and can be overridden at runtime by setting
Randy Dunlapb943c462009-03-10 12:55:46 -07001590 /proc/sys/kernel/randomize_va_space to 2.
1591
1592 On non-ancient distros (post-2000 ones) N is usually a safe choice.
1593
Christoph Lameter81819f02007-05-06 14:49:36 -07001594choice
1595 prompt "Choose SLAB allocator"
Christoph Lametera0acd822007-07-17 04:03:32 -07001596 default SLUB
Christoph Lameter81819f02007-05-06 14:49:36 -07001597 help
1598 This option allows to select a slab allocator.
1599
1600config SLAB
1601 bool "SLAB"
Kees Cook04385fc2016-06-23 15:20:59 -07001602 select HAVE_HARDENED_USERCOPY_ALLOCATOR
Christoph Lameter81819f02007-05-06 14:49:36 -07001603 help
1604 The regular slab allocator that is established and known to work
Christoph Lameter34013882007-05-09 02:32:47 -07001605 well in all environments. It organizes cache hot objects in
Simon Arlott02f56212008-11-05 22:18:19 +00001606 per cpu and per node queues.
Christoph Lameter81819f02007-05-06 14:49:36 -07001607
1608config SLUB
Christoph Lameter81819f02007-05-06 14:49:36 -07001609 bool "SLUB (Unqueued Allocator)"
Kees Cooked18adc2016-06-23 15:24:05 -07001610 select HAVE_HARDENED_USERCOPY_ALLOCATOR
Christoph Lameter81819f02007-05-06 14:49:36 -07001611 help
1612 SLUB is a slab allocator that minimizes cache line usage
1613 instead of managing queues of cached objects (SLAB approach).
1614 Per cpu caching is realized using slabs of objects instead
1615 of queues of objects. SLUB can use memory efficiently
Simon Arlott02f56212008-11-05 22:18:19 +00001616 and has enhanced diagnostics. SLUB is the default choice for
1617 a slab allocator.
Christoph Lameter81819f02007-05-06 14:49:36 -07001618
1619config SLOB
David Rientjes6a108a12011-01-20 14:44:16 -08001620 depends on EXPERT
Christoph Lameter81819f02007-05-06 14:49:36 -07001621 bool "SLOB (Simple Allocator)"
1622 help
Matt Mackall37291452008-02-04 22:29:38 -08001623 SLOB replaces the stock allocator with a drastically simpler
1624 allocator. SLOB is generally more space efficient but
1625 does not perform as well on large systems.
Christoph Lameter81819f02007-05-06 14:49:36 -07001626
1627endchoice
1628
Kees Cook7660a6f2017-07-06 15:36:40 -07001629config SLAB_MERGE_DEFAULT
1630 bool "Allow slab caches to be merged"
1631 default y
1632 help
1633 For reduced kernel memory fragmentation, slab caches can be
1634 merged when they share the same size and other characteristics.
1635 This carries a risk of kernel heap overflows being able to
1636 overwrite objects from merged caches (and more easily control
1637 cache layout), which makes such heap attacks easier to exploit
1638 by attackers. By keeping caches unmerged, these kinds of exploits
1639 can usually only damage objects in the same cache. To disable
1640 merging at runtime, "slab_nomerge" can be passed on the kernel
1641 command line.
1642
Thomas Garnierc7ce4f602016-05-19 17:10:37 -07001643config SLAB_FREELIST_RANDOM
1644 default n
Thomas Garnier210e7a42016-07-26 15:21:59 -07001645 depends on SLAB || SLUB
Thomas Garnierc7ce4f602016-05-19 17:10:37 -07001646 bool "SLAB freelist randomization"
1647 help
Thomas Garnier210e7a42016-07-26 15:21:59 -07001648 Randomizes the freelist order used on creating new pages. This
Thomas Garnierc7ce4f602016-05-19 17:10:37 -07001649 security feature reduces the predictability of the kernel slab
1650 allocator against heap overflows.
1651
Kees Cook2482ddec2017-09-06 16:19:18 -07001652config SLAB_FREELIST_HARDENED
1653 bool "Harden slab freelist metadata"
1654 depends on SLUB
1655 help
1656 Many kernel heap attacks try to target slab cache metadata and
1657 other infrastructure. This options makes minor performance
1658 sacrifies to harden the kernel slab allocator against common
1659 freelist exploit methods.
1660
Joonsoo Kim345c9052013-06-19 14:05:52 +09001661config SLUB_CPU_PARTIAL
1662 default y
Uwe Kleine-Königb39ffbf2013-07-17 16:54:59 +02001663 depends on SLUB && SMP
Joonsoo Kim345c9052013-06-19 14:05:52 +09001664 bool "SLUB per cpu partial cache"
1665 help
1666 Per cpu partial caches accellerate objects allocation and freeing
1667 that is local to a processor at the price of more indeterminism
1668 in the latency of the free. On overflow these caches will be cleared
1669 which requires the taking of locks that may cause latency spikes.
1670 Typically one would choose no for a realtime system.
1671
Jie Zhangea637632009-12-14 18:00:02 -08001672config MMAP_ALLOW_UNINITIALIZED
1673 bool "Allow mmapped anonymous memory to be uninitialized"
David Rientjes6a108a12011-01-20 14:44:16 -08001674 depends on EXPERT && !MMU
Jie Zhangea637632009-12-14 18:00:02 -08001675 default n
1676 help
1677 Normally, and according to the Linux spec, anonymous memory obtained
1678 from mmap() has it's contents cleared before it is passed to
1679 userspace. Enabling this config option allows you to request that
1680 mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1681 providing a huge performance boost. If this option is not enabled,
1682 then the flag will be ignored.
1683
1684 This is taken advantage of by uClibc's malloc(), and also by
1685 ELF-FDPIC binfmt's brk and stack allocator.
1686
1687 Because of the obvious security issues, this option should only be
1688 enabled on embedded devices where you control what is run in
1689 userspace. Since that isn't generally a problem on no-MMU systems,
1690 it is normally safe to say Y here.
1691
1692 See Documentation/nommu-mmap.txt for more information.
1693
David Howells091f6e22015-07-20 21:16:28 +01001694config SYSTEM_DATA_VERIFICATION
1695 def_bool n
1696 select SYSTEM_TRUSTED_KEYRING
1697 select KEYS
1698 select CRYPTO
David Howellsd43de6c2016-03-03 21:49:27 +00001699 select CRYPTO_RSA
David Howells091f6e22015-07-20 21:16:28 +01001700 select ASYMMETRIC_KEY_TYPE
1701 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
David Howells091f6e22015-07-20 21:16:28 +01001702 select ASN1
1703 select OID_REGISTRY
1704 select X509_CERTIFICATE_PARSER
1705 select PKCS7_MESSAGE_PARSER
Peter Foley82c04ff2014-04-18 15:07:11 -07001706 help
David Howells091f6e22015-07-20 21:16:28 +01001707 Provide PKCS#7 message verification using the contents of the system
1708 trusted keyring to provide public keys. This then can be used for
1709 module verification, kexec image verification and firmware blob
1710 verification.
Peter Foley82c04ff2014-04-18 15:07:11 -07001711
Mathieu Desnoyers125e5642008-02-02 15:10:36 -05001712config PROFILING
Robert Richterb309a292010-02-26 15:01:23 +01001713 bool "Profiling support"
Mathieu Desnoyers125e5642008-02-02 15:10:36 -05001714 help
1715 Say Y here to enable the extended profiling support mechanisms used
1716 by profilers such as OProfile.
1717
Ingo Molnar5f87f112008-07-23 14:15:22 +02001718#
1719# Place an empty function call at each tracepoint site. Can be
1720# dynamically changed for a probe function.
1721#
Mathieu Desnoyers97e1c182008-07-18 12:16:16 -04001722config TRACEPOINTS
Ingo Molnar5f87f112008-07-23 14:15:22 +02001723 bool
Mathieu Desnoyers97e1c182008-07-18 12:16:16 -04001724
Linus Torvalds1da177e2005-04-16 15:20:36 -07001725endmenu # General setup
1726
Christoph Hellwig15724972018-07-31 13:39:30 +02001727source "arch/Kconfig"
1728
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001729config RT_MUTEXES
Christoph Jaeger6341e622014-12-20 15:41:11 -05001730 bool
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001731
Linus Torvalds1da177e2005-04-16 15:20:36 -07001732config BASE_SMALL
1733 int
1734 default 0 if BASE_FULL
1735 default 1 if !BASE_FULL
1736
Jan Engelhardt66da5732007-07-15 23:39:29 -07001737menuconfig MODULES
Linus Torvalds1da177e2005-04-16 15:20:36 -07001738 bool "Enable loadable module support"
Yann E. MORIN11097a02013-08-11 16:07:50 +02001739 option modules
Linus Torvalds1da177e2005-04-16 15:20:36 -07001740 help
1741 Kernel modules are small pieces of compiled code which can
1742 be inserted in the running kernel, rather than being
1743 permanently built into the kernel. You use the "modprobe"
1744 tool to add (and sometimes remove) them. If you say Y here,
1745 many parts of the kernel can be built as modules (by
1746 answering M instead of Y where indicated): this is most
1747 useful for infrequently used options which are not required
1748 for booting. For more information, see the man pages for
1749 modprobe, lsmod, modinfo, insmod and rmmod.
1750
1751 If you say Y here, you will need to run "make
1752 modules_install" to put the modules under /lib/modules/
1753 where modprobe can find them (you may need to be root to do
1754 this).
1755
1756 If unsure, say Y.
1757
Robert P. J. Day0b0de142008-08-04 13:31:32 -04001758if MODULES
1759
Linus Torvalds826e4502008-05-04 17:04:16 -07001760config MODULE_FORCE_LOAD
1761 bool "Forced module loading"
Linus Torvalds826e4502008-05-04 17:04:16 -07001762 default n
1763 help
Rusty Russell91e37a72008-05-09 16:25:28 +10001764 Allow loading of modules without version information (ie. modprobe
1765 --force). Forced module loading sets the 'F' (forced) taint flag and
1766 is usually a really bad idea.
Linus Torvalds826e4502008-05-04 17:04:16 -07001767
Linus Torvalds1da177e2005-04-16 15:20:36 -07001768config MODULE_UNLOAD
1769 bool "Module unloading"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001770 help
1771 Without this option you will not be able to unload any
1772 modules (note that some modules may not be unloadable
Denys Vlasenkof7f5b672008-07-22 19:24:26 -05001773 anyway), which makes your kernel smaller, faster
1774 and simpler. If unsure, say Y.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001775
1776config MODULE_FORCE_UNLOAD
1777 bool "Forced module unloading"
Kees Cook19c92392012-10-02 11:19:29 -07001778 depends on MODULE_UNLOAD
Linus Torvalds1da177e2005-04-16 15:20:36 -07001779 help
1780 This option allows you to force a module to unload, even if the
1781 kernel believes it is unsafe: the kernel will remove the module
1782 without waiting for anyone to stop using it (using the -f option to
1783 rmmod). This is mainly for kernel developers and desperate users.
1784 If unsure, say N.
1785
Linus Torvalds1da177e2005-04-16 15:20:36 -07001786config MODVERSIONS
Sam Ravnborg0d541642005-12-26 23:04:02 +01001787 bool "Module versioning support"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001788 help
1789 Usually, you have to use modules compiled with your kernel.
1790 Saying Y here makes it sometimes possible to use modules
1791 compiled for different kernels, by adding enough information
1792 to the modules to (hopefully) spot any changes which would
1793 make them incompatible with the kernel you are running. If
1794 unsure, say N.
1795
Ard Biesheuvel56067812017-02-03 09:54:05 +00001796config MODULE_REL_CRCS
1797 bool
1798 depends on MODVERSIONS
1799
Linus Torvalds1da177e2005-04-16 15:20:36 -07001800config MODULE_SRCVERSION_ALL
1801 bool "Source checksum for all modules"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001802 help
1803 Modules which contain a MODULE_VERSION get an extra "srcversion"
1804 field inserted into their modinfo section, which contains a
1805 sum of the source files which made it. This helps maintainers
1806 see exactly which source was used to build a module (since
1807 others sometimes change the module source without updating
1808 the version). With this option, such a "srcversion" field
1809 will be created for all modules. If unsure, say N.
1810
Rusty Russell106a4ee2012-09-26 10:09:40 +01001811config MODULE_SIG
1812 bool "Module signature verification"
1813 depends on MODULES
David Howells091f6e22015-07-20 21:16:28 +01001814 select SYSTEM_DATA_VERIFICATION
Rusty Russell106a4ee2012-09-26 10:09:40 +01001815 help
1816 Check modules for valid signatures upon load: the signature
1817 is simply appended to the module. For more information see
Nathan Chancellorcbdc8212017-09-10 02:48:29 -07001818 <file:Documentation/admin-guide/module-signing.rst>.
Rusty Russell106a4ee2012-09-26 10:09:40 +01001819
David Howells228c37f2015-08-11 12:38:54 +01001820 Note that this option adds the OpenSSL development packages as a
1821 kernel build dependency so that the signing tool can use its crypto
1822 library.
1823
David Howellsea0b6dc2012-09-26 10:09:50 +01001824 !!!WARNING!!! If you enable this option, you MUST make sure that the
1825 module DOES NOT get stripped after being signed. This includes the
1826 debuginfo strip done by some packagers (such as rpmbuild) and
1827 inclusion into an initramfs that wants the module size reduced.
1828
Rusty Russell106a4ee2012-09-26 10:09:40 +01001829config MODULE_SIG_FORCE
1830 bool "Require modules to be validly signed"
1831 depends on MODULE_SIG
1832 help
1833 Reject unsigned modules or signed modules for which we don't have a
1834 key. Without this, such modules will simply taint the kernel.
David Howellsea0b6dc2012-09-26 10:09:50 +01001835
Michal Marekd9d8d7e2013-01-25 13:41:31 +10301836config MODULE_SIG_ALL
1837 bool "Automatically sign all modules"
1838 default y
1839 depends on MODULE_SIG
1840 help
1841 Sign all modules during make modules_install. Without this option,
1842 modules must be signed manually, using the scripts/sign-file tool.
1843
1844comment "Do not forget to sign required modules with scripts/sign-file"
1845 depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
1846
David Howellsea0b6dc2012-09-26 10:09:50 +01001847choice
1848 prompt "Which hash algorithm should modules be signed with?"
1849 depends on MODULE_SIG
1850 help
1851 This determines which sort of hashing algorithm will be used during
1852 signature generation. This algorithm _must_ be built into the kernel
1853 directly so that signature verification can take place. It is not
1854 possible to load a signed module containing the algorithm to check
1855 the signature on that module.
1856
1857config MODULE_SIG_SHA1
1858 bool "Sign modules with SHA-1"
1859 select CRYPTO_SHA1
1860
1861config MODULE_SIG_SHA224
1862 bool "Sign modules with SHA-224"
1863 select CRYPTO_SHA256
1864
1865config MODULE_SIG_SHA256
1866 bool "Sign modules with SHA-256"
1867 select CRYPTO_SHA256
1868
1869config MODULE_SIG_SHA384
1870 bool "Sign modules with SHA-384"
1871 select CRYPTO_SHA512
1872
1873config MODULE_SIG_SHA512
1874 bool "Sign modules with SHA-512"
1875 select CRYPTO_SHA512
1876
1877endchoice
1878
Michal Marek22753672013-01-25 13:41:00 +10301879config MODULE_SIG_HASH
1880 string
1881 depends on MODULE_SIG
1882 default "sha1" if MODULE_SIG_SHA1
1883 default "sha224" if MODULE_SIG_SHA224
1884 default "sha256" if MODULE_SIG_SHA256
1885 default "sha384" if MODULE_SIG_SHA384
1886 default "sha512" if MODULE_SIG_SHA512
1887
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09301888config MODULE_COMPRESS
1889 bool "Compress modules on installation"
1890 depends on MODULES
1891 help
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09301892
Rusty Russellb6c09b52015-06-16 12:16:22 +09301893 Compresses kernel modules when 'make modules_install' is run; gzip or
1894 xz depending on "Compression algorithm" below.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09301895
Rusty Russellb6c09b52015-06-16 12:16:22 +09301896 module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09301897
Rusty Russellb6c09b52015-06-16 12:16:22 +09301898 Out-of-tree kernel modules installed using Kbuild will also be
1899 compressed upon installation.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09301900
Rusty Russellb6c09b52015-06-16 12:16:22 +09301901 Note: for modules inside an initrd or initramfs, it's more efficient
1902 to compress the whole initrd or initramfs instead.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09301903
Rusty Russellb6c09b52015-06-16 12:16:22 +09301904 Note: This is fully compatible with signed modules.
1905
1906 If in doubt, say N.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09301907
1908choice
1909 prompt "Compression algorithm"
1910 depends on MODULE_COMPRESS
1911 default MODULE_COMPRESS_GZIP
1912 help
1913 This determines which sort of compression will be used during
1914 'make modules_install'.
1915
1916 GZIP (default) and XZ are supported.
1917
1918config MODULE_COMPRESS_GZIP
1919 bool "GZIP"
1920
1921config MODULE_COMPRESS_XZ
1922 bool "XZ"
1923
1924endchoice
1925
Nicolas Pitredbacb0e2016-01-26 21:51:05 -05001926config TRIM_UNUSED_KSYMS
1927 bool "Trim unused exported kernel symbols"
1928 depends on MODULES && !UNUSED_SYMBOLS
1929 help
1930 The kernel and some modules make many symbols available for
1931 other modules to use via EXPORT_SYMBOL() and variants. Depending
1932 on the set of modules being selected in your kernel configuration,
1933 many of those exported symbols might never be used.
1934
1935 This option allows for unused exported symbols to be dropped from
1936 the build. In turn, this provides the compiler more opportunities
1937 (especially when using LTO) for optimizing the code and reducing
1938 binary size. This might have some security advantages as well.
1939
Valdis Kletnieksf1cb6372016-08-02 14:07:27 -07001940 If unsure, or if you need to build out-of-tree modules, say N.
Nicolas Pitredbacb0e2016-01-26 21:51:05 -05001941
Robert P. J. Day0b0de142008-08-04 13:31:32 -04001942endif # MODULES
1943
Peter Zijlstra6c9692e2015-05-27 11:09:37 +09301944config MODULES_TREE_LOOKUP
1945 def_bool y
1946 depends on PERF_EVENTS || TRACING
1947
Rusty Russell98a79d62008-12-13 21:19:41 +10301948config INIT_ALL_POSSIBLE
1949 bool
1950 help
Rusty Russell5f054e32012-03-29 15:38:31 +10301951 Back when each arch used to define their own cpu_online_mask and
1952 cpu_possible_mask, some of them chose to initialize cpu_possible_mask
Rusty Russell98a79d62008-12-13 21:19:41 +10301953 with all 1s, and others with all 0s. When they were centralised,
1954 it was better to provide this option than to break all the archs
Matt LaPlante692105b2009-01-26 11:12:25 +01001955 and have several arch maintainers pursuing me down dark alleys.
Rusty Russell98a79d62008-12-13 21:19:41 +10301956
Jens Axboe3a65dfe2005-11-04 08:43:35 +01001957source "block/Kconfig"
Avi Kivitye98c3202007-10-16 23:27:31 -07001958
1959config PREEMPT_NOTIFIERS
1960 bool
Paul E. McKenneye260be62008-01-25 21:08:24 +01001961
Steffen Klassert16295be2010-01-06 19:47:10 +11001962config PADATA
1963 depends on SMP
1964 bool
1965
David Howells4520c6a2012-09-21 23:31:13 +01001966config ASN1
1967 tristate
1968 help
1969 Build a simple ASN.1 grammar compiler that produces a bytecode output
1970 that can be interpreted by the ASN.1 stream decoder and used to
1971 inform it as to what tags are to be expected in a stream and what
1972 functions to call on what tags.
1973
Thomas Gleixner6beb0002009-11-09 15:21:34 +00001974source "kernel/Kconfig.locks"
Mathieu Desnoyerse61938a2018-01-29 15:20:15 -05001975
1976config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
1977 bool
Dominik Brodowski1bd21c62018-04-05 11:53:01 +02001978
1979# It may be useful for an architecture to override the definitions of the
Dominik Brodowski7303e302018-04-05 11:53:03 +02001980# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h>
1981# and the COMPAT_ variants in <linux/compat.h>, in particular to use a
1982# different calling convention for syscalls. They can also override the
1983# macros for not-implemented syscalls in kernel/sys_ni.c and
1984# kernel/time/posix-stubs.c. All these overrides need to be available in
1985# <asm/syscall_wrapper.h>.
Dominik Brodowski1bd21c62018-04-05 11:53:01 +02001986config ARCH_HAS_SYSCALL_WRAPPER
1987 def_bool n