blob: b2ce83c2e84c5dfd4c402864c26973760376b59e [file] [log] [blame]
Thomas Gleixnerec8f24b2019-05-19 13:07:45 +01001# SPDX-License-Identifier: GPL-2.0-only
Roman Zippelface4372006-06-08 22:12:45 -07002config DEFCONFIG_LIST
3 string
Paolo 'Blaisorblade' Giarrussob2670eac2006-10-19 23:28:23 -07004 depends on !UML
Roman Zippelface4372006-06-08 22:12:45 -07005 option defconfig_list
Rob Landley47f38ae2018-08-08 13:06:43 +09006 default "/lib/modules/$(shell,uname -r)/.config"
Roman Zippelface4372006-06-08 22:12:45 -07007 default "/etc/kernel-config"
Rob Landley47f38ae2018-08-08 13:06:43 +09008 default "/boot/config-$(shell,uname -r)"
Masahiro Yamada2a86f662020-02-28 12:46:40 +09009 default "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)"
Roman Zippelface4372006-06-08 22:12:45 -070010
Masahiro Yamada8b59cd82020-04-23 23:23:52 +090011config CC_VERSION_TEXT
12 string
13 default "$(CC_VERSION_TEXT)"
14 help
15 This is used in unclear ways:
16
17 - Re-run Kconfig when the compiler is updated
18 The 'default' property references the environment variable,
19 CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd.
20 When the compiler is updated, Kconfig will be invoked.
21
22 - Ensure full rebuild when the compier is updated
23 include/linux/kconfig.h contains this option in the comment line so
24 fixdep adds include/config/cc/version/text.h into the auto-generated
25 dependency. When the compiler is updated, syncconfig will touch it
26 and then every file will be rebuilt.
27
Masahiro Yamadaa4353892018-05-28 18:22:01 +090028config CC_IS_GCC
Masahiro Yamadae33ae3e2020-04-23 23:23:51 +090029 def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc)
Masahiro Yamadaa4353892018-05-28 18:22:01 +090030
31config GCC_VERSION
32 int
Masahiro Yamadafa7295a2019-03-01 16:10:22 +090033 default $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) if CC_IS_GCC
Masahiro Yamadaa4353892018-05-28 18:22:01 +090034 default 0
35
Amit Daniel Kachhap9553d162020-03-30 17:11:38 +053036config LD_VERSION
37 int
38 default $(shell,$(LD) --version | $(srctree)/scripts/ld-version.sh)
39
Masahiro Yamada469cb732018-05-28 18:22:02 +090040config CC_IS_CLANG
Masahiro Yamadae33ae3e2020-04-23 23:23:51 +090041 def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q clang)
Masahiro Yamada469cb732018-05-28 18:22:02 +090042
43config CLANG_VERSION
44 int
45 default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
46
Masahiro Yamada1a927fd2019-07-01 09:58:39 +090047config CC_CAN_LINK
Masahiro Yamada9371f862020-04-29 12:45:13 +090048 bool
49 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(m64-flag)) if 64BIT
50 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(m32-flag))
Masahiro Yamada1a927fd2019-07-01 09:58:39 +090051
Masahiro Yamadae9666d12018-12-31 00:14:15 +090052config CC_HAS_ASM_GOTO
53 def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC))
54
Peter Collingbourne5cf896f2019-07-31 18:18:42 -070055config TOOLS_SUPPORT_RELR
Will Deacon2d122942019-08-20 10:11:54 +010056 def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh)
Peter Collingbourne5cf896f2019-07-31 18:18:42 -070057
Rasmus Villemoeseb111862019-09-13 00:19:25 +020058config CC_HAS_ASM_INLINE
59 def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
60
Peter Oberparleiterb99b87f2009-06-17 16:28:03 -070061config CONSTRUCTORS
62 bool
Johannes Berg87c93662019-12-04 17:43:46 +010063 depends on !UML
Peter Oberparleiterb99b87f2009-06-17 16:28:03 -070064
Peter Zijlstrae360adb2010-10-14 14:01:34 +080065config IRQ_WORK
66 bool
Peter Zijlstrae360adb2010-10-14 14:01:34 +080067
Shile Zhang10916702019-12-04 08:46:31 +080068config BUILDTIME_TABLE_SORT
David Daney1dbdc6f2012-04-19 14:59:57 -070069 bool
70
Andy Lutomirskic65eacb2016-09-13 14:29:24 -070071config THREAD_INFO_IN_TASK
72 bool
73 help
74 Select this to move thread_info off the stack into task_struct. To
75 make this work, an arch will need to remove all thread_info fields
76 except flags and fix any runtime bugs.
77
Andy Lutomirskic6c314a2016-09-15 22:45:43 -070078 One subtle change that will be needed is to use try_get_task_stack()
79 and put_task_stack() in save_thread_stack_tsk() and get_wchan().
80
Al Boldiff0cfc62007-07-31 00:39:23 -070081menu "General setup"
Linus Torvalds1da177e2005-04-16 15:20:36 -070082
Linus Torvalds1da177e2005-04-16 15:20:36 -070083config BROKEN
84 bool
Linus Torvalds1da177e2005-04-16 15:20:36 -070085
86config BROKEN_ON_SMP
87 bool
88 depends on BROKEN || !SMP
89 default y
90
Linus Torvalds1da177e2005-04-16 15:20:36 -070091config INIT_ENV_ARG_LIMIT
92 int
Adrian Bunkdd673bc2006-06-30 01:55:51 -070093 default 32 if !UML
94 default 128 if UML
Linus Torvalds1da177e2005-04-16 15:20:36 -070095 help
Randy Dunlap34ad92c2005-10-30 15:01:46 -080096 Maximum of each of the number of arguments and environment
97 variables passed to init from the kernel command line.
Linus Torvalds1da177e2005-04-16 15:20:36 -070098
Jiri Slaby4bb16672013-05-22 10:56:24 +020099config COMPILE_TEST
100 bool "Compile also drivers which will not load"
Richard Weinbergerbc083a62016-08-02 14:03:27 -0700101 depends on !UML
Jiri Slaby4bb16672013-05-22 10:56:24 +0200102 default n
103 help
104 Some drivers can be compiled on a different platform than they are
105 intended to be run on. Despite they cannot be loaded there (or even
106 when they load they cannot be used due to missing HW support),
107 developers still, opposing to distributors, might want to build such
108 drivers to compile-test them.
109
110 If you are a developer and want to build everything available, say Y
111 here. If you are a user/distributor, say N here to exclude useless
112 drivers to be distributed.
113
Masahiro Yamadad6fc9fc2019-07-01 09:58:40 +0900114config UAPI_HEADER_TEST
115 bool "Compile test UAPI headers"
Masahiro Yamadafcbb8462019-11-07 16:14:40 +0900116 depends on HEADERS_INSTALL && CC_CAN_LINK
Masahiro Yamadad6fc9fc2019-07-01 09:58:40 +0900117 help
118 Compile test headers exported to user-space to ensure they are
119 self-contained, i.e. compilable as standalone units.
120
121 If you are a developer or tester and want to ensure the exported
122 headers are self-contained, say Y here. Otherwise, choose N.
123
Linus Torvalds1da177e2005-04-16 15:20:36 -0700124config LOCALVERSION
125 string "Local version - append to kernel release"
126 help
127 Append an extra string to the end of your kernel version.
128 This will show up when you type uname, for example.
129 The string you set here will be appended after the contents of
130 any files with a filename matching localversion* in your
131 object and source tree, in that order. Your total string can
132 be a maximum of 64 characters.
133
Ryan Andersonaaebf432005-07-31 04:57:49 -0400134config LOCALVERSION_AUTO
135 bool "Automatically append version information to the version string"
136 default y
Alexey Dobriyanac3339b2016-08-02 14:07:21 -0700137 depends on !COMPILE_TEST
Ryan Andersonaaebf432005-07-31 04:57:49 -0400138 help
139 This will try to automatically determine if the current tree is a
Robert P. J. Day6e5a5422007-05-01 23:08:11 +0200140 release tree by looking for git tags that belong to the current
141 top of tree revision.
Ryan Andersonaaebf432005-07-31 04:57:49 -0400142
143 A string of the format -gxxxxxxxx will be added to the localversion
Robert P. J. Day6e5a5422007-05-01 23:08:11 +0200144 if a git-based tree is found. The string generated by this will be
Ryan Andersonaaebf432005-07-31 04:57:49 -0400145 appended after any matching localversion* files, and after the value
Robert P. J. Day6e5a5422007-05-01 23:08:11 +0200146 set in CONFIG_LOCALVERSION.
Ryan Andersonaaebf432005-07-31 04:57:49 -0400147
Robert P. J. Day6e5a5422007-05-01 23:08:11 +0200148 (The actual string used here is the first eight characters produced
149 by running the command:
150
151 $ git rev-parse --verify HEAD
152
153 which is done within the script "scripts/setlocalversion".)
Ryan Andersonaaebf432005-07-31 04:57:49 -0400154
Laura Abbott9afb7192018-07-05 17:49:37 -0700155config BUILD_SALT
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -0800156 string "Build ID Salt"
157 default ""
158 help
159 The build ID is used to link binaries and their debug info. Setting
160 this option will use the value in the calculation of the build id.
161 This is mostly useful for distributions which want to ensure the
162 build is unique between builds. It's safe to leave the default.
Laura Abbott9afb7192018-07-05 17:49:37 -0700163
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800164config HAVE_KERNEL_GZIP
165 bool
166
167config HAVE_KERNEL_BZIP2
168 bool
169
170config HAVE_KERNEL_LZMA
171 bool
172
Lasse Collin3ebe1242011-01-12 17:01:23 -0800173config HAVE_KERNEL_XZ
174 bool
175
Albin Tonnerre7dd65fe2010-01-08 14:42:42 -0800176config HAVE_KERNEL_LZO
177 bool
178
Kyungsik Leee76e1fd2013-07-08 16:01:46 -0700179config HAVE_KERNEL_LZ4
180 bool
181
Vasily Gorbikf16466a2018-06-12 21:26:35 +0200182config HAVE_KERNEL_UNCOMPRESSED
183 bool
184
Alain Knaff30d65db2009-01-04 22:46:17 +0100185choice
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800186 prompt "Kernel compression mode"
187 default KERNEL_GZIP
Vasily Gorbikf16466a2018-06-12 21:26:35 +0200188 depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_UNCOMPRESSED
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800189 help
Alain Knaff30d65db2009-01-04 22:46:17 +0100190 The linux kernel is a kind of self-extracting executable.
191 Several compression algorithms are available, which differ
192 in efficiency, compression and decompression speed.
193 Compression speed is only relevant when building a kernel.
194 Decompression speed is relevant at each boot.
195
196 If you have any problems with bzip2 or lzma compressed
197 kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
198 version of this functionality (bzip2 only), for 2.4, was
199 supplied by Christian Ludwig)
200
201 High compression options are mostly useful for users, who
202 are low on disk space (embedded systems), but for whom ram
203 size matters less.
204
205 If in doubt, select 'gzip'
206
207config KERNEL_GZIP
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800208 bool "Gzip"
209 depends on HAVE_KERNEL_GZIP
210 help
Albin Tonnerre7dd65fe2010-01-08 14:42:42 -0800211 The old and tried gzip compression. It provides a good balance
212 between compression ratio and decompression speed.
Alain Knaff30d65db2009-01-04 22:46:17 +0100213
214config KERNEL_BZIP2
215 bool "Bzip2"
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800216 depends on HAVE_KERNEL_BZIP2
Alain Knaff30d65db2009-01-04 22:46:17 +0100217 help
218 Its compression ratio and speed is intermediate.
Randy Dunlap0a4dd352012-05-31 16:26:46 -0700219 Decompression speed is slowest among the choices. The kernel
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800220 size is about 10% smaller with bzip2, in comparison to gzip.
221 Bzip2 uses a large amount of memory. For modern kernels you
222 will need at least 8MB RAM or more for booting.
Alain Knaff30d65db2009-01-04 22:46:17 +0100223
224config KERNEL_LZMA
H. Peter Anvin2e9f3bd2009-01-04 15:41:25 -0800225 bool "LZMA"
226 depends on HAVE_KERNEL_LZMA
227 help
Randy Dunlap0a4dd352012-05-31 16:26:46 -0700228 This compression algorithm's ratio is best. Decompression speed
229 is between gzip and bzip2. Compression is slowest.
230 The kernel size is about 33% smaller with LZMA in comparison to gzip.
Alain Knaff30d65db2009-01-04 22:46:17 +0100231
Lasse Collin3ebe1242011-01-12 17:01:23 -0800232config KERNEL_XZ
233 bool "XZ"
234 depends on HAVE_KERNEL_XZ
235 help
236 XZ uses the LZMA2 algorithm and instruction set specific
237 BCJ filters which can improve compression ratio of executable
238 code. The size of the kernel is about 30% smaller with XZ in
239 comparison to gzip. On architectures for which there is a BCJ
240 filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
241 will create a few percent smaller kernel than plain LZMA.
242
243 The speed is about the same as with LZMA: The decompression
244 speed of XZ is better than that of bzip2 but worse than gzip
245 and LZO. Compression is slow.
246
Albin Tonnerre7dd65fe2010-01-08 14:42:42 -0800247config KERNEL_LZO
248 bool "LZO"
249 depends on HAVE_KERNEL_LZO
250 help
Randy Dunlap0a4dd352012-05-31 16:26:46 -0700251 Its compression ratio is the poorest among the choices. The kernel
Stephan Sperber681b3042010-07-14 11:23:08 +0200252 size is about 10% bigger than gzip; however its speed
Albin Tonnerre7dd65fe2010-01-08 14:42:42 -0800253 (both compression and decompression) is the fastest.
254
Kyungsik Leee76e1fd2013-07-08 16:01:46 -0700255config KERNEL_LZ4
256 bool "LZ4"
257 depends on HAVE_KERNEL_LZ4
258 help
259 LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
260 A preliminary version of LZ4 de/compression tool is available at
261 <https://code.google.com/p/lz4/>.
262
263 Its compression ratio is worse than LZO. The size of the kernel
264 is about 8% bigger than LZO. But the decompression speed is
265 faster than LZO.
266
Vasily Gorbikf16466a2018-06-12 21:26:35 +0200267config KERNEL_UNCOMPRESSED
268 bool "None"
269 depends on HAVE_KERNEL_UNCOMPRESSED
270 help
271 Produce uncompressed kernel image. This option is usually not what
272 you want. It is useful for debugging the kernel in slow simulation
273 environments, where decompressing and moving the kernel is awfully
274 slow. This option allows early boot code to skip the decompressor
275 and jump right at uncompressed kernel image.
276
Alain Knaff30d65db2009-01-04 22:46:17 +0100277endchoice
278
Josh Triplettbd5dc172011-06-15 15:08:28 -0700279config DEFAULT_HOSTNAME
280 string "Default hostname"
281 default "(none)"
282 help
283 This option determines the default system hostname before userspace
284 calls sethostname(2). The kernel traditionally uses "(none)" here,
285 but you may wish to use a different default here to make a minimal
286 system more usable with less configuration.
287
Christoph Hellwig17c46a62018-07-31 13:39:29 +0200288#
289# For some reason microblaze and nios2 hard code SWAP=n. Hopefully we can
290# add proper SWAP support to them, in which case this can be remove.
291#
292config ARCH_NO_SWAP
293 bool
294
Linus Torvalds1da177e2005-04-16 15:20:36 -0700295config SWAP
296 bool "Support for paging of anonymous memory (swap)"
Christoph Hellwig17c46a62018-07-31 13:39:29 +0200297 depends on MMU && BLOCK && !ARCH_NO_SWAP
Linus Torvalds1da177e2005-04-16 15:20:36 -0700298 default y
299 help
300 This option allows you to choose whether you want to have support
Jesper Juhl92c35042006-01-15 02:40:08 +0100301 for so called swap devices or swap files in your kernel that are
Linus Torvalds1da177e2005-04-16 15:20:36 -0700302 used to provide more virtual memory than the actual RAM present
303 in your computer. If unsure say Y.
304
305config SYSVIPC
306 bool "System V IPC"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700307 ---help---
308 Inter Process Communication is a suite of library functions and
309 system calls which let processes (running programs) synchronize and
310 exchange information. It is generally considered to be a good thing,
311 and some programs won't run unless you say Y here. In particular, if
312 you want to run the DOS emulator dosemu under Linux (read the
313 DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
314 you'll need to say Y here.
315
316 You can find documentation about IPC with "info ipc" and also in
317 section 6.4 of the Linux Programmer's Guide, available from
318 <http://www.tldp.org/guides.html>.
319
Eric W. Biedermana5494dc2007-02-14 00:34:06 -0800320config SYSVIPC_SYSCTL
321 bool
322 depends on SYSVIPC
323 depends on SYSCTL
324 default y
325
Linus Torvalds1da177e2005-04-16 15:20:36 -0700326config POSIX_MQUEUE
327 bool "POSIX Message Queues"
Kees Cook19c92392012-10-02 11:19:29 -0700328 depends on NET
Linus Torvalds1da177e2005-04-16 15:20:36 -0700329 ---help---
330 POSIX variant of message queues is a part of IPC. In POSIX message
331 queues every message has a priority which decides about succession
332 of receiving it by a process. If you want to compile and run
333 programs written e.g. for Solaris with use of its POSIX message
Robert P. J. Dayb0e37652007-05-09 07:25:13 +0200334 queues (functions mq_*) say Y here.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700335
336 POSIX message queues are visible as a filesystem called 'mqueue'
337 and can be mounted somewhere if you want to do filesystem
338 operations on message queues.
339
340 If unsure, say Y.
341
Serge E. Hallynbdc8e5f2009-04-06 19:01:11 -0700342config POSIX_MQUEUE_SYSCTL
343 bool
344 depends on POSIX_MQUEUE
345 depends on SYSCTL
346 default y
347
Konstantin Khlebnikov226b4cc2014-06-04 16:10:50 -0700348config CROSS_MEMORY_ATTACH
349 bool "Enable process_vm_readv/writev syscalls"
350 depends on MMU
351 default y
352 help
353 Enabling this option adds the system calls process_vm_readv and
354 process_vm_writev which allow a process with the correct privileges
Geert Uytterhoevena2a368d2014-08-12 13:46:11 -0700355 to directly read from or write to another process' address space.
Konstantin Khlebnikov226b4cc2014-06-04 16:10:50 -0700356 See the man page for more details.
357
Josh Triplett69369a72014-04-03 14:48:27 -0700358config USELIB
359 bool "uselib syscall"
Riku Voipiob2113a42016-01-15 16:58:13 -0800360 def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
Josh Triplett69369a72014-04-03 14:48:27 -0700361 help
362 This option enables the uselib syscall, a system call used in the
363 dynamic linker from libc5 and earlier. glibc does not use this
364 system call. If you intend to run programs built on libc5 or
365 earlier, you may need to enable this syscall. Current systems
366 running glibc can safely disable this.
367
Linus Torvalds1da177e2005-04-16 15:20:36 -0700368config AUDIT
369 bool "Auditing support"
Chris Wright804a6a492005-05-11 10:52:45 +0100370 depends on NET
Linus Torvalds1da177e2005-04-16 15:20:36 -0700371 help
372 Enable auditing infrastructure that can be used with another
373 kernel subsystem, such as SELinux (which requires this for
Paul Moorecb74ed22016-01-13 09:18:55 -0500374 logging of avc messages output). System call auditing is included
375 on architectures which support it.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700376
AKASHI Takahiro7a017722014-02-25 18:16:24 +0900377config HAVE_ARCH_AUDITSYSCALL
378 bool
379
Linus Torvalds1da177e2005-04-16 15:20:36 -0700380config AUDITSYSCALL
Paul Moorecb74ed22016-01-13 09:18:55 -0500381 def_bool y
AKASHI Takahiro7a017722014-02-25 18:16:24 +0900382 depends on AUDIT && HAVE_ARCH_AUDITSYSCALL
Eric Paris28a3a7e2009-12-17 20:12:05 -0500383 select FSNOTIFY
Al Viro74c3cbe2007-07-22 08:04:18 -0400384
Thomas Gleixnerd9817eb2010-09-27 12:45:59 +0000385source "kernel/irq/Kconfig"
Thomas Gleixner764e0da2012-05-21 23:16:18 +0200386source "kernel/time/Kconfig"
Christoph Hellwig87a4c372018-07-31 13:39:32 +0200387source "kernel/Kconfig.preempt"
Thomas Gleixnerd9817eb2010-09-27 12:45:59 +0000388
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200389menu "CPU/Task time and stats accounting"
390
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200391config VIRT_CPU_ACCOUNTING
392 bool
393
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200394choice
395 prompt "Cputime accounting"
396 default TICK_CPU_ACCOUNTING if !PPC64
Stephen Rothwell02fc8d32013-02-08 14:19:38 +1100397 default VIRT_CPU_ACCOUNTING_NATIVE if PPC64
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200398
399# Kind of a stub config for the pure tick based cputime accounting
400config TICK_CPU_ACCOUNTING
401 bool "Simple tick based cputime accounting"
Frederic Weisbeckerc58b0df2013-04-26 15:16:31 +0200402 depends on !S390 && !NO_HZ_FULL
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200403 help
404 This is the basic tick based cputime accounting that maintains
405 statistics about user, system and idle time spent on per jiffies
406 granularity.
407
408 If unsure, say Y.
409
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200410config VIRT_CPU_ACCOUNTING_NATIVE
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200411 bool "Deterministic task and CPU time accounting"
Frederic Weisbeckerc58b0df2013-04-26 15:16:31 +0200412 depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200413 select VIRT_CPU_ACCOUNTING
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200414 help
415 Select this option to enable more accurate task and CPU time
416 accounting. This is done by reading a CPU counter on each
417 kernel entry and exit and on transitions within the kernel
418 between system, softirq and hardirq state, so there is a
419 small performance impact. In the case of s390 or IBM POWER > 5,
420 this also enables accounting of stolen time on logically-partitioned
421 systems.
422
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200423config VIRT_CPU_ACCOUNTING_GEN
424 bool "Full dynticks CPU time accounting"
Kevin Hilmanff3fb252013-09-16 15:28:19 -0700425 depends on HAVE_CONTEXT_TRACKING
Kevin Hilman554b0002013-09-16 15:28:21 -0700426 depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
Arnd Bergmann041a1572019-03-04 21:01:31 +0100427 depends on GENERIC_CLOCKEVENTS
Frederic Weisbeckerabf917c2012-07-25 07:56:04 +0200428 select VIRT_CPU_ACCOUNTING
429 select CONTEXT_TRACKING
430 help
431 Select this option to enable task and CPU time accounting on full
432 dynticks systems. This accounting is implemented by watching every
433 kernel-user boundaries using the context tracking subsystem.
434 The accounting is thus performed at the expense of some significant
435 overhead.
436
437 For now this is only useful if you are working on the full
438 dynticks subsystem development.
439
440 If unsure, say N.
441
Rik van Rielb58c3582016-07-13 16:50:02 +0200442endchoice
443
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200444config IRQ_TIME_ACCOUNTING
445 bool "Fine granularity task level IRQ time accounting"
Rik van Rielb58c3582016-07-13 16:50:02 +0200446 depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE
Frederic Weisbeckerfdf9c352012-09-09 14:56:31 +0200447 help
448 Select this option to enable fine granularity task irq time
449 accounting. This is done by reading a timestamp on each
450 transitions between softirq and hardirq state, so there can be a
451 small performance impact.
452
453 If in doubt, say N here.
454
Vincent Guittot11d4afd2018-09-25 11:17:42 +0200455config HAVE_SCHED_AVG_IRQ
456 def_bool y
457 depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING
458 depends on SMP
459
Thara Gopinath76504792020-02-21 19:52:05 -0500460config SCHED_THERMAL_PRESSURE
461 bool "Enable periodic averaging of thermal pressure"
462 depends on SMP
463
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200464config BSD_PROCESS_ACCT
465 bool "BSD Process Accounting"
Iulia Manda28138932015-04-15 16:16:41 -0700466 depends on MULTIUSER
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200467 help
468 If you say Y here, a user level program will be able to instruct the
469 kernel (via a special system call) to write process accounting
470 information to a file: whenever a process exits, information about
471 that process will be appended to the file by the kernel. The
472 information includes things such as creation time, owning user,
473 command name, memory usage, controlling terminal etc. (the complete
474 list is in the struct acct in <file:include/linux/acct.h>). It is
475 up to the user level program to do useful things with this
476 information. This is generally a good idea, so say Y.
477
478config BSD_PROCESS_ACCT_V3
479 bool "BSD Process Accounting version 3 file format"
480 depends on BSD_PROCESS_ACCT
481 default n
482 help
483 If you say Y here, the process accounting information is written
484 in a new file format that also logs the process IDs of each
Randy Dunlap3903bf92018-08-21 21:58:34 -0700485 process and its parent. Note that this file format is incompatible
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200486 with previous v0/v1/v2 file formats, so you will need updated tools
487 for processing it. A preliminary version of these tools is available
488 at <http://www.gnu.org/software/acct/>.
489
490config TASKSTATS
Kees Cook19c92392012-10-02 11:19:29 -0700491 bool "Export task/process statistics through netlink"
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200492 depends on NET
Iulia Manda28138932015-04-15 16:16:41 -0700493 depends on MULTIUSER
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200494 default n
495 help
496 Export selected statistics for tasks/processes through the
497 generic netlink interface. Unlike BSD process accounting, the
498 statistics are available during the lifetime of tasks/processes as
499 responses to commands. Like BSD accounting, they are sent to user
500 space on task exit.
501
502 Say N if unsure.
503
504config TASK_DELAY_ACCT
Kees Cook19c92392012-10-02 11:19:29 -0700505 bool "Enable per-task delay accounting"
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200506 depends on TASKSTATS
Naveen N. Raof6db8342015-06-25 23:53:37 +0530507 select SCHED_INFO
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200508 help
509 Collect information on time spent by a task waiting for system
510 resources like cpu, synchronous block I/O completion and swapping
511 in pages. Such statistics can help in setting a task's priorities
512 relative to other tasks for cpu, io, rss limits etc.
513
514 Say N if unsure.
515
516config TASK_XACCT
Kees Cook19c92392012-10-02 11:19:29 -0700517 bool "Enable extended accounting over taskstats"
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200518 depends on TASKSTATS
519 help
520 Collect extended task accounting data and send the data
521 to userland for processing over the taskstats interface.
522
523 Say N if unsure.
524
525config TASK_IO_ACCOUNTING
Kees Cook19c92392012-10-02 11:19:29 -0700526 bool "Enable per-task storage I/O accounting"
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200527 depends on TASK_XACCT
528 help
529 Collect information on the number of bytes of storage I/O which this
530 task has caused.
531
532 Say N if unsure.
533
Johannes Weinereb414682018-10-26 15:06:27 -0700534config PSI
535 bool "Pressure stall information tracking"
536 help
537 Collect metrics that indicate how overcommitted the CPU, memory,
538 and IO capacity are in the system.
539
540 If you say Y here, the kernel will create /proc/pressure/ with the
541 pressure statistics files cpu, memory, and io. These will indicate
542 the share of walltime in which some or all tasks in the system are
543 delayed due to contention of the respective resource.
544
Johannes Weiner2ce71352018-10-26 15:06:31 -0700545 In kernels with cgroup support, cgroups (cgroup2 only) will
546 have cpu.pressure, memory.pressure, and io.pressure files,
547 which aggregate pressure stalls for the grouped tasks only.
548
Mauro Carvalho Chehabc3123552019-04-17 05:46:08 -0300549 For more details see Documentation/accounting/psi.rst.
Johannes Weinereb414682018-10-26 15:06:27 -0700550
551 Say N if unsure.
552
Johannes Weinere0c27442018-11-30 14:09:58 -0800553config PSI_DEFAULT_DISABLED
554 bool "Require boot parameter to enable pressure stall information tracking"
555 default n
556 depends on PSI
557 help
558 If set, pressure stall information tracking will be disabled
Baruch Siach428a1cb2018-12-14 14:17:03 -0800559 per default but can be enabled through passing psi=1 on the
560 kernel commandline during boot.
Johannes Weinere0c27442018-11-30 14:09:58 -0800561
Johannes Weiner7b2489d2019-02-01 14:21:15 -0800562 This feature adds some code to the task wakeup and sleep
563 paths of the scheduler. The overhead is too low to affect
564 common scheduling-intense workloads in practice (such as
565 webservers, memcache), but it does show up in artificial
566 scheduler stress tests, such as hackbench.
567
568 If you are paranoid and not sure what the kernel will be
569 used for, say Y.
570
571 Say N if unsure.
572
Frederic Weisbecker391dc692012-09-09 14:22:07 +0200573endmenu # "CPU/Task time and stats accounting"
574
Frederic Weisbecker5c4991e2017-10-27 04:42:34 +0200575config CPU_ISOLATION
576 bool "CPU isolation"
Geert Uytterhoeven414a2dc2018-01-02 12:13:10 +0100577 depends on SMP || COMPILE_TEST
Frederic Weisbecker2c438382017-12-14 19:18:26 +0100578 default y
Frederic Weisbecker5c4991e2017-10-27 04:42:34 +0200579 help
580 Make sure that CPUs running critical tasks are not disturbed by
581 any source of "noise" such as unbound workqueues, timers, kthreads...
Frederic Weisbecker2c438382017-12-14 19:18:26 +0100582 Unbound jobs get offloaded to housekeeping CPUs. This is driven by
583 the "isolcpus=" boot parameter.
584
585 Say Y if unsure.
Frederic Weisbecker5c4991e2017-10-27 04:42:34 +0200586
Paul E. McKenney0af92d42017-05-17 08:43:40 -0700587source "kernel/rcu/Kconfig"
Mike Travisc903ff82009-01-15 12:28:29 -0800588
Vivek Goyalde5b56b2014-08-08 14:25:41 -0700589config BUILD_BIN2C
590 bool
591 default n
592
Linus Torvalds1da177e2005-04-16 15:20:36 -0700593config IKCONFIG
Ross Birof2443ab2006-09-30 23:27:25 -0700594 tristate "Kernel .config support"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700595 ---help---
596 This option enables the complete Linux kernel ".config" file
597 contents to be saved in the kernel. It provides documentation
598 of which kernel options are used in a running kernel or in an
599 on-disk kernel. This information can be extracted from the kernel
600 image file with the script scripts/extract-ikconfig and used as
601 input to rebuild the current kernel or to build another kernel.
602 It can also be extracted from a running kernel by reading
603 /proc/config.gz if enabled (below).
604
605config IKCONFIG_PROC
606 bool "Enable access to .config through /proc/config.gz"
607 depends on IKCONFIG && PROC_FS
608 ---help---
609 This option enables access to the kernel configuration file
610 through /proc/config.gz.
611
Joel Fernandes (Google)f7b101d2019-05-15 17:35:51 -0400612config IKHEADERS
613 tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz"
614 depends on SYSFS
Joel Fernandes (Google)43d8ce92019-04-26 15:04:29 -0400615 help
Joel Fernandes (Google)f7b101d2019-05-15 17:35:51 -0400616 This option enables access to the in-kernel headers that are generated during
617 the build process. These can be used to build eBPF tracing programs,
618 or similar programs. If you build the headers as a module, a module called
619 kheaders.ko is built which can be loaded on-demand to get access to headers.
Joel Fernandes (Google)43d8ce92019-04-26 15:04:29 -0400620
Alistair John Strachan794543a2007-05-08 00:31:15 -0700621config LOG_BUF_SHIFT
622 int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
Ingo Molnarfb39f982015-07-01 10:19:11 +0200623 range 12 25
Adrian Bunkf17a32e2008-04-29 00:58:58 -0700624 default 17
Josh Triplett361e9df2014-10-03 16:00:54 -0700625 depends on PRINTK
Alistair John Strachan794543a2007-05-08 00:31:15 -0700626 help
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700627 Select the minimal kernel log buffer size as a power of 2.
628 The final size is affected by LOG_CPU_MAX_BUF_SHIFT config
629 parameter, see below. Any higher size also might be forced
630 by "log_buf_len" boot parameter.
631
Adrian Bunkf17a32e2008-04-29 00:58:58 -0700632 Examples:
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700633 17 => 128 KB
Adrian Bunkf17a32e2008-04-29 00:58:58 -0700634 16 => 64 KB
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700635 15 => 32 KB
636 14 => 16 KB
Alistair John Strachan794543a2007-05-08 00:31:15 -0700637 13 => 8 KB
638 12 => 4 KB
639
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700640config LOG_CPU_MAX_BUF_SHIFT
641 int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"
Geert Uytterhoeven2240a312014-10-13 15:51:11 -0700642 depends on SMP
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700643 range 0 21
644 default 12 if !BASE_SMALL
645 default 0 if BASE_SMALL
Josh Triplett361e9df2014-10-03 16:00:54 -0700646 depends on PRINTK
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700647 help
648 This option allows to increase the default ring buffer size
649 according to the number of CPUs. The value defines the contribution
650 of each CPU as a power of 2. The used space is typically only few
651 lines however it might be much more when problems are reported,
652 e.g. backtraces.
653
654 The increased size means that a new buffer has to be allocated and
655 the original static one is unused. It makes sense only on systems
656 with more CPUs. Therefore this value is used only when the sum of
657 contributions is greater than the half of the default kernel ring
658 buffer as defined by LOG_BUF_SHIFT. The default values are set
659 so that more than 64 CPUs are needed to trigger the allocation.
660
661 Also this option is ignored when "log_buf_len" kernel parameter is
662 used as it forces an exact (power of two) size of the ring buffer.
663
664 The number of possible CPUs is used for this computation ignoring
Geert Uytterhoeven5e0d8d52016-06-05 10:47:02 +0200665 hotplugging making the computation optimal for the worst case
666 scenario while allowing a simple algorithm to be used from bootup.
Luis R. Rodriguez23b28992014-08-06 16:08:56 -0700667
668 Examples shift values and their meaning:
669 17 => 128 KB for each CPU
670 16 => 64 KB for each CPU
671 15 => 32 KB for each CPU
672 14 => 16 KB for each CPU
673 13 => 8 KB for each CPU
674 12 => 4 KB for each CPU
675
Sergey Senozhatskyf92bac32016-12-27 23:16:05 +0900676config PRINTK_SAFE_LOG_BUF_SHIFT
677 int "Temporary per-CPU printk log buffer size (12 => 4KB, 13 => 8KB)"
Petr Mladek427934b2016-05-20 17:00:39 -0700678 range 10 21
679 default 13
Sergey Senozhatskyf92bac32016-12-27 23:16:05 +0900680 depends on PRINTK
Petr Mladek427934b2016-05-20 17:00:39 -0700681 help
Sergey Senozhatskyf92bac32016-12-27 23:16:05 +0900682 Select the size of an alternate printk per-CPU buffer where messages
683 printed from usafe contexts are temporary stored. One example would
684 be NMI messages, another one - printk recursion. The messages are
685 copied to the main log buffer in a safe context to avoid a deadlock.
686 The value defines the size as a power of 2.
Petr Mladek427934b2016-05-20 17:00:39 -0700687
Sergey Senozhatskyf92bac32016-12-27 23:16:05 +0900688 Those messages are rare and limited. The largest one is when
Petr Mladek427934b2016-05-20 17:00:39 -0700689 a backtrace is printed. It usually fits into 4KB. Select
690 8KB if you want to be on the safe side.
691
692 Examples:
693 17 => 128 KB for each CPU
694 16 => 64 KB for each CPU
695 15 => 32 KB for each CPU
696 14 => 16 KB for each CPU
697 13 => 8 KB for each CPU
698 12 => 4 KB for each CPU
699
KAMEZAWA Hiroyuki5cdc38f2009-01-07 18:07:30 -0800700#
701# Architectures with an unreliable sched_clock() should select this:
702#
703config HAVE_UNSTABLE_SCHED_CLOCK
704 bool
705
Stephen Boyd38ff87f2013-06-01 23:39:40 -0700706config GENERIC_SCHED_CLOCK
707 bool
708
Patrick Bellasi69842cb2019-06-21 09:42:02 +0100709menu "Scheduler features"
710
711config UCLAMP_TASK
712 bool "Enable utilization clamping for RT/FAIR tasks"
713 depends on CPU_FREQ_GOV_SCHEDUTIL
714 help
715 This feature enables the scheduler to track the clamped utilization
716 of each CPU based on RUNNABLE tasks scheduled on that CPU.
717
718 With this option, the user can specify the min and max CPU
719 utilization allowed for RUNNABLE tasks. The max utilization defines
720 the maximum frequency a task should use while the min utilization
721 defines the minimum frequency it should use.
722
723 Both min and max utilization clamp values are hints to the scheduler,
724 aiming at improving its frequency selection policy, but they do not
725 enforce or grant any specific bandwidth for tasks.
726
727 If in doubt, say N.
728
729config UCLAMP_BUCKETS_COUNT
730 int "Number of supported utilization clamp buckets"
731 range 5 20
732 default 5
733 depends on UCLAMP_TASK
734 help
735 Defines the number of clamp buckets to use. The range of each bucket
736 will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the
737 number of clamp buckets the finer their granularity and the higher
738 the precision of clamping aggregation and tracking at run-time.
739
740 For example, with the minimum configuration value we will have 5
741 clamp buckets tracking 20% utilization each. A 25% boosted tasks will
742 be refcounted in the [20..39]% bucket and will set the bucket clamp
743 effective value to 25%.
744 If a second 30% boosted task should be co-scheduled on the same CPU,
745 that task will be refcounted in the same bucket of the first task and
746 it will boost the bucket clamp effective value to 30%.
747 The clamp effective value of a bucket is reset to its nominal value
748 (20% in the example above) when there are no more tasks refcounted in
749 that bucket.
750
751 An additional boost/capping margin can be added to some tasks. In the
752 example above the 25% task will be boosted to 30% until it exits the
753 CPU. If that should be considered not acceptable on certain systems,
754 it's always possible to reduce the margin by increasing the number of
755 clamp buckets to trade off used memory for run-time tracking
756 precision.
757
758 If in doubt, use the default value.
759
760endmenu
761
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200762#
763# For architectures that want to enable the support for NUMA-affine scheduler
764# balancing logic:
765#
766config ARCH_SUPPORTS_NUMA_BALANCING
767 bool
768
Peter Zijlstrabe5e6102013-11-18 18:27:06 +0100769#
Mel Gorman72b252a2015-09-04 15:47:32 -0700770# For architectures that prefer to flush all TLBs after a number of pages
771# are unmapped instead of sending one IPI per page to flush. The architecture
772# must provide guarantees on what happens if a clean TLB cache entry is
773# written after the unmap. Details are in mm/rmap.c near the check for
774# should_defer_flush. The architecture should also consider if the full flush
775# and the refill costs are offset by the savings of sending fewer IPIs.
776config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
777 bool
778
Ard Biesheuvelc12d3362019-11-08 13:22:27 +0100779config CC_HAS_INT128
Masahiro Yamada3a7c7332020-03-10 19:12:50 +0900780 def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT
Ard Biesheuvelc12d3362019-11-08 13:22:27 +0100781
Mel Gorman72b252a2015-09-04 15:47:32 -0700782#
Peter Zijlstrabe5e6102013-11-18 18:27:06 +0100783# For architectures that know their GCC __int128 support is sound
784#
785config ARCH_SUPPORTS_INT128
786 bool
787
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200788# For architectures that (ab)use NUMA to represent different memory regions
789# all cpu-local but of different latencies, such as SuperH.
790#
791config ARCH_WANT_NUMA_VARIABLE_LOCALITY
792 bool
793
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200794config NUMA_BALANCING
795 bool "Memory placement aware NUMA scheduler"
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200796 depends on ARCH_SUPPORTS_NUMA_BALANCING
797 depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
798 depends on SMP && NUMA && MIGRATION
799 help
800 This option adds support for automatic NUMA aware memory/task placement.
801 The mechanism is quite primitive and is based on migrating memory when
Paul Gortmaker6d56a412013-08-13 11:06:50 -0400802 it has references to the node the task is running on.
Andrea Arcangelibe3a7282012-10-04 01:50:47 +0200803
804 This system will be inactive on UMA systems.
805
Aneesh Kumar K.V6f7c97e2014-12-10 15:43:37 -0800806config NUMA_BALANCING_DEFAULT_ENABLED
807 bool "Automatically enable NUMA aware memory/task placement"
808 default y
809 depends on NUMA_BALANCING
810 help
811 If set, automatic NUMA balancing will be enabled if running on a NUMA
812 machine.
813
Li Zefan23964d22009-01-15 13:50:58 -0800814menuconfig CGROUPS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500815 bool "Control Group support"
Tejun Heo2bd59d42014-02-11 11:52:49 -0500816 select KERNFS
Paul Menageddbcc7e2007-10-18 23:39:30 -0700817 help
Li Zefan23964d22009-01-15 13:50:58 -0800818 This option adds support for grouping sets of processes together, for
KAMEZAWA Hiroyuki5cdc38f2009-01-07 18:07:30 -0800819 use with process control subsystems such as Cpusets, CFS, memory
820 controls or device isolation.
821 See
Mauro Carvalho Chehabd6a3b242019-06-12 14:53:03 -0300822 - Documentation/scheduler/sched-design-CFS.rst (CFS)
Mauro Carvalho Chehabda82c922019-06-27 13:08:35 -0300823 - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation
Li Zefan45ce80f2009-01-15 13:50:59 -0800824 and resource control)
Paul Menageddbcc7e2007-10-18 23:39:30 -0700825
826 Say N if unsure.
827
Li Zefan23964d22009-01-15 13:50:58 -0800828if CGROUPS
829
Johannes Weiner3e32cb22014-12-10 15:42:31 -0800830config PAGE_COUNTER
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -0800831 bool
Johannes Weiner3e32cb22014-12-10 15:42:31 -0800832
Andrew Mortonc255a452012-07-31 16:43:02 -0700833config MEMCG
Johannes Weinera0166ec2015-12-17 17:19:56 -0500834 bool "Memory controller"
Johannes Weiner3e32cb22014-12-10 15:42:31 -0800835 select PAGE_COUNTER
Tejun Heo79bd9812013-11-22 18:20:42 -0500836 select EVENTFD
Balbir Singh00f0b822008-03-04 14:28:39 -0800837 help
Johannes Weinera0166ec2015-12-17 17:19:56 -0500838 Provides control over the memory footprint of tasks in a cgroup.
Balbir Singh00f0b822008-03-04 14:28:39 -0800839
Andrew Mortonc255a452012-07-31 16:43:02 -0700840config MEMCG_SWAP
Johannes Weinera0166ec2015-12-17 17:19:56 -0500841 bool "Swap controller"
Andrew Mortonc255a452012-07-31 16:43:02 -0700842 depends on MEMCG && SWAP
KAMEZAWA Hiroyukic0777192009-01-07 18:07:57 -0800843 help
Johannes Weinera0166ec2015-12-17 17:19:56 -0500844 Provides control over the swap space consumed by tasks in a cgroup.
845
Andrew Mortonc255a452012-07-31 16:43:02 -0700846config MEMCG_SWAP_ENABLED
Johannes Weinera0166ec2015-12-17 17:19:56 -0500847 bool "Swap controller enabled by default"
Andrew Mortonc255a452012-07-31 16:43:02 -0700848 depends on MEMCG_SWAP
Michal Hockoa42c3902010-11-24 12:57:08 -0800849 default y
850 help
851 Memory Resource Controller Swap Extension comes with its price in
852 a bigger memory consumption. General purpose distribution kernels
Jim Cromie43d547f2010-12-17 14:32:36 -0700853 which want to enable the feature but keep it disabled by default
Michal Hocko07555ac2013-08-22 16:35:46 -0700854 and let the user enable it by swapaccount=1 boot command line
Michal Hockoa42c3902010-11-24 12:57:08 -0800855 parameter should have this option unselected.
856 For those who want to have the feature enabled by default should
857 select this option (if, for some reason, they need to disable it
WANG Cong00a66d22011-07-25 17:12:12 -0700858 then swapaccount=0 does the trick).
KAMEZAWA Hiroyukic0777192009-01-07 18:07:57 -0800859
Kirill Tkhai84c07d12018-08-17 15:47:25 -0700860config MEMCG_KMEM
861 bool
862 depends on MEMCG && !SLOB
863 default y
864
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500865config BLK_CGROUP
866 bool "IO controller"
867 depends on BLOCK
Aneesh Kumar K.V2bc64a22012-07-31 16:42:12 -0700868 default n
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500869 ---help---
870 Generic block IO controller cgroup interface. This is the common
871 cgroup interface which should be used by various IO controlling
872 policies.
Aneesh Kumar K.V2bc64a22012-07-31 16:42:12 -0700873
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500874 Currently, CFQ IO scheduler uses it to recognize task groups and
875 control disk bandwidth allocation (proportional time slice allocation)
876 to such task groups. It is also used by bio throttling logic in
877 block layer to implement upper limit in IO rates on a device.
Stephane Eraniane5d13672011-02-14 11:20:01 +0200878
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500879 This option only enables generic Block IO controller infrastructure.
880 One needs to also enable actual IO controlling logic/policy. For
881 enabling proportional weight division of disk bandwidth in CFQ, set
Krzysztof Kozlowski7baf2192020-04-06 20:12:02 -0700882 CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500883 CONFIG_BLK_DEV_THROTTLING=y.
884
Mauro Carvalho Chehabda82c922019-06-27 13:08:35 -0300885 See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500886
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500887config CGROUP_WRITEBACK
888 bool
889 depends on MEMCG && BLK_CGROUP
890 default y
Stephane Eraniane5d13672011-02-14 11:20:01 +0200891
Dhaval Giani7c941432010-01-20 13:26:18 +0100892menuconfig CGROUP_SCHED
Johannes Weinera0166ec2015-12-17 17:19:56 -0500893 bool "CPU controller"
Dhaval Giani7c941432010-01-20 13:26:18 +0100894 default n
895 help
896 This feature lets CPU scheduler recognize task groups and control CPU
897 bandwidth allocation to such task groups. It uses cgroups to group
898 tasks.
899
900if CGROUP_SCHED
901config FAIR_GROUP_SCHED
902 bool "Group scheduling for SCHED_OTHER"
903 depends on CGROUP_SCHED
904 default CGROUP_SCHED
905
Paul Turnerab84d312011-07-21 09:43:28 -0700906config CFS_BANDWIDTH
907 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
Paul Turnerab84d312011-07-21 09:43:28 -0700908 depends on FAIR_GROUP_SCHED
909 default n
910 help
911 This option allows users to define CPU bandwidth rates (limits) for
912 tasks running within the fair group scheduler. Groups with no limit
913 set are considered to be unconstrained and will run with no
914 restriction.
Mauro Carvalho Chehabd6a3b242019-06-12 14:53:03 -0300915 See Documentation/scheduler/sched-bwc.rst for more information.
Paul Turnerab84d312011-07-21 09:43:28 -0700916
Dhaval Giani7c941432010-01-20 13:26:18 +0100917config RT_GROUP_SCHED
918 bool "Group scheduling for SCHED_RR/FIFO"
Dhaval Giani7c941432010-01-20 13:26:18 +0100919 depends on CGROUP_SCHED
920 default n
921 help
922 This feature lets you explicitly allocate real CPU bandwidth
Li Zefan32bd7eb2010-03-24 13:17:19 +0800923 to task groups. If enabled, it will also make it impossible to
Dhaval Giani7c941432010-01-20 13:26:18 +0100924 schedule realtime tasks for non-root users until you allocate
925 realtime bandwidth for them.
Mauro Carvalho Chehabd6a3b242019-06-12 14:53:03 -0300926 See Documentation/scheduler/sched-rt-group.rst for more information.
Dhaval Giani7c941432010-01-20 13:26:18 +0100927
928endif #CGROUP_SCHED
929
Patrick Bellasi2480c092019-08-22 14:28:06 +0100930config UCLAMP_TASK_GROUP
931 bool "Utilization clamping per group of tasks"
932 depends on CGROUP_SCHED
933 depends on UCLAMP_TASK
934 default n
935 help
936 This feature enables the scheduler to track the clamped utilization
937 of each CPU based on RUNNABLE tasks currently scheduled on that CPU.
938
939 When this option is enabled, the user can specify a min and max
940 CPU bandwidth which is allowed for each single task in a group.
941 The max bandwidth allows to clamp the maximum frequency a task
942 can use, while the min bandwidth allows to define a minimum
943 frequency a task will always use.
944
945 When task group based utilization clamping is enabled, an eventually
946 specified task-specific clamp value is constrained by the cgroup
947 specified clamp value. Both minimum and maximum task clamping cannot
948 be bigger than the corresponding clamping defined at task group level.
949
950 If in doubt, say N.
951
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500952config CGROUP_PIDS
953 bool "PIDs controller"
954 help
955 Provides enforcement of process number limits in the scope of a
956 cgroup. Any attempt to fork more processes than is allowed in the
957 cgroup will fail. PIDs are fundamentally a global resource because it
958 is fairly trivial to reach PID exhaustion before you reach even a
959 conservative kmemcg limit. As a result, it is possible to grind a
960 system to halt without being limited by other cgroup policies. The
Parav Pandit6cc578d2016-03-05 11:30:56 +0530961 PIDs controller is designed to stop this from happening.
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500962
963 It should be noted that organisational operations (such as attaching
Jonathan Neuschäfer98076832019-02-01 14:21:01 -0800964 to a cgroup hierarchy) will *not* be blocked by the PIDs controller,
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500965 since the PIDs limit only affects a process's ability to fork, not to
966 attach to a cgroup.
967
Parav Pandit39d3e752017-01-10 00:02:13 +0000968config CGROUP_RDMA
969 bool "RDMA controller"
970 help
971 Provides enforcement of RDMA resources defined by IB stack.
972 It is fairly easy for consumers to exhaust RDMA resources, which
973 can result into resource unavailability to other consumers.
974 RDMA controller is designed to stop this from happening.
975 Attaching processes with active RDMA resources to the cgroup
976 hierarchy is allowed even if can cross the hierarchy's limit.
977
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500978config CGROUP_FREEZER
979 bool "Freezer controller"
980 help
981 Provides a way to freeze and unfreeze all tasks in a
982 cgroup.
983
Johannes Weiner489c2a22016-01-20 15:02:41 -0800984 This option affects the ORIGINAL cgroup interface. The cgroup2 memory
985 controller includes important in-kernel memory consumers per default.
986
987 If you're using cgroup2, say N.
988
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500989config CGROUP_HUGETLB
990 bool "HugeTLB controller"
991 depends on HUGETLB_PAGE
992 select PAGE_COUNTER
Vivek Goyalafc24d42010-04-26 19:27:56 +0200993 default n
Johannes Weiner6bf024e2015-12-17 17:19:57 -0500994 help
995 Provides a cgroup controller for HugeTLB pages.
996 When you enable this, you can put a per cgroup limit on HugeTLB usage.
997 The limit is enforced during page fault. Since HugeTLB doesn't
998 support page reclaim, enforcing the limit at page fault time implies
999 that, the application will get SIGBUS signal if it tries to access
1000 HugeTLB pages beyond its limit. This requires the application to know
1001 beforehand how much HugeTLB pages it would require for its use. The
1002 control group is tracked in the third page lru pointer. This means
1003 that we cannot use the controller with huge page less than 3 pages.
Vivek Goyalafc24d42010-04-26 19:27:56 +02001004
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001005config CPUSETS
1006 bool "Cpuset controller"
Nicolas Pitree1d4eee2017-06-14 13:19:23 -04001007 depends on SMP
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001008 help
1009 This option will let you create and manage CPUSETs which
1010 allow dynamically partitioning a system into sets of CPUs and
1011 Memory Nodes and assigning tasks to run only within those sets.
1012 This is primarily useful on large SMP or NUMA systems.
Vivek Goyalafc24d42010-04-26 19:27:56 +02001013
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001014 Say N if unsure.
Vivek Goyalafc24d42010-04-26 19:27:56 +02001015
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001016config PROC_PID_CPUSET
1017 bool "Include legacy /proc/<pid>/cpuset file"
1018 depends on CPUSETS
Tejun Heo89e9b9e2015-05-22 17:13:36 -04001019 default y
1020
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001021config CGROUP_DEVICE
1022 bool "Device controller"
1023 help
1024 Provides a cgroup controller implementing whitelists for
1025 devices which a process in the cgroup can mknod or open.
1026
1027config CGROUP_CPUACCT
1028 bool "Simple CPU accounting controller"
1029 help
1030 Provides a simple controller for monitoring the
1031 total CPU consumed by the tasks in a cgroup.
1032
1033config CGROUP_PERF
1034 bool "Perf controller"
1035 depends on PERF_EVENTS
1036 help
1037 This option extends the perf per-cpu mode to restrict monitoring
1038 to threads which belong to the cgroup specified and run on the
Namhyung Kim6546b192020-03-25 21:45:29 +09001039 designated cpu. Or this can be used to have cgroup ID in samples
1040 so that it can monitor performance events among cgroups.
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001041
1042 Say N if unsure.
1043
Daniel Mack30070982016-11-23 16:52:26 +01001044config CGROUP_BPF
1045 bool "Support for eBPF programs attached to cgroups"
Andy Lutomirski483c4932016-12-16 08:33:45 -08001046 depends on BPF_SYSCALL
1047 select SOCK_CGROUP_DATA
Daniel Mack30070982016-11-23 16:52:26 +01001048 help
1049 Allow attaching eBPF programs to a cgroup using the bpf(2)
1050 syscall command BPF_PROG_ATTACH.
1051
1052 In which context these programs are accessed depends on the type
1053 of attachment. For instance, programs that are attached using
1054 BPF_CGROUP_INET_INGRESS will be executed on the ingress path of
1055 inet sockets.
1056
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001057config CGROUP_DEBUG
Waiman Long23b0be42017-06-13 17:18:03 -04001058 bool "Debug controller"
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001059 default n
Waiman Long23b0be42017-06-13 17:18:03 -04001060 depends on DEBUG_KERNEL
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001061 help
1062 This option enables a simple controller that exports
Waiman Long23b0be42017-06-13 17:18:03 -04001063 debugging information about the cgroups framework. This
1064 controller is for control cgroup debugging only. Its
1065 interfaces are not stable.
Johannes Weiner6bf024e2015-12-17 17:19:57 -05001066
1067 Say N.
1068
Arnd Bergmann73b35142017-01-10 13:08:06 +01001069config SOCK_CGROUP_DATA
1070 bool
1071 default n
1072
Li Zefan23964d22009-01-15 13:50:58 -08001073endif # CGROUPS
KAMEZAWA Hiroyukic0777192009-01-07 18:07:57 -08001074
Daniel Lezcano8dd2a822010-10-27 15:34:38 -07001075menuconfig NAMESPACES
David Rientjes6a108a12011-01-20 14:44:16 -08001076 bool "Namespaces support" if EXPERT
Iulia Manda28138932015-04-15 16:16:41 -07001077 depends on MULTIUSER
David Rientjes6a108a12011-01-20 14:44:16 -08001078 default !EXPERT
Pavel Emelyanovc5289a62008-02-08 04:18:19 -08001079 help
1080 Provides the way to make tasks work with different objects using
1081 the same id. For example same IPC id may refer to different objects
1082 or same user id or pid may refer to different tasks when used in
1083 different namespaces.
1084
Daniel Lezcano8dd2a822010-10-27 15:34:38 -07001085if NAMESPACES
1086
Pavel Emelyanov58bfdd6d2008-02-08 04:18:21 -08001087config UTS_NS
1088 bool "UTS namespace"
Daniel Lezcano17a6d442010-10-27 15:34:37 -07001089 default y
Pavel Emelyanov58bfdd6d2008-02-08 04:18:21 -08001090 help
1091 In this namespace tasks see different info provided with the
1092 uname() system call
1093
Andrei Vagin769071a2019-11-12 01:26:52 +00001094config TIME_NS
1095 bool "TIME namespace"
Thomas Gleixner660fd042019-11-12 01:27:09 +00001096 depends on GENERIC_VDSO_TIME_NS
Andrei Vagin769071a2019-11-12 01:26:52 +00001097 default y
1098 help
1099 In this namespace boottime and monotonic clocks can be set.
1100 The time will keep going with the same pace.
1101
Pavel Emelyanovae5e1b22008-02-08 04:18:22 -08001102config IPC_NS
1103 bool "IPC namespace"
Daniel Lezcano8dd2a822010-10-27 15:34:38 -07001104 depends on (SYSVIPC || POSIX_MQUEUE)
Daniel Lezcano17a6d442010-10-27 15:34:37 -07001105 default y
Pavel Emelyanovae5e1b22008-02-08 04:18:22 -08001106 help
1107 In this namespace tasks work with IPC ids which correspond to
Serge E. Hallyn614b84c2009-04-06 19:01:08 -07001108 different IPC objects in different namespaces.
Pavel Emelyanovae5e1b22008-02-08 04:18:22 -08001109
Pavel Emelyanovaee16ce2008-02-08 04:18:23 -08001110config USER_NS
Kees Cook19c92392012-10-02 11:19:29 -07001111 bool "User namespace"
Eric W. Biederman5673a942011-11-17 10:23:55 -08001112 default n
Pavel Emelyanovaee16ce2008-02-08 04:18:23 -08001113 help
1114 This allows containers, i.e. vservers, to use user namespaces
1115 to provide different user info for different servers.
Eric W. Biedermane11f0ae2013-01-25 16:48:31 -08001116
1117 When user namespaces are enabled in the kernel it is
Johannes Weinerd886f4e2016-01-20 15:02:47 -08001118 recommended that the MEMCG option also be enabled and that
1119 user-space use the memory control groups to limit the amount
1120 of memory a memory unprivileged users can use.
Eric W. Biedermane11f0ae2013-01-25 16:48:31 -08001121
Pavel Emelyanovaee16ce2008-02-08 04:18:23 -08001122 If unsure, say N.
1123
Pavel Emelyanov74bd59b2008-02-08 04:18:24 -08001124config PID_NS
Daniel Lezcano9bd38c22010-10-27 15:34:37 -07001125 bool "PID Namespaces"
Daniel Lezcano17a6d442010-10-27 15:34:37 -07001126 default y
Pavel Emelyanov74bd59b2008-02-08 04:18:24 -08001127 help
Heikki Orsila12d2b8f2008-07-06 15:48:02 +03001128 Support process id namespaces. This allows having multiple
Matt LaPlante692105b2009-01-26 11:12:25 +01001129 processes with the same pid as long as they are in different
Pavel Emelyanov74bd59b2008-02-08 04:18:24 -08001130 pid namespaces. This is a building block of containers.
1131
Matt Helsleyd6eb6332009-01-26 12:25:55 -08001132config NET_NS
1133 bool "Network namespace"
Daniel Lezcano8dd2a822010-10-27 15:34:38 -07001134 depends on NET
Daniel Lezcano17a6d442010-10-27 15:34:37 -07001135 default y
Matt Helsleyd6eb6332009-01-26 12:25:55 -08001136 help
1137 Allow user space to create what appear to be multiple instances
1138 of the network stack.
1139
Daniel Lezcano8dd2a822010-10-27 15:34:38 -07001140endif # NAMESPACES
1141
Adrian Reber5cb366b2018-08-21 22:01:17 -07001142config CHECKPOINT_RESTORE
1143 bool "Checkpoint/restore support"
1144 select PROC_CHILDREN
1145 default n
1146 help
1147 Enables additional kernel features in a sake of checkpoint/restore.
1148 In particular it adds auxiliary prctl codes to setup process text,
1149 data and heap segment sizes, and a few additional /proc filesystem
1150 entries.
1151
1152 If unsure, say N here.
1153
Mike Galbraith5091faa2010-11-30 14:18:03 +01001154config SCHED_AUTOGROUP
1155 bool "Automatic process group scheduling"
Mike Galbraith5091faa2010-11-30 14:18:03 +01001156 select CGROUPS
1157 select CGROUP_SCHED
1158 select FAIR_GROUP_SCHED
1159 help
1160 This option optimizes the scheduler for common desktop workloads by
1161 automatically creating and populating task groups. This separation
1162 of workloads isolates aggressive CPU burners (like build jobs) from
1163 desktop applications. Task group autogeneration is currently based
1164 upon task session.
1165
Daniel Lezcano7af37be2010-10-27 15:34:41 -07001166config SYSFS_DEPRECATED
Ferenc Wagner5d6a4ea2011-01-10 19:04:22 +01001167 bool "Enable deprecated sysfs features to support old userspace tools"
Daniel Lezcano7af37be2010-10-27 15:34:41 -07001168 depends on SYSFS
1169 default n
1170 help
1171 This option adds code that switches the layout of the "block" class
1172 devices, to not show up in /sys/class/block/, but only in
1173 /sys/block/.
1174
1175 This switch is only active when the sysfs.deprecated=1 boot option is
1176 passed or the SYSFS_DEPRECATED_V2 option is set.
1177
1178 This option allows new kernels to run on old distributions and tools,
1179 which might get confused by /sys/class/block/. Since 2007/2008 all
1180 major distributions and tools handle this just fine.
1181
1182 Recent distributions and userspace tools after 2009/2010 depend on
1183 the existence of /sys/class/block/, and will not work with this
1184 option enabled.
1185
1186 Only if you are using a new kernel on an old distribution, you might
1187 need to say Y here.
1188
1189config SYSFS_DEPRECATED_V2
Ferenc Wagner5d6a4ea2011-01-10 19:04:22 +01001190 bool "Enable deprecated sysfs features by default"
Daniel Lezcano7af37be2010-10-27 15:34:41 -07001191 default n
1192 depends on SYSFS
1193 depends on SYSFS_DEPRECATED
1194 help
1195 Enable deprecated sysfs by default.
1196
1197 See the CONFIG_SYSFS_DEPRECATED option for more details about this
1198 option.
1199
1200 Only if you are using a new kernel on an old distribution, you might
1201 need to say Y here. Even then, odds are you would not need it
1202 enabled, you can always pass the boot option if absolutely necessary.
1203
1204config RELAY
1205 bool "Kernel->user space relay support (formerly relayfs)"
Peter Zijlstra26b56792016-10-11 13:54:33 -07001206 select IRQ_WORK
Daniel Lezcano7af37be2010-10-27 15:34:41 -07001207 help
1208 This option enables support for relay interface support in
1209 certain file systems (such as debugfs).
1210 It is designed to provide an efficient mechanism for tools and
1211 facilities to relay large amounts of data from kernel space to
1212 user space.
1213
1214 If unsure, say N.
1215
Dimitri Gorokhovikf9916332007-03-06 01:42:17 -08001216config BLK_DEV_INITRD
1217 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
Dimitri Gorokhovikf9916332007-03-06 01:42:17 -08001218 help
1219 The initial RAM filesystem is a ramfs which is loaded by the
1220 boot loader (loadlin or lilo) and that is mounted as root
1221 before the normal boot procedure. It is typically used to
1222 load modules needed to mount the "real" root file system,
Mauro Carvalho Chehab8c27ceff32016-10-18 10:12:27 -02001223 etc. See <file:Documentation/admin-guide/initrd.rst> for details.
Dimitri Gorokhovikf9916332007-03-06 01:42:17 -08001224
1225 If RAM disk support (BLK_DEV_RAM) is also included, this
1226 also enables initial RAM disk (initrd) support and adds
1227 15 Kbytes (more on some other architectures) to the kernel size.
1228
1229 If unsure say Y.
1230
Jean-Paul Samanc33df4e2007-02-10 01:44:43 -08001231if BLK_DEV_INITRD
1232
Sam Ravnborgdbec4862005-08-10 20:44:50 +02001233source "usr/Kconfig"
1234
Jean-Paul Samanc33df4e2007-02-10 01:44:43 -08001235endif
1236
Masami Hiramatsu76db5a22020-01-11 01:03:32 +09001237config BOOT_CONFIG
1238 bool "Boot config support"
Masami Hiramatsu2910b5a2020-02-25 23:36:41 +09001239 select BLK_DEV_INITRD
Masami Hiramatsu76db5a22020-01-11 01:03:32 +09001240 help
1241 Extra boot config allows system admin to pass a config file as
1242 complemental extension of kernel cmdline when booting.
Masami Hiramatsu0947db02020-01-20 12:23:00 +09001243 The boot config file must be attached at the end of initramfs
Masami Hiramatsu85c46b72020-02-20 21:18:42 +09001244 with checksum, size and magic word.
Masami Hiramatsu0947db02020-01-20 12:23:00 +09001245 See <file:Documentation/admin-guide/bootconfig.rst> for details.
Masami Hiramatsu76db5a22020-01-11 01:03:32 +09001246
1247 If unsure, say Y.
1248
Arnd Bergmann877417e2016-04-25 17:35:27 +02001249choice
1250 prompt "Compiler optimization level"
Ulf Magnusson2cc3ce22017-10-04 01:53:26 +02001251 default CC_OPTIMIZE_FOR_PERFORMANCE
Arnd Bergmann877417e2016-04-25 17:35:27 +02001252
1253config CC_OPTIMIZE_FOR_PERFORMANCE
Masahiro Yamada15f5db62019-08-21 02:09:40 +09001254 bool "Optimize for performance (-O2)"
Arnd Bergmann877417e2016-04-25 17:35:27 +02001255 help
1256 This is the default optimization level for the kernel, building
1257 with the "-O2" compiler flag for best performance and most
1258 helpful compile-time warnings.
1259
Masahiro Yamada15f5db62019-08-21 02:09:40 +09001260config CC_OPTIMIZE_FOR_PERFORMANCE_O3
1261 bool "Optimize more for performance (-O3)"
1262 depends on ARC
Linus Torvaldsc45b4f12005-12-14 18:52:21 -08001263 help
Masahiro Yamada15f5db62019-08-21 02:09:40 +09001264 Choosing this option will pass "-O3" to your compiler to optimize
1265 the kernel yet more for performance.
Linus Torvaldsc45b4f12005-12-14 18:52:21 -08001266
Nicholas Piggin5d20ee32018-05-09 23:00:00 +10001267config CC_OPTIMIZE_FOR_SIZE
Masahiro Yamada15f5db62019-08-21 02:09:40 +09001268 bool "Optimize for size (-Os)"
Linus Torvaldsc45b4f12005-12-14 18:52:21 -08001269 help
Masahiro Yamadace3b4872019-08-21 02:09:39 +09001270 Choosing this option will pass "-Os" to your compiler resulting
1271 in a smaller kernel.
Linus Torvaldsc45b4f12005-12-14 18:52:21 -08001272
Arnd Bergmann877417e2016-04-25 17:35:27 +02001273endchoice
1274
Nicholas Piggin5d20ee32018-05-09 23:00:00 +10001275config HAVE_LD_DEAD_CODE_DATA_ELIMINATION
1276 bool
1277 help
1278 This requires that the arch annotates or otherwise protects
1279 its external entry points from being discarded. Linker scripts
1280 must also merge .text.*, .data.*, and .bss.* correctly into
1281 output sections. Care must be taken not to pull in unrelated
1282 sections (e.g., '.text.init'). Typically '.' in section names
1283 is used to distinguish them from label names / C identifiers.
1284
1285config LD_DEAD_CODE_DATA_ELIMINATION
1286 bool "Dead code and data elimination (EXPERIMENTAL)"
1287 depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION
1288 depends on EXPERT
Paul Burton16fd20a2019-01-11 19:06:44 +00001289 depends on !(FUNCTION_TRACER && CC_IS_GCC && GCC_VERSION < 40800)
Masahiro Yamadae85d1d62018-08-22 22:51:09 +09001290 depends on $(cc-option,-ffunction-sections -fdata-sections)
1291 depends on $(ld-option,--gc-sections)
Nicholas Piggin5d20ee32018-05-09 23:00:00 +10001292 help
Masahiro Yamada8b9d2712018-06-24 01:41:51 +09001293 Enable this if you want to do dead code and data elimination with
1294 the linker by compiling with -ffunction-sections -fdata-sections,
1295 and linking with --gc-sections.
Nicholas Piggin5d20ee32018-05-09 23:00:00 +10001296
1297 This can reduce on disk and in-memory size of the kernel
1298 code and static data, particularly for small configs and
1299 on small systems. This has the possibility of introducing
1300 silently broken kernel if the required annotations are not
1301 present. This option is not well tested yet, so use at your
1302 own risk.
1303
Randy Dunlap08470622006-09-30 23:28:13 -07001304config SYSCTL
1305 bool
1306
Mike Frysinger657a5202013-04-30 15:28:45 -07001307config HAVE_UID16
1308 bool
1309
1310config SYSCTL_EXCEPTION_TRACE
1311 bool
1312 help
1313 Enable support for /proc/sys/debug/exception-trace.
1314
1315config SYSCTL_ARCH_UNALIGN_NO_WARN
1316 bool
1317 help
1318 Enable support for /proc/sys/kernel/ignore-unaligned-usertrap
1319 Allows arch to define/use @no_unaligned_warning to possibly warn
1320 about unaligned access emulation going on under the hood.
1321
1322config SYSCTL_ARCH_UNALIGN_ALLOW
1323 bool
1324 help
1325 Enable support for /proc/sys/kernel/unaligned-trap
1326 Allows arches to define/use @unaligned_enabled to runtime toggle
1327 the unaligned access emulation.
1328 see arch/parisc/kernel/unaligned.c for reference
1329
Mike Frysinger657a5202013-04-30 15:28:45 -07001330config HAVE_PCSPKR_PLATFORM
1331 bool
1332
Alexei Starovoitovf89b7752014-10-23 18:41:08 -07001333# interpreter that classic socket filters depend on
1334config BPF
1335 bool
1336
David Rientjes6a108a12011-01-20 14:44:16 -08001337menuconfig EXPERT
1338 bool "Configure standard kernel features (expert users)"
Josh Triplettf505c552011-06-05 18:23:58 -07001339 # Unhide debug options, to make the on-by-default options visible
1340 select DEBUG_KERNEL
Linus Torvalds1da177e2005-04-16 15:20:36 -07001341 help
1342 This option allows certain base kernel options and settings
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001343 to be disabled or tweaked. This is for specialized
1344 environments which can tolerate a "non-standard" kernel.
1345 Only use this if you really know what you are doing.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001346
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001347config UID16
David Rientjes6a108a12011-01-20 14:44:16 -08001348 bool "Enable 16-bit UID system calls" if EXPERT
Iulia Manda28138932015-04-15 16:16:41 -07001349 depends on HAVE_UID16 && MULTIUSER
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001350 default y
1351 help
1352 This enables the legacy 16-bit UID syscall wrappers.
1353
Iulia Manda28138932015-04-15 16:16:41 -07001354config MULTIUSER
1355 bool "Multiple users, groups and capabilities support" if EXPERT
1356 default y
1357 help
1358 This option enables support for non-root users, groups and
1359 capabilities.
1360
1361 If you say N here, all processes will run with UID 0, GID 0, and all
1362 possible capabilities. Saying N here also compiles out support for
1363 system calls related to UIDs, GIDs, and capabilities, such as setuid,
1364 setgid, and capset.
1365
1366 If unsure, say Y here.
1367
Fabian Frederickf6187762014-06-04 16:11:12 -07001368config SGETMASK_SYSCALL
1369 bool "sgetmask/ssetmask syscalls support" if EXPERT
Arnd Bergmanna687a532018-03-07 23:30:54 +01001370 def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH
Fabian Frederickf6187762014-06-04 16:11:12 -07001371 ---help---
1372 sys_sgetmask and sys_ssetmask are obsolete system calls
1373 no longer supported in libc but still enabled by default in some
1374 architectures.
1375
1376 If unsure, leave the default option here.
1377
Fabian Frederick6af9f7b2014-04-03 14:48:25 -07001378config SYSFS_SYSCALL
1379 bool "Sysfs syscall support" if EXPERT
1380 default y
1381 ---help---
1382 sys_sysfs is an obsolete system call no longer supported in libc.
1383 Note that disabling this option is more secure but might break
1384 compatibility with some systems.
1385
1386 If unsure say Y here.
1387
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001388config FHANDLE
1389 bool "open by fhandle syscalls" if EXPERT
1390 select EXPORTFS
1391 default y
1392 help
1393 If you say Y here, a user level program will be able to map
1394 file names to handle and then later use the handle for
1395 different file system operations. This is useful in implementing
1396 userspace file servers, which now track files using handles instead
1397 of names. The handle would remain the same even if file names
1398 get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
1399 syscalls.
1400
Nicolas Pitrebaa73d92016-11-11 00:10:10 -05001401config POSIX_TIMERS
1402 bool "Posix Clocks & timers" if EXPERT
1403 default y
1404 help
1405 This includes native support for POSIX timers to the kernel.
1406 Some embedded systems have no use for them and therefore they
1407 can be configured out to reduce the size of the kernel image.
1408
1409 When this option is disabled, the following syscalls won't be
1410 available: timer_create, timer_gettime: timer_getoverrun,
1411 timer_settime, timer_delete, clock_adjtime, getitimer,
1412 setitimer, alarm. Furthermore, the clock_settime, clock_gettime,
1413 clock_getres and clock_nanosleep syscalls will be limited to
1414 CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only.
1415
1416 If unsure say y.
1417
Matt Mackalld59745c2005-05-01 08:59:02 -07001418config PRINTK
1419 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001420 bool "Enable support for printk" if EXPERT
Frederic Weisbecker74876a92012-10-12 18:00:23 +02001421 select IRQ_WORK
Matt Mackalld59745c2005-05-01 08:59:02 -07001422 help
1423 This option enables normal printk support. Removing it
1424 eliminates most of the message strings from the kernel image
1425 and makes the kernel more or less silent. As this makes it
1426 very difficult to diagnose system problems, saying N here is
1427 strongly discouraged.
1428
Petr Mladek42a0bb32016-05-20 17:00:33 -07001429config PRINTK_NMI
1430 def_bool y
1431 depends on PRINTK
1432 depends on HAVE_NMI
1433
Matt Mackallc8538a72005-05-01 08:59:01 -07001434config BUG
David Rientjes6a108a12011-01-20 14:44:16 -08001435 bool "BUG() support" if EXPERT
Matt Mackallc8538a72005-05-01 08:59:01 -07001436 default y
1437 help
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001438 Disabling this option eliminates support for BUG and WARN, reducing
1439 the size of your kernel image and potentially quietly ignoring
1440 numerous fatal conditions. You should only consider disabling this
1441 option for embedded systems with no facilities for reporting errors.
1442 Just say Y.
Matt Mackallc8538a72005-05-01 08:59:01 -07001443
Matt Mackall708e9a72006-01-08 01:05:25 -08001444config ELF_CORE
Alex Kelly046d6622012-10-04 17:15:23 -07001445 depends on COREDUMP
Matt Mackall708e9a72006-01-08 01:05:25 -08001446 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001447 bool "Enable ELF core dumps" if EXPERT
Matt Mackall708e9a72006-01-08 01:05:25 -08001448 help
1449 Enable support for generating core dumps. Disabling saves about 4k.
1450
Ralf Baechle8761f1a2011-06-01 19:05:09 +01001451
Stas Sergeeve5e1d3c2008-05-07 12:39:56 +02001452config PCSPKR_PLATFORM
David Rientjes6a108a12011-01-20 14:44:16 -08001453 bool "Enable PC-Speaker support" if EXPERT
Ralf Baechle8761f1a2011-06-01 19:05:09 +01001454 depends on HAVE_PCSPKR_PLATFORM
Ralf Baechle15f304b2011-06-01 19:04:59 +01001455 select I8253_LOCK
Stas Sergeeve5e1d3c2008-05-07 12:39:56 +02001456 default y
1457 help
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001458 This option allows to disable the internal PC-Speaker
1459 support, saving some memory.
Stas Sergeeve5e1d3c2008-05-07 12:39:56 +02001460
Linus Torvalds1da177e2005-04-16 15:20:36 -07001461config BASE_FULL
1462 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001463 bool "Enable full-sized data structures for core" if EXPERT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001464 help
1465 Disabling this option reduces the size of miscellaneous core
1466 kernel data structures. This saves memory on small machines,
1467 but may reduce performance.
1468
1469config FUTEX
David Rientjes6a108a12011-01-20 14:44:16 -08001470 bool "Enable futex support" if EXPERT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001471 default y
Nicolas Pitrebc2eecd2017-08-01 00:31:32 -04001472 imply RT_MUTEXES
Linus Torvalds1da177e2005-04-16 15:20:36 -07001473 help
1474 Disabling this option will cause the kernel to be built without
1475 support for "fast userspace mutexes". The resulting kernel may not
1476 run glibc-based applications correctly.
1477
Nicolas Pitrebc2eecd2017-08-01 00:31:32 -04001478config FUTEX_PI
1479 bool
1480 depends on FUTEX && RT_MUTEXES
1481 default y
1482
Heiko Carstens03b8c7b2014-03-02 13:09:47 +01001483config HAVE_FUTEX_CMPXCHG
1484 bool
Josh Triplett62b4d202014-10-03 16:19:24 -07001485 depends on FUTEX
Heiko Carstens03b8c7b2014-03-02 13:09:47 +01001486 help
1487 Architectures should select this if futex_atomic_cmpxchg_inatomic()
1488 is implemented and always working. This removes a couple of runtime
1489 checks.
1490
Linus Torvalds1da177e2005-04-16 15:20:36 -07001491config EPOLL
David Rientjes6a108a12011-01-20 14:44:16 -08001492 bool "Enable eventpoll support" if EXPERT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001493 default y
1494 help
1495 Disabling this option will cause the kernel to be built without
1496 support for epoll family of system calls.
1497
Davide Libenzifba2afa2007-05-10 22:23:13 -07001498config SIGNALFD
David Rientjes6a108a12011-01-20 14:44:16 -08001499 bool "Enable signalfd() system call" if EXPERT
Davide Libenzifba2afa2007-05-10 22:23:13 -07001500 default y
1501 help
1502 Enable the signalfd() system call that allows to receive signals
1503 on a file descriptor.
1504
1505 If unsure, say Y.
1506
Davide Libenzib215e282007-05-10 22:23:16 -07001507config TIMERFD
David Rientjes6a108a12011-01-20 14:44:16 -08001508 bool "Enable timerfd() system call" if EXPERT
Davide Libenzib215e282007-05-10 22:23:16 -07001509 default y
1510 help
1511 Enable the timerfd() system call that allows to receive timer
1512 events on a file descriptor.
1513
1514 If unsure, say Y.
1515
Davide Libenzie1ad7462007-05-10 22:23:19 -07001516config EVENTFD
David Rientjes6a108a12011-01-20 14:44:16 -08001517 bool "Enable eventfd() system call" if EXPERT
Davide Libenzie1ad7462007-05-10 22:23:19 -07001518 default y
1519 help
1520 Enable the eventfd() system call that allows to receive both
1521 kernel notification (ie. KAIO) or userspace notifications.
1522
1523 If unsure, say Y.
1524
Linus Torvalds1da177e2005-04-16 15:20:36 -07001525config SHMEM
David Rientjes6a108a12011-01-20 14:44:16 -08001526 bool "Use full shmem filesystem" if EXPERT
Linus Torvalds1da177e2005-04-16 15:20:36 -07001527 default y
1528 depends on MMU
1529 help
1530 The shmem is an internal filesystem used to manage shared memory.
1531 It is backed by swap and manages resource limits. It is also exported
1532 to userspace as tmpfs if TMPFS is enabled. Disabling this
1533 option replaces shmem and tmpfs with the much simpler ramfs code,
1534 which may be appropriate on small systems without swap.
1535
Thomas Petazzoniebf3f092008-10-15 22:05:12 -07001536config AIO
David Rientjes6a108a12011-01-20 14:44:16 -08001537 bool "Enable AIO support" if EXPERT
Thomas Petazzoniebf3f092008-10-15 22:05:12 -07001538 default y
1539 help
1540 This option enables POSIX asynchronous I/O which may by used
Mike Frysinger657a5202013-04-30 15:28:45 -07001541 by some high performance threaded applications. Disabling
1542 this option saves about 7k.
1543
Jens Axboe2b188cc2019-01-07 10:46:33 -07001544config IO_URING
1545 bool "Enable IO uring support" if EXPERT
Jens Axboe561fb042019-10-24 07:25:42 -06001546 select IO_WQ
Jens Axboe2b188cc2019-01-07 10:46:33 -07001547 default y
1548 help
1549 This option enables support for the io_uring interface, enabling
1550 applications to submit and complete IO through submission and
1551 completion rings that are shared between the kernel and application.
1552
Josh Triplettd3ac21c2014-08-17 19:41:09 -05001553config ADVISE_SYSCALLS
1554 bool "Enable madvise/fadvise syscalls" if EXPERT
1555 default y
1556 help
1557 This option enables the madvise and fadvise syscalls, used by
1558 applications to advise the kernel about their future memory or file
1559 usage, improving performance. If building an embedded system where no
1560 applications use these syscalls, you can disable this option to save
1561 space.
1562
Andrea Arcangeli5a281062020-04-06 20:05:33 -07001563config HAVE_ARCH_USERFAULTFD_WP
1564 bool
1565 help
1566 Arch has userfaultfd write protection support
1567
Mathieu Desnoyers5b25b132015-09-11 13:07:39 -07001568config MEMBARRIER
1569 bool "Enable membarrier() system call" if EXPERT
1570 default y
1571 help
1572 Enable the membarrier() system call that allows issuing memory
1573 barriers across all running threads, which can be used to distribute
1574 the cost of user-space memory barriers asymmetrically by transforming
1575 pairs of memory barriers into pairs consisting of membarrier() and a
1576 compiler barrier.
1577
1578 If unsure, say Y.
1579
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001580config KALLSYMS
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001581 bool "Load all symbols for debugging/ksymoops" if EXPERT
1582 default y
1583 help
1584 Say Y here to let the kernel print out symbolic crash information and
1585 symbolic stack backtraces. This increases the size of the kernel
1586 somewhat, as all symbols have to be loaded into the kernel image.
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001587
1588config KALLSYMS_ALL
1589 bool "Include all symbols in kallsyms"
1590 depends on DEBUG_KERNEL && KALLSYMS
1591 help
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001592 Normally kallsyms only contains the symbols of functions for nicer
1593 OOPS messages and backtraces (i.e., symbols from the text and inittext
1594 sections). This is sufficient for most cases. And only in very rare
1595 cases (e.g., when a debugger is used) all symbols are required (e.g.,
1596 names of variables from the data sections, etc).
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001597
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001598 This option makes sure that all symbols are loaded into the kernel
1599 image (i.e., symbols from all sections) in cost of increased kernel
1600 size (depending on the kernel configuration, it may be 300KiB or
1601 something like this).
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001602
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001603 Say N unless you really need all symbols.
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001604
1605config KALLSYMS_ABSOLUTE_PERCPU
1606 bool
1607 depends on KALLSYMS
1608 default X86_64 && SMP
1609
1610config KALLSYMS_BASE_RELATIVE
1611 bool
1612 depends on KALLSYMS
Arnd Bergmanna687a532018-03-07 23:30:54 +01001613 default !IA64
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001614 help
1615 Instead of emitting them as absolute values in the native word size,
1616 emit the symbol references in the kallsyms table as 32-bit entries,
1617 each containing a relative value in the range [base, base + U32_MAX]
1618 or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either
1619 an absolute value in the range [0, S32_MAX] or a relative value in the
1620 range [base, base + S32_MAX], where base is the lowest relative symbol
1621 address encountered in the image.
1622
1623 On 64-bit builds, this reduces the size of the address table by 50%,
1624 but more importantly, it results in entries whose values are build
1625 time constants, and no relocation pass is required at runtime to fix
1626 up the entries based on the runtime load address of the kernel.
1627
1628# end of the "standard kernel features (expert users)" menu
1629
1630# syscall, maps, verifier
KP Singhfc611f42020-03-29 01:43:49 +01001631
1632config BPF_LSM
1633 bool "LSM Instrumentation with BPF"
KP Singh4edf16b2020-03-30 22:40:59 +02001634 depends on BPF_EVENTS
KP Singhfc611f42020-03-29 01:43:49 +01001635 depends on BPF_SYSCALL
1636 depends on SECURITY
1637 depends on BPF_JIT
1638 help
1639 Enables instrumentation of the security hooks with eBPF programs for
1640 implementing dynamic MAC and Audit Policies.
1641
1642 If you are unsure how to answer this question, answer N.
1643
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001644config BPF_SYSCALL
1645 bool "Enable bpf() system call"
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001646 select BPF
Song Liubae77c52018-05-07 10:50:48 -07001647 select IRQ_WORK
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001648 default n
1649 help
1650 Enable the bpf() system call that allows to manipulate eBPF
1651 programs and maps via file descriptors.
1652
Daniel Borkmann81c22042019-12-09 16:08:03 +01001653config ARCH_WANT_DEFAULT_BPF_JIT
1654 bool
1655
Alexei Starovoitov290af862018-01-09 10:04:29 -08001656config BPF_JIT_ALWAYS_ON
1657 bool "Permanently enable BPF JIT and remove BPF interpreter"
1658 depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT
1659 help
1660 Enables BPF JIT and removes BPF interpreter to avoid
1661 speculative execution of BPF instructions by the interpreter
1662
Daniel Borkmann81c22042019-12-09 16:08:03 +01001663config BPF_JIT_DEFAULT_ON
1664 def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON
1665 depends on HAVE_EBPF_JIT && BPF_JIT
1666
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001667config USERFAULTFD
1668 bool "Enable userfaultfd() system call"
Randy Dunlapd1b069f2017-11-17 15:31:47 -08001669 depends on MMU
1670 help
1671 Enable the userfaultfd() system call that allows to intercept and
1672 handle page faults in userland.
1673
Mathieu Desnoyers3ccfebe2018-01-29 15:20:11 -05001674config ARCH_HAS_MEMBARRIER_CALLBACKS
1675 bool
1676
Mathieu Desnoyers70216e12018-01-29 15:20:17 -05001677config ARCH_HAS_MEMBARRIER_SYNC_CORE
1678 bool
1679
Mathieu Desnoyersd7822b12018-06-02 08:43:54 -04001680config RSEQ
1681 bool "Enable rseq() system call" if EXPERT
1682 default y
1683 depends on HAVE_RSEQ
1684 select MEMBARRIER
1685 help
1686 Enable the restartable sequences system call. It provides a
1687 user-space cache for the current CPU number value, which
1688 speeds up getting the current CPU number from user-space,
1689 as well as an ABI to speed up user-space operations on
1690 per-CPU data.
1691
1692 If unsure, say Y.
1693
1694config DEBUG_RSEQ
1695 default n
1696 bool "Enabled debugging of rseq() system call" if EXPERT
1697 depends on RSEQ && DEBUG_KERNEL
1698 help
1699 Enable extra debugging checks for the rseq system call.
1700
1701 If unsure, say N.
1702
Randy Dunlap6befe5f2011-04-26 12:33:21 -07001703config EMBEDDED
1704 bool "Embedded system"
Josh Triplett5d2acfc2014-04-07 15:39:09 -07001705 option allnoconfig_y
Randy Dunlap6befe5f2011-04-26 12:33:21 -07001706 select EXPERT
1707 help
1708 This option should be enabled if compiling the kernel for
1709 an embedded system so certain expert options are available
1710 for configuration.
1711
Ingo Molnarcdd6c482009-09-21 12:02:48 +02001712config HAVE_PERF_EVENTS
Thomas Gleixner0793a612008-12-04 20:12:29 +01001713 bool
Mike Frysinger018df722009-06-12 13:17:43 -04001714 help
1715 See tools/perf/design.txt for details.
Thomas Gleixner0793a612008-12-04 20:12:29 +01001716
Peter Zijlstra906010b2009-09-21 16:08:49 +02001717config PERF_USE_VMALLOC
1718 bool
1719 help
1720 See tools/perf/design.txt for details
1721
William Breathitt Grayad90a3d2017-01-10 13:50:54 -05001722config PC104
William Breathitt Gray424529f2017-12-29 15:14:59 -05001723 bool "PC/104 support" if EXPERT
William Breathitt Grayad90a3d2017-01-10 13:50:54 -05001724 help
1725 Expose PC/104 form factor device drivers and options available for
1726 selection and configuration. Enable this option if your target
1727 machine has a PC/104 bus.
1728
Ingo Molnar57c0c152009-09-21 12:20:38 +02001729menu "Kernel Performance Events And Counters"
Thomas Gleixner0793a612008-12-04 20:12:29 +01001730
Ingo Molnarcdd6c482009-09-21 12:02:48 +02001731config PERF_EVENTS
Ingo Molnar57c0c152009-09-21 12:20:38 +02001732 bool "Kernel performance events and counters"
Robert Richter392d65a2012-04-05 18:24:44 +02001733 default y if PROFILING
Ingo Molnarcdd6c482009-09-21 12:02:48 +02001734 depends on HAVE_PERF_EVENTS
Peter Zijlstrae360adb2010-10-14 14:01:34 +08001735 select IRQ_WORK
Pranith Kumar83fe27e2014-12-05 11:24:45 -05001736 select SRCU
Thomas Gleixner0793a612008-12-04 20:12:29 +01001737 help
Ingo Molnar57c0c152009-09-21 12:20:38 +02001738 Enable kernel support for various performance events provided
1739 by software and hardware.
Thomas Gleixner0793a612008-12-04 20:12:29 +01001740
Thadeu Lima de Souza Cascardodd770382009-10-30 19:32:25 -02001741 Software events are supported either built-in or via the
Ingo Molnar57c0c152009-09-21 12:20:38 +02001742 use of generic tracepoints.
1743
1744 Most modern CPUs support performance events via performance
1745 counter registers. These registers count the number of certain
Thomas Gleixner0793a612008-12-04 20:12:29 +01001746 types of hw events: such as instructions executed, cachemisses
1747 suffered, or branches mis-predicted - without slowing down the
1748 kernel or applications. These registers can also trigger interrupts
1749 when a threshold number of events have passed - and can thus be
1750 used to profile the code that runs on that CPU.
1751
Ingo Molnar57c0c152009-09-21 12:20:38 +02001752 The Linux Performance Event subsystem provides an abstraction of
Thadeu Lima de Souza Cascardodd770382009-10-30 19:32:25 -02001753 these software and hardware event capabilities, available via a
Ingo Molnar57c0c152009-09-21 12:20:38 +02001754 system call and used by the "perf" utility in tools/perf/. It
Thomas Gleixner0793a612008-12-04 20:12:29 +01001755 provides per task and per CPU counters, and it provides event
1756 capabilities on top of those.
1757
1758 Say Y if unsure.
1759
Peter Zijlstra906010b2009-09-21 16:08:49 +02001760config DEBUG_PERF_USE_VMALLOC
1761 default n
1762 bool "Debug: use vmalloc to back perf mmap() buffers"
Michael Ellermancb3071132015-05-04 16:26:39 +10001763 depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
Peter Zijlstra906010b2009-09-21 16:08:49 +02001764 select PERF_USE_VMALLOC
1765 help
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001766 Use vmalloc memory to back perf mmap() buffers.
Peter Zijlstra906010b2009-09-21 16:08:49 +02001767
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001768 Mostly useful for debugging the vmalloc code on platforms
1769 that don't require it.
Peter Zijlstra906010b2009-09-21 16:08:49 +02001770
Krzysztof Kozlowskie8cf4e92019-12-04 16:52:28 -08001771 Say N if unsure.
Peter Zijlstra906010b2009-09-21 16:08:49 +02001772
Thomas Gleixner0793a612008-12-04 20:12:29 +01001773endmenu
1774
Christoph Lameterf8891e52006-06-30 01:55:45 -07001775config VM_EVENT_COUNTERS
1776 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001777 bool "Enable VM event counters for /proc/vmstat" if EXPERT
Christoph Lameterf8891e52006-06-30 01:55:45 -07001778 help
Paul Jackson2aea4fb2006-12-22 01:06:10 -08001779 VM event counters are needed for event counts to be shown.
1780 This option allows the disabling of the VM event counters
David Rientjes6a108a12011-01-20 14:44:16 -08001781 on EXPERT systems. /proc/vmstat will only show page counts
Paul Jackson2aea4fb2006-12-22 01:06:10 -08001782 if VM event counters are disabled.
Christoph Lameterf8891e52006-06-30 01:55:45 -07001783
Christoph Lameter41ecc552007-05-09 02:32:44 -07001784config SLUB_DEBUG
1785 default y
David Rientjes6a108a12011-01-20 14:44:16 -08001786 bool "Enable SLUB debugging support" if EXPERT
Christoph Lameterf6acb632008-04-29 16:16:06 -07001787 depends on SLUB && SYSFS
Christoph Lameter41ecc552007-05-09 02:32:44 -07001788 help
1789 SLUB has extensive debug support features. Disabling these can
1790 result in significant savings in code size. This also disables
1791 SLUB sysfs support. /sys/slab will not exist and there will be
1792 no support for cache validation etc.
1793
Tejun Heo1663f262017-02-22 15:41:39 -08001794config SLUB_MEMCG_SYSFS_ON
1795 default n
1796 bool "Enable memcg SLUB sysfs support by default" if EXPERT
1797 depends on SLUB && SYSFS && MEMCG
1798 help
1799 SLUB creates a directory under /sys/kernel/slab for each
1800 allocation cache to host info and debug files. If memory
1801 cgroup is enabled, each cache can have per memory cgroup
1802 caches. SLUB can create the same sysfs directories for these
1803 caches under /sys/kernel/slab/CACHE/cgroup but it can lead
1804 to a very high number of debug files being created. This is
1805 controlled by slub_memcg_sysfs boot parameter and this
1806 config option determines the parameter's default value.
1807
Randy Dunlapb943c462009-03-10 12:55:46 -07001808config COMPAT_BRK
1809 bool "Disable heap randomization"
1810 default y
1811 help
1812 Randomizing heap placement makes heap exploits harder, but it
1813 also breaks ancient binaries (including anything libc5 based).
1814 This option changes the bootup default to heap randomization
Matt LaPlante692105b2009-01-26 11:12:25 +01001815 disabled, and can be overridden at runtime by setting
Randy Dunlapb943c462009-03-10 12:55:46 -07001816 /proc/sys/kernel/randomize_va_space to 2.
1817
1818 On non-ancient distros (post-2000 ones) N is usually a safe choice.
1819
Christoph Lameter81819f02007-05-06 14:49:36 -07001820choice
1821 prompt "Choose SLAB allocator"
Christoph Lametera0acd822007-07-17 04:03:32 -07001822 default SLUB
Christoph Lameter81819f02007-05-06 14:49:36 -07001823 help
1824 This option allows to select a slab allocator.
1825
1826config SLAB
1827 bool "SLAB"
Kees Cook04385fc2016-06-23 15:20:59 -07001828 select HAVE_HARDENED_USERCOPY_ALLOCATOR
Christoph Lameter81819f02007-05-06 14:49:36 -07001829 help
1830 The regular slab allocator that is established and known to work
Christoph Lameter34013882007-05-09 02:32:47 -07001831 well in all environments. It organizes cache hot objects in
Simon Arlott02f56212008-11-05 22:18:19 +00001832 per cpu and per node queues.
Christoph Lameter81819f02007-05-06 14:49:36 -07001833
1834config SLUB
Christoph Lameter81819f02007-05-06 14:49:36 -07001835 bool "SLUB (Unqueued Allocator)"
Kees Cooked18adc2016-06-23 15:24:05 -07001836 select HAVE_HARDENED_USERCOPY_ALLOCATOR
Christoph Lameter81819f02007-05-06 14:49:36 -07001837 help
1838 SLUB is a slab allocator that minimizes cache line usage
1839 instead of managing queues of cached objects (SLAB approach).
1840 Per cpu caching is realized using slabs of objects instead
1841 of queues of objects. SLUB can use memory efficiently
Simon Arlott02f56212008-11-05 22:18:19 +00001842 and has enhanced diagnostics. SLUB is the default choice for
1843 a slab allocator.
Christoph Lameter81819f02007-05-06 14:49:36 -07001844
1845config SLOB
David Rientjes6a108a12011-01-20 14:44:16 -08001846 depends on EXPERT
Christoph Lameter81819f02007-05-06 14:49:36 -07001847 bool "SLOB (Simple Allocator)"
1848 help
Matt Mackall37291452008-02-04 22:29:38 -08001849 SLOB replaces the stock allocator with a drastically simpler
1850 allocator. SLOB is generally more space efficient but
1851 does not perform as well on large systems.
Christoph Lameter81819f02007-05-06 14:49:36 -07001852
1853endchoice
1854
Kees Cook7660a6f2017-07-06 15:36:40 -07001855config SLAB_MERGE_DEFAULT
1856 bool "Allow slab caches to be merged"
1857 default y
1858 help
1859 For reduced kernel memory fragmentation, slab caches can be
1860 merged when they share the same size and other characteristics.
1861 This carries a risk of kernel heap overflows being able to
1862 overwrite objects from merged caches (and more easily control
1863 cache layout), which makes such heap attacks easier to exploit
1864 by attackers. By keeping caches unmerged, these kinds of exploits
1865 can usually only damage objects in the same cache. To disable
1866 merging at runtime, "slab_nomerge" can be passed on the kernel
1867 command line.
1868
Thomas Garnierc7ce4f602016-05-19 17:10:37 -07001869config SLAB_FREELIST_RANDOM
1870 default n
Thomas Garnier210e7a42016-07-26 15:21:59 -07001871 depends on SLAB || SLUB
Thomas Garnierc7ce4f602016-05-19 17:10:37 -07001872 bool "SLAB freelist randomization"
1873 help
Thomas Garnier210e7a42016-07-26 15:21:59 -07001874 Randomizes the freelist order used on creating new pages. This
Thomas Garnierc7ce4f602016-05-19 17:10:37 -07001875 security feature reduces the predictability of the kernel slab
1876 allocator against heap overflows.
1877
Kees Cook2482ddec2017-09-06 16:19:18 -07001878config SLAB_FREELIST_HARDENED
1879 bool "Harden slab freelist metadata"
1880 depends on SLUB
1881 help
1882 Many kernel heap attacks try to target slab cache metadata and
1883 other infrastructure. This options makes minor performance
Kees Cook92bae782019-07-16 16:27:57 -07001884 sacrifices to harden the kernel slab allocator against common
Kees Cook2482ddec2017-09-06 16:19:18 -07001885 freelist exploit methods.
1886
Dan Williamse900a912019-05-14 15:41:28 -07001887config SHUFFLE_PAGE_ALLOCATOR
1888 bool "Page allocator randomization"
1889 default SLAB_FREELIST_RANDOM && ACPI_NUMA
1890 help
1891 Randomization of the page allocator improves the average
1892 utilization of a direct-mapped memory-side-cache. See section
1893 5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI
1894 6.2a specification for an example of how a platform advertises
1895 the presence of a memory-side-cache. There are also incidental
1896 security benefits as it reduces the predictability of page
1897 allocations to compliment SLAB_FREELIST_RANDOM, but the
1898 default granularity of shuffling on the "MAX_ORDER - 1" i.e,
1899 10th order of pages is selected based on cache utilization
1900 benefits on x86.
1901
1902 While the randomization improves cache utilization it may
1903 negatively impact workloads on platforms without a cache. For
1904 this reason, by default, the randomization is enabled only
1905 after runtime detection of a direct-mapped memory-side-cache.
1906 Otherwise, the randomization may be force enabled with the
1907 'page_alloc.shuffle' kernel command line parameter.
1908
1909 Say Y if unsure.
1910
Joonsoo Kim345c9052013-06-19 14:05:52 +09001911config SLUB_CPU_PARTIAL
1912 default y
Uwe Kleine-Königb39ffbf2013-07-17 16:54:59 +02001913 depends on SLUB && SMP
Joonsoo Kim345c9052013-06-19 14:05:52 +09001914 bool "SLUB per cpu partial cache"
1915 help
Kees Cook92bae782019-07-16 16:27:57 -07001916 Per cpu partial caches accelerate objects allocation and freeing
Joonsoo Kim345c9052013-06-19 14:05:52 +09001917 that is local to a processor at the price of more indeterminism
1918 in the latency of the free. On overflow these caches will be cleared
1919 which requires the taking of locks that may cause latency spikes.
1920 Typically one would choose no for a realtime system.
1921
Jie Zhangea637632009-12-14 18:00:02 -08001922config MMAP_ALLOW_UNINITIALIZED
1923 bool "Allow mmapped anonymous memory to be uninitialized"
David Rientjes6a108a12011-01-20 14:44:16 -08001924 depends on EXPERT && !MMU
Jie Zhangea637632009-12-14 18:00:02 -08001925 default n
1926 help
1927 Normally, and according to the Linux spec, anonymous memory obtained
Randy Dunlap3903bf92018-08-21 21:58:34 -07001928 from mmap() has its contents cleared before it is passed to
Jie Zhangea637632009-12-14 18:00:02 -08001929 userspace. Enabling this config option allows you to request that
1930 mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1931 providing a huge performance boost. If this option is not enabled,
1932 then the flag will be ignored.
1933
1934 This is taken advantage of by uClibc's malloc(), and also by
1935 ELF-FDPIC binfmt's brk and stack allocator.
1936
1937 Because of the obvious security issues, this option should only be
1938 enabled on embedded devices where you control what is run in
1939 userspace. Since that isn't generally a problem on no-MMU systems,
1940 it is normally safe to say Y here.
1941
1942 See Documentation/nommu-mmap.txt for more information.
1943
David Howells091f6e22015-07-20 21:16:28 +01001944config SYSTEM_DATA_VERIFICATION
1945 def_bool n
1946 select SYSTEM_TRUSTED_KEYRING
1947 select KEYS
1948 select CRYPTO
David Howellsd43de6c2016-03-03 21:49:27 +00001949 select CRYPTO_RSA
David Howells091f6e22015-07-20 21:16:28 +01001950 select ASYMMETRIC_KEY_TYPE
1951 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
David Howells091f6e22015-07-20 21:16:28 +01001952 select ASN1
1953 select OID_REGISTRY
1954 select X509_CERTIFICATE_PARSER
1955 select PKCS7_MESSAGE_PARSER
Peter Foley82c04ff2014-04-18 15:07:11 -07001956 help
David Howells091f6e22015-07-20 21:16:28 +01001957 Provide PKCS#7 message verification using the contents of the system
1958 trusted keyring to provide public keys. This then can be used for
1959 module verification, kexec image verification and firmware blob
1960 verification.
Peter Foley82c04ff2014-04-18 15:07:11 -07001961
Mathieu Desnoyers125e5642008-02-02 15:10:36 -05001962config PROFILING
Robert Richterb309a292010-02-26 15:01:23 +01001963 bool "Profiling support"
Mathieu Desnoyers125e5642008-02-02 15:10:36 -05001964 help
1965 Say Y here to enable the extended profiling support mechanisms used
1966 by profilers such as OProfile.
1967
Ingo Molnar5f87f112008-07-23 14:15:22 +02001968#
1969# Place an empty function call at each tracepoint site. Can be
1970# dynamically changed for a probe function.
1971#
Mathieu Desnoyers97e1c182008-07-18 12:16:16 -04001972config TRACEPOINTS
Ingo Molnar5f87f112008-07-23 14:15:22 +02001973 bool
Mathieu Desnoyers97e1c182008-07-18 12:16:16 -04001974
Linus Torvalds1da177e2005-04-16 15:20:36 -07001975endmenu # General setup
1976
Christoph Hellwig15724972018-07-31 13:39:30 +02001977source "arch/Kconfig"
1978
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001979config RT_MUTEXES
Christoph Jaeger6341e622014-12-20 15:41:11 -05001980 bool
Chuck Ebbertae81f9e2006-09-16 12:15:53 -07001981
Linus Torvalds1da177e2005-04-16 15:20:36 -07001982config BASE_SMALL
1983 int
1984 default 0 if BASE_FULL
1985 default 1 if !BASE_FULL
1986
Thiago Jung Bauermannc8424e72019-07-04 15:57:34 -03001987config MODULE_SIG_FORMAT
1988 def_bool n
1989 select SYSTEM_DATA_VERIFICATION
1990
Jan Engelhardt66da5732007-07-15 23:39:29 -07001991menuconfig MODULES
Linus Torvalds1da177e2005-04-16 15:20:36 -07001992 bool "Enable loadable module support"
Yann E. MORIN11097a02013-08-11 16:07:50 +02001993 option modules
Linus Torvalds1da177e2005-04-16 15:20:36 -07001994 help
1995 Kernel modules are small pieces of compiled code which can
1996 be inserted in the running kernel, rather than being
1997 permanently built into the kernel. You use the "modprobe"
1998 tool to add (and sometimes remove) them. If you say Y here,
1999 many parts of the kernel can be built as modules (by
2000 answering M instead of Y where indicated): this is most
2001 useful for infrequently used options which are not required
2002 for booting. For more information, see the man pages for
2003 modprobe, lsmod, modinfo, insmod and rmmod.
2004
2005 If you say Y here, you will need to run "make
2006 modules_install" to put the modules under /lib/modules/
2007 where modprobe can find them (you may need to be root to do
2008 this).
2009
2010 If unsure, say Y.
2011
Robert P. J. Day0b0de142008-08-04 13:31:32 -04002012if MODULES
2013
Linus Torvalds826e4502008-05-04 17:04:16 -07002014config MODULE_FORCE_LOAD
2015 bool "Forced module loading"
Linus Torvalds826e4502008-05-04 17:04:16 -07002016 default n
2017 help
Rusty Russell91e37a72008-05-09 16:25:28 +10002018 Allow loading of modules without version information (ie. modprobe
2019 --force). Forced module loading sets the 'F' (forced) taint flag and
2020 is usually a really bad idea.
Linus Torvalds826e4502008-05-04 17:04:16 -07002021
Linus Torvalds1da177e2005-04-16 15:20:36 -07002022config MODULE_UNLOAD
2023 bool "Module unloading"
Linus Torvalds1da177e2005-04-16 15:20:36 -07002024 help
2025 Without this option you will not be able to unload any
2026 modules (note that some modules may not be unloadable
Denys Vlasenkof7f5b672008-07-22 19:24:26 -05002027 anyway), which makes your kernel smaller, faster
2028 and simpler. If unsure, say Y.
Linus Torvalds1da177e2005-04-16 15:20:36 -07002029
2030config MODULE_FORCE_UNLOAD
2031 bool "Forced module unloading"
Kees Cook19c92392012-10-02 11:19:29 -07002032 depends on MODULE_UNLOAD
Linus Torvalds1da177e2005-04-16 15:20:36 -07002033 help
2034 This option allows you to force a module to unload, even if the
2035 kernel believes it is unsafe: the kernel will remove the module
2036 without waiting for anyone to stop using it (using the -f option to
2037 rmmod). This is mainly for kernel developers and desperate users.
2038 If unsure, say N.
2039
Linus Torvalds1da177e2005-04-16 15:20:36 -07002040config MODVERSIONS
Sam Ravnborg0d541642005-12-26 23:04:02 +01002041 bool "Module versioning support"
Linus Torvalds1da177e2005-04-16 15:20:36 -07002042 help
2043 Usually, you have to use modules compiled with your kernel.
2044 Saying Y here makes it sometimes possible to use modules
2045 compiled for different kernels, by adding enough information
2046 to the modules to (hopefully) spot any changes which would
2047 make them incompatible with the kernel you are running. If
2048 unsure, say N.
2049
Masahiro Yamada2ff2b7e2019-08-19 14:54:20 +09002050config ASM_MODVERSIONS
2051 bool
2052 default HAVE_ASM_MODVERSIONS && MODVERSIONS
2053 help
2054 This enables module versioning for exported symbols also from
2055 assembly. This can be enabled only when the target architecture
2056 supports it.
2057
Ard Biesheuvel56067812017-02-03 09:54:05 +00002058config MODULE_REL_CRCS
2059 bool
2060 depends on MODVERSIONS
2061
Linus Torvalds1da177e2005-04-16 15:20:36 -07002062config MODULE_SRCVERSION_ALL
2063 bool "Source checksum for all modules"
Linus Torvalds1da177e2005-04-16 15:20:36 -07002064 help
2065 Modules which contain a MODULE_VERSION get an extra "srcversion"
2066 field inserted into their modinfo section, which contains a
2067 sum of the source files which made it. This helps maintainers
2068 see exactly which source was used to build a module (since
2069 others sometimes change the module source without updating
2070 the version). With this option, such a "srcversion" field
2071 will be created for all modules. If unsure, say N.
2072
Rusty Russell106a4ee2012-09-26 10:09:40 +01002073config MODULE_SIG
2074 bool "Module signature verification"
Thiago Jung Bauermannc8424e72019-07-04 15:57:34 -03002075 select MODULE_SIG_FORMAT
Rusty Russell106a4ee2012-09-26 10:09:40 +01002076 help
2077 Check modules for valid signatures upon load: the signature
2078 is simply appended to the module. For more information see
Nathan Chancellorcbdc8212017-09-10 02:48:29 -07002079 <file:Documentation/admin-guide/module-signing.rst>.
Rusty Russell106a4ee2012-09-26 10:09:40 +01002080
David Howells228c37f2015-08-11 12:38:54 +01002081 Note that this option adds the OpenSSL development packages as a
2082 kernel build dependency so that the signing tool can use its crypto
2083 library.
2084
David Howells49fcf732019-08-19 17:17:40 -07002085 You should enable this option if you wish to use either
2086 CONFIG_SECURITY_LOCKDOWN_LSM or lockdown functionality imposed via
2087 another LSM - otherwise unsigned modules will be loadable regardless
2088 of the lockdown policy.
2089
David Howellsea0b6dc2012-09-26 10:09:50 +01002090 !!!WARNING!!! If you enable this option, you MUST make sure that the
2091 module DOES NOT get stripped after being signed. This includes the
2092 debuginfo strip done by some packagers (such as rpmbuild) and
2093 inclusion into an initramfs that wants the module size reduced.
2094
Rusty Russell106a4ee2012-09-26 10:09:40 +01002095config MODULE_SIG_FORCE
2096 bool "Require modules to be validly signed"
2097 depends on MODULE_SIG
2098 help
2099 Reject unsigned modules or signed modules for which we don't have a
2100 key. Without this, such modules will simply taint the kernel.
David Howellsea0b6dc2012-09-26 10:09:50 +01002101
Michal Marekd9d8d7e2013-01-25 13:41:31 +10302102config MODULE_SIG_ALL
2103 bool "Automatically sign all modules"
2104 default y
2105 depends on MODULE_SIG
2106 help
2107 Sign all modules during make modules_install. Without this option,
2108 modules must be signed manually, using the scripts/sign-file tool.
2109
2110comment "Do not forget to sign required modules with scripts/sign-file"
2111 depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
2112
David Howellsea0b6dc2012-09-26 10:09:50 +01002113choice
2114 prompt "Which hash algorithm should modules be signed with?"
2115 depends on MODULE_SIG
2116 help
2117 This determines which sort of hashing algorithm will be used during
2118 signature generation. This algorithm _must_ be built into the kernel
2119 directly so that signature verification can take place. It is not
2120 possible to load a signed module containing the algorithm to check
2121 the signature on that module.
2122
2123config MODULE_SIG_SHA1
2124 bool "Sign modules with SHA-1"
2125 select CRYPTO_SHA1
2126
2127config MODULE_SIG_SHA224
2128 bool "Sign modules with SHA-224"
2129 select CRYPTO_SHA256
2130
2131config MODULE_SIG_SHA256
2132 bool "Sign modules with SHA-256"
2133 select CRYPTO_SHA256
2134
2135config MODULE_SIG_SHA384
2136 bool "Sign modules with SHA-384"
2137 select CRYPTO_SHA512
2138
2139config MODULE_SIG_SHA512
2140 bool "Sign modules with SHA-512"
2141 select CRYPTO_SHA512
2142
2143endchoice
2144
Michal Marek22753672013-01-25 13:41:00 +10302145config MODULE_SIG_HASH
2146 string
2147 depends on MODULE_SIG
2148 default "sha1" if MODULE_SIG_SHA1
2149 default "sha224" if MODULE_SIG_SHA224
2150 default "sha256" if MODULE_SIG_SHA256
2151 default "sha384" if MODULE_SIG_SHA384
2152 default "sha512" if MODULE_SIG_SHA512
2153
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09302154config MODULE_COMPRESS
2155 bool "Compress modules on installation"
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09302156 help
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09302157
Rusty Russellb6c09b52015-06-16 12:16:22 +09302158 Compresses kernel modules when 'make modules_install' is run; gzip or
2159 xz depending on "Compression algorithm" below.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09302160
Rusty Russellb6c09b52015-06-16 12:16:22 +09302161 module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09302162
Rusty Russellb6c09b52015-06-16 12:16:22 +09302163 Out-of-tree kernel modules installed using Kbuild will also be
2164 compressed upon installation.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09302165
Rusty Russellb6c09b52015-06-16 12:16:22 +09302166 Note: for modules inside an initrd or initramfs, it's more efficient
2167 to compress the whole initrd or initramfs instead.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09302168
Rusty Russellb6c09b52015-06-16 12:16:22 +09302169 Note: This is fully compatible with signed modules.
2170
2171 If in doubt, say N.
Bertrand Jacquinbeb50df2014-08-27 20:31:56 +09302172
2173choice
2174 prompt "Compression algorithm"
2175 depends on MODULE_COMPRESS
2176 default MODULE_COMPRESS_GZIP
2177 help
2178 This determines which sort of compression will be used during
2179 'make modules_install'.
2180
2181 GZIP (default) and XZ are supported.
2182
2183config MODULE_COMPRESS_GZIP
2184 bool "GZIP"
2185
2186config MODULE_COMPRESS_XZ
2187 bool "XZ"
2188
2189endchoice
2190
Matthias Maennich3d52ec52019-09-06 11:32:29 +01002191config MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
2192 bool "Allow loading of modules with missing namespace imports"
2193 help
2194 Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in
2195 a namespace. A module that makes use of a symbol exported with such a
2196 namespace is required to import the namespace via MODULE_IMPORT_NS().
2197 There is no technical reason to enforce correct namespace imports,
2198 but it creates consistency between symbols defining namespaces and
2199 users importing namespaces they make use of. This option relaxes this
2200 requirement and lifts the enforcement when loading a module.
2201
2202 If unsure, say N.
2203
Masahiro Yamadaefd97632019-09-09 20:04:08 +09002204config UNUSED_SYMBOLS
2205 bool "Enable unused/obsolete exported symbols"
2206 default y if X86
2207 help
2208 Unused but exported symbols make the kernel needlessly bigger. For
2209 that reason most of these unused exports will soon be removed. This
2210 option is provided temporarily to provide a transition period in case
2211 some external kernel module needs one of these symbols anyway. If you
2212 encounter such a case in your module, consider if you are actually
2213 using the right API. (rationale: since nobody in the kernel is using
2214 this in a module, there is a pretty good chance it's actually the
2215 wrong interface to use). If you really need the symbol, please send a
2216 mail to the linux kernel mailing list mentioning the symbol and why
2217 you really need it, and what the merge plan to the mainline kernel for
2218 your module is.
2219
Nicolas Pitredbacb0e2016-01-26 21:51:05 -05002220config TRIM_UNUSED_KSYMS
2221 bool "Trim unused exported kernel symbols"
Masahiro Yamadad189c2a2019-09-09 20:04:07 +09002222 depends on !UNUSED_SYMBOLS
Nicolas Pitredbacb0e2016-01-26 21:51:05 -05002223 help
2224 The kernel and some modules make many symbols available for
2225 other modules to use via EXPORT_SYMBOL() and variants. Depending
2226 on the set of modules being selected in your kernel configuration,
2227 many of those exported symbols might never be used.
2228
2229 This option allows for unused exported symbols to be dropped from
2230 the build. In turn, this provides the compiler more opportunities
2231 (especially when using LTO) for optimizing the code and reducing
2232 binary size. This might have some security advantages as well.
2233
Valdis Kletnieksf1cb6372016-08-02 14:07:27 -07002234 If unsure, or if you need to build out-of-tree modules, say N.
Nicolas Pitredbacb0e2016-01-26 21:51:05 -05002235
Quentin Perret1518c632020-02-28 17:20:13 +00002236config UNUSED_KSYMS_WHITELIST
2237 string "Whitelist of symbols to keep in ksymtab"
2238 depends on TRIM_UNUSED_KSYMS
2239 help
2240 By default, all unused exported symbols will be un-exported from the
2241 build when TRIM_UNUSED_KSYMS is selected.
2242
2243 UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept
2244 exported at all times, even in absence of in-tree users. The value to
2245 set here is the path to a text file containing the list of symbols,
2246 one per line. The path can be absolute, or relative to the kernel
2247 source tree.
2248
Robert P. J. Day0b0de142008-08-04 13:31:32 -04002249endif # MODULES
2250
Peter Zijlstra6c9692e2015-05-27 11:09:37 +09302251config MODULES_TREE_LOOKUP
2252 def_bool y
2253 depends on PERF_EVENTS || TRACING
2254
Rusty Russell98a79d62008-12-13 21:19:41 +10302255config INIT_ALL_POSSIBLE
2256 bool
2257 help
Rusty Russell5f054e32012-03-29 15:38:31 +10302258 Back when each arch used to define their own cpu_online_mask and
2259 cpu_possible_mask, some of them chose to initialize cpu_possible_mask
Rusty Russell98a79d62008-12-13 21:19:41 +10302260 with all 1s, and others with all 0s. When they were centralised,
2261 it was better to provide this option than to break all the archs
Matt LaPlante692105b2009-01-26 11:12:25 +01002262 and have several arch maintainers pursuing me down dark alleys.
Rusty Russell98a79d62008-12-13 21:19:41 +10302263
Jens Axboe3a65dfe2005-11-04 08:43:35 +01002264source "block/Kconfig"
Avi Kivitye98c3202007-10-16 23:27:31 -07002265
2266config PREEMPT_NOTIFIERS
2267 bool
Paul E. McKenneye260be62008-01-25 21:08:24 +01002268
Steffen Klassert16295be2010-01-06 19:47:10 +11002269config PADATA
2270 depends on SMP
2271 bool
2272
David Howells4520c6a2012-09-21 23:31:13 +01002273config ASN1
2274 tristate
2275 help
2276 Build a simple ASN.1 grammar compiler that produces a bytecode output
2277 that can be interpreted by the ASN.1 stream decoder and used to
2278 inform it as to what tags are to be expected in a stream and what
2279 functions to call on what tags.
2280
Thomas Gleixner6beb0002009-11-09 15:21:34 +00002281source "kernel/Kconfig.locks"
Mathieu Desnoyerse61938a2018-01-29 15:20:15 -05002282
2283config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
2284 bool
Dominik Brodowski1bd21c62018-04-05 11:53:01 +02002285
2286# It may be useful for an architecture to override the definitions of the
Dominik Brodowski7303e302018-04-05 11:53:03 +02002287# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h>
2288# and the COMPAT_ variants in <linux/compat.h>, in particular to use a
2289# different calling convention for syscalls. They can also override the
2290# macros for not-implemented syscalls in kernel/sys_ni.c and
2291# kernel/time/posix-stubs.c. All these overrides need to be available in
2292# <asm/syscall_wrapper.h>.
Dominik Brodowski1bd21c62018-04-05 11:53:01 +02002293config ARCH_HAS_SYSCALL_WRAPPER
2294 def_bool n