1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only 28b59cd81SMasahiro Yamadaconfig CC_VERSION_TEXT 38b59cd81SMasahiro Yamada string 48b59cd81SMasahiro Yamada default "$(CC_VERSION_TEXT)" 58b59cd81SMasahiro Yamada help 68b59cd81SMasahiro Yamada This is used in unclear ways: 78b59cd81SMasahiro Yamada 88b59cd81SMasahiro Yamada - Re-run Kconfig when the compiler is updated 98b59cd81SMasahiro Yamada The 'default' property references the environment variable, 108b59cd81SMasahiro Yamada CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd. 118b59cd81SMasahiro Yamada When the compiler is updated, Kconfig will be invoked. 128b59cd81SMasahiro Yamada 13f9c8bc46SBhaskar Chowdhury - Ensure full rebuild when the compiler is updated 14ce6ed1c4SMasahiro Yamada include/linux/compiler-version.h contains this option in the comment 150e0345b7SAlexey Dobriyan line so fixdep adds include/config/CC_VERSION_TEXT into the 16ce6ed1c4SMasahiro Yamada auto-generated dependency. When the compiler is updated, syncconfig 17ce6ed1c4SMasahiro Yamada will touch it and then every file will be rebuilt. 188b59cd81SMasahiro Yamada 19a4353898SMasahiro Yamadaconfig CC_IS_GCC 20aec6c60aSMasahiro Yamada def_bool $(success,test "$(cc-name)" = GCC) 21a4353898SMasahiro Yamada 22a4353898SMasahiro Yamadaconfig GCC_VERSION 23a4353898SMasahiro Yamada int 24aec6c60aSMasahiro Yamada default $(cc-version) if CC_IS_GCC 25a4353898SMasahiro Yamada default 0 26a4353898SMasahiro Yamada 27469cb737SMasahiro Yamadaconfig CC_IS_CLANG 28aec6c60aSMasahiro Yamada def_bool $(success,test "$(cc-name)" = Clang) 29b744b43fSSami Tolvanen 30469cb737SMasahiro Yamadaconfig CLANG_VERSION 31469cb737SMasahiro Yamada int 32aec6c60aSMasahiro Yamada default $(cc-version) if CC_IS_CLANG 33aec6c60aSMasahiro Yamada default 0 34469cb737SMasahiro Yamada 35ba64beb1SMasahiro Yamadaconfig AS_IS_GNU 36ba64beb1SMasahiro Yamada def_bool $(success,test "$(as-name)" = GNU) 37ba64beb1SMasahiro Yamada 38ba64beb1SMasahiro Yamadaconfig AS_IS_LLVM 39ba64beb1SMasahiro Yamada def_bool $(success,test "$(as-name)" = LLVM) 40ba64beb1SMasahiro Yamada 41ba64beb1SMasahiro Yamadaconfig AS_VERSION 42ba64beb1SMasahiro Yamada int 43ba64beb1SMasahiro Yamada # Use clang version if this is the integrated assembler 44ba64beb1SMasahiro Yamada default CLANG_VERSION if AS_IS_LLVM 45ba64beb1SMasahiro Yamada default $(as-version) 46ba64beb1SMasahiro Yamada 4702aff859SMasahiro Yamadaconfig LD_IS_BFD 4802aff859SMasahiro Yamada def_bool $(success,test "$(ld-name)" = BFD) 4902aff859SMasahiro Yamada 5002aff859SMasahiro Yamadaconfig LD_VERSION 5102aff859SMasahiro Yamada int 5202aff859SMasahiro Yamada default $(ld-version) if LD_IS_BFD 5302aff859SMasahiro Yamada default 0 5402aff859SMasahiro Yamada 5502aff859SMasahiro Yamadaconfig LD_IS_LLD 5602aff859SMasahiro Yamada def_bool $(success,test "$(ld-name)" = LLD) 57c65eacbeSAndy Lutomirski 58d5750cd3SNathan Chancellorconfig LLD_VERSION 59d5750cd3SNathan Chancellor int 6002aff859SMasahiro Yamada default $(ld-version) if LD_IS_LLD 6102aff859SMasahiro Yamada default 0 62d5750cd3SNathan Chancellor 636e74c6b5SMiguel Ojedaconfig RUSTC_VERSION 646e74c6b5SMiguel Ojeda int 65af0121c2SGary Guo default $(rustc-version) 666e74c6b5SMiguel Ojeda help 676e74c6b5SMiguel Ojeda It does not depend on `RUST` since that one may need to use the version 686e74c6b5SMiguel Ojeda in a `depends on`. 696e74c6b5SMiguel Ojeda 702f7ab126SMiguel Ojedaconfig RUST_IS_AVAILABLE 712f7ab126SMiguel Ojeda def_bool $(success,$(srctree)/scripts/rust_is_available.sh) 722f7ab126SMiguel Ojeda help 732f7ab126SMiguel Ojeda This shows whether a suitable Rust toolchain is available (found). 742f7ab126SMiguel Ojeda 752f7ab126SMiguel Ojeda Please see Documentation/rust/quick-start.rst for instructions on how 76eacf96d2SColin Ian King to satisfy the build requirements of Rust support. 772f7ab126SMiguel Ojeda 782f7ab126SMiguel Ojeda In particular, the Makefile target 'rustavailable' is useful to check 792f7ab126SMiguel Ojeda why the Rust toolchain is not being detected. 802f7ab126SMiguel Ojeda 81af0121c2SGary Guoconfig RUSTC_LLVM_VERSION 82af0121c2SGary Guo int 83af0121c2SGary Guo default $(rustc-llvm-version) 84af0121c2SGary Guo 851a927fd3SMasahiro Yamadaconfig CC_CAN_LINK 869371f86eSMasahiro Yamada bool 87f67695c9SElliot Berman default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag)) if 64BIT 88f67695c9SElliot Berman default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag)) 891a927fd3SMasahiro Yamada 90f2f6a8e8SMark Rutland# Fixed in GCC 14, 13.3, 12.4 and 11.5 91f2f6a8e8SMark Rutland# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113921 92f2f6a8e8SMark Rutlandconfig GCC_ASM_GOTO_OUTPUT_BROKEN 93f2f6a8e8SMark Rutland bool 94f2f6a8e8SMark Rutland depends on CC_IS_GCC 95f2f6a8e8SMark Rutland default y if GCC_VERSION < 110500 96f2f6a8e8SMark Rutland default y if GCC_VERSION >= 120000 && GCC_VERSION < 120400 97f2f6a8e8SMark Rutland default y if GCC_VERSION >= 130000 && GCC_VERSION < 130300 98f2f6a8e8SMark Rutland 99587f1701SNick Desaulniersconfig CC_HAS_ASM_GOTO_OUTPUT 100f2f6a8e8SMark Rutland def_bool y 101f2f6a8e8SMark Rutland depends on !GCC_ASM_GOTO_OUTPUT_BROKEN 102f2f6a8e8SMark Rutland # Detect basic support 103587f1701SNick Desaulniers depends on $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null) 1041aa0e8b1SSean Christopherson # Detect clang (< v17) scoped label issues 1051aa0e8b1SSean Christopherson depends on $(success,echo 'void b(void **);void* c(void);int f(void){{asm goto(""::::l0);return 0;l0:return 1;}void *x __attribute__((cleanup(b)))=c();{asm goto(""::::l1);return 2;l1:return 3;}}' | $(CC) -x c - -c -o /dev/null) 1061aa0e8b1SSean Christopherson 107534bd703SAlexandre Belloniconfig CC_HAS_ASM_GOTO_TIED_OUTPUT 1081aa0e8b1SSean Christopherson depends on CC_HAS_ASM_GOTO_OUTPUT 1095cf896fbSPeter Collingbourne # Detect buggy gcc and clang, fixed in gcc-11 clang-14. 1102d122942SWill Deacon def_bool $(success,echo 'int foo(int *x) { asm goto (".long (%l[bar]) - .": "+m"(*x) ::: bar); return *x; bar: return 0; }' | $CC -x c - -c -o /dev/null) 1115cf896fbSPeter Collingbourne 112eb111869SRasmus Villemoesconfig TOOLS_SUPPORT_RELR 113eb111869SRasmus Villemoes def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) 114eb111869SRasmus Villemoes 11551c2ee6dSNick Desaulniersconfig CC_HAS_ASM_INLINE 11651c2ee6dSNick Desaulniers def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 11751c2ee6dSNick Desaulniers 118f06e108aSJan Hendrik Farrconfig CC_HAS_ASSUME 1195106c650SJan Hendrik Farr bool 12086a9b125SNathan Chancellor # clang needs to be at least 19.1.0 since the meaning of the assume 12186a9b125SNathan Chancellor # attribute changed: 12286a9b125SNathan Chancellor # https://github.com/llvm/llvm-project/commit/c44fa3e8a9a44c2e9a575768a3c185354b9f6c17 12386a9b125SNathan Chancellor default y if CC_IS_CLANG && CLANG_VERSION >= 190100 12486a9b125SNathan Chancellor # supported since gcc 13.1.0 1255106c650SJan Hendrik Farr # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106654 1265106c650SJan Hendrik Farr default y if CC_IS_GCC && GCC_VERSION >= 130100 1275106c650SJan Hendrik Farr 128f06e108aSJan Hendrik Farrconfig CC_HAS_NO_PROFILE_FN_ATTR 129b688f369SKees Cook def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror) 130b688f369SKees Cook 131b688f369SKees Cookconfig CC_HAS_COUNTED_BY 132e7607f7dSNathan Chancellor bool 133e7607f7dSNathan Chancellor # clang needs to be at least 20.1.0 to avoid potential crashes 134e7607f7dSNathan Chancellor # when building structures that contain __counted_by 135e7607f7dSNathan Chancellor # https://github.com/ClangBuiltLinux/linux/issues/2114 136e7607f7dSNathan Chancellor # https://github.com/llvm/llvm-project/commit/160fb1121cdf703c3ef5e61fb26c5659eb581489 13747cb6bf7SXiangfei Ding default y if CC_IS_CLANG && CLANG_VERSION >= 200100 13847cb6bf7SXiangfei Ding # supported since gcc 15.1.0 13947cb6bf7SXiangfei Ding # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896 14036174d16SMiguel Ojeda default y if CC_IS_GCC && GCC_VERSION >= 150100 14136174d16SMiguel Ojeda 14236174d16SMiguel Ojedaconfig CC_HAS_MULTIDIMENSIONAL_NONSTRING 1437129ea6eSMiguel Ojeda def_bool $(success,echo 'char tag[][4] __attribute__((__nonstring__)) = { };' | $(CC) $(CLANG_FLAGS) -x c - -c -o /dev/null -Werror) 1447129ea6eSMiguel Ojeda 1457129ea6eSMiguel Ojedaconfig LD_CAN_USE_KEEP_IN_OVERLAY 1460aa2b78cSBoqun Feng # ld.lld prior to 21.0.0 did not support KEEP within an overlay description 1470aa2b78cSBoqun Feng # https://github.com/llvm/llvm-project/pull/130661 1480aa2b78cSBoqun Feng def_bool LD_IS_BFD || LLD_VERSION >= 210000 149*c09461a0SAlice Ryhl 150*c09461a0SAlice Ryhlconfig RUSTC_HAS_COERCE_POINTEE 151*c09461a0SAlice Ryhl def_bool RUSTC_VERSION >= 108400 152613fe169SNathan Chancellor 153613fe169SNathan Chancellorconfig RUSTC_HAS_SPAN_FILE 154613fe169SNathan Chancellor def_bool RUSTC_VERSION >= 108800 155613fe169SNathan Chancellor 156b99b87f7SPeter Oberparleiterconfig RUSTC_HAS_UNNECESSARY_TRANSMUTES 157b99b87f7SPeter Oberparleiter def_bool RUSTC_VERSION >= 108800 158b99b87f7SPeter Oberparleiter 159e360adbeSPeter Zijlstraconfig RUSTC_HAS_FILE_WITH_NUL 160fd0a68a2STejun Heo def_bool RUSTC_VERSION >= 108900 161e360adbeSPeter Zijlstra 16210916706SShile Zhangconfig RUSTC_HAS_FILE_AS_C_STR 1631dbdc6f1SDavid Daney def_bool RUSTC_VERSION >= 109100 1641dbdc6f1SDavid Daney 165c65eacbeSAndy Lutomirskiconfig PAHOLE_VERSION 166c65eacbeSAndy Lutomirski int 167c65eacbeSAndy Lutomirski default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE)) 168c65eacbeSAndy Lutomirski 169c65eacbeSAndy Lutomirskiconfig CONSTRUCTORS 170c65eacbeSAndy Lutomirski bool 171c65eacbeSAndy Lutomirski 172c6c314a6SAndy Lutomirskiconfig IRQ_WORK 173c6c314a6SAndy Lutomirski def_bool y if SMP 174c6c314a6SAndy Lutomirski 175ff0cfc66SAl Boldiconfig BUILDTIME_TABLE_SORT 1761da177e4SLinus Torvalds bool 1771da177e4SLinus Torvalds 1781da177e4SLinus Torvaldsconfig THREAD_INFO_IN_TASK 179fefbeed8SAndrew Morton bool 180fefbeed8SAndrew Morton help 181fefbeed8SAndrew Morton Select this to move thread_info off the stack into task_struct. To 182fefbeed8SAndrew Morton make this work, an arch will need to remove all thread_info fields 1831da177e4SLinus Torvalds except flags and fix any runtime bugs. 1841da177e4SLinus Torvalds 1851da177e4SLinus Torvalds One subtle change that will be needed is to use try_get_task_stack() 1861da177e4SLinus Torvalds and put_task_stack() in save_thread_stack_tsk() and get_wchan(). 1871da177e4SLinus Torvalds 1881da177e4SLinus Torvaldsmenu "General setup" 1891da177e4SLinus Torvalds 1901da177e4SLinus Torvaldsconfig BROKEN 191dd673bcaSAdrian Bunk bool 192dd673bcaSAdrian Bunk help 1931da177e4SLinus Torvalds This option allows you to choose whether you want to try to 19434ad92c2SRandy Dunlap compile (and fix) old drivers that haven't been updated to 19534ad92c2SRandy Dunlap new infrastructure. 1961da177e4SLinus Torvalds 1974bb16672SJiri Slabyconfig BROKEN_ON_SMP 1984bb16672SJiri Slaby bool 199ea29b20aSMasahiro Yamada depends on BROKEN || !SMP 2004bb16672SJiri Slaby default y 2014bb16672SJiri Slaby 2024bb16672SJiri Slabyconfig INIT_ENV_ARG_LIMIT 2034bb16672SJiri Slaby int 2044bb16672SJiri Slaby default 32 if !UML 2054bb16672SJiri Slaby default 128 if UML 2064bb16672SJiri Slaby help 2074bb16672SJiri Slaby Maximum of each of the number of arguments and environment 2084bb16672SJiri Slaby variables passed to init from the kernel command line. 2094bb16672SJiri Slaby 2104bb16672SJiri Slabyconfig COMPILE_TEST 2113fe617ccSLinus Torvalds bool "Compile also drivers which will not load" 2123fe617ccSLinus Torvalds depends on HAS_IOMEM 213b339ec9cSMarco Elver help 2143fe617ccSLinus Torvalds Some drivers can be compiled on a different platform than they are 2153fe617ccSLinus Torvalds intended to be run on. Despite they cannot be loaded there (or even 2162f7ab126SMiguel Ojeda when they load they cannot be used due to missing HW support), 217e1789d7cSXin Li developers still, opposing to distributors, might want to build such 218e1789d7cSXin Li drivers to compile-test them. 219e1789d7cSXin Li 2203fe617ccSLinus Torvalds If you are a developer and want to build everything available, say Y 221e1789d7cSXin Li here. If you are a user/distributor, say N here to exclude useless 222e1789d7cSXin Li drivers to be distributed. 2233fe617ccSLinus Torvalds 2243fe617ccSLinus Torvaldsconfig WERROR 2253fe617ccSLinus Torvalds bool "Compile the kernel with warnings as errors" 2263fe617ccSLinus Torvalds default COMPILE_TEST 2273fe617ccSLinus Torvalds help 228d6fc9fcbSMasahiro Yamada A kernel build should not cause any compiler warnings, and this 229d6fc9fcbSMasahiro Yamada enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags 230fcbb8461SMasahiro Yamada to enforce that rule by default. Certain warnings from other tools 231d6fc9fcbSMasahiro Yamada such as the linker may be upgraded to errors with this option as 232d6fc9fcbSMasahiro Yamada well. 233d6fc9fcbSMasahiro Yamada 234d6fc9fcbSMasahiro Yamada However, if you have a new (or very old) compiler or linker with odd 235d6fc9fcbSMasahiro Yamada and unusual warnings, or you have some architecture with problems, 236d6fc9fcbSMasahiro Yamada you may need to disable this config option in order to 237d6fc9fcbSMasahiro Yamada successfully build the kernel. 2381da177e4SLinus Torvalds 2391da177e4SLinus Torvalds If in doubt, say Y. 2401da177e4SLinus Torvalds 2411da177e4SLinus Torvaldsconfig UAPI_HEADER_TEST 2421da177e4SLinus Torvalds bool "Compile test UAPI headers" 2431da177e4SLinus Torvalds depends on HEADERS_INSTALL && CC_CAN_LINK 2441da177e4SLinus Torvalds help 2451da177e4SLinus Torvalds Compile test headers exported to user-space to ensure they are 2461da177e4SLinus Torvalds self-contained, i.e. compilable as standalone units. 2471da177e4SLinus Torvalds 248aaebf433SRyan Anderson If you are a developer or tester and want to ensure the exported 249aaebf433SRyan Anderson headers are self-contained, say Y here. Otherwise, choose N. 250aaebf433SRyan Anderson 251ac3339baSAlexey Dobriyanconfig LOCALVERSION 252aaebf433SRyan Anderson string "Local version - append to kernel release" 253aaebf433SRyan Anderson help 2546e5a5420SRobert P. J. Day Append an extra string to the end of your kernel version. 2556e5a5420SRobert P. J. Day This will show up when you type uname, for example. 256aaebf433SRyan Anderson The string you set here will be appended after the contents of 257aaebf433SRyan Anderson any files with a filename matching localversion* in your 2586e5a5420SRobert P. J. Day object and source tree, in that order. Your total string can 259aaebf433SRyan Anderson be a maximum of 64 characters. 2606e5a5420SRobert P. J. Day 261aaebf433SRyan Andersonconfig LOCALVERSION_AUTO 2620f9c608dSRasmus Villemoes bool "Automatically append version information to the version string" 2636e5a5420SRobert P. J. Day default y 2646e5a5420SRobert P. J. Day depends on !COMPILE_TEST 2656e5a5420SRobert P. J. Day help 2666e5a5420SRobert P. J. Day This will try to automatically determine if the current tree is a 2676e5a5420SRobert P. J. Day release tree by looking for git tags that belong to the current 268aaebf433SRyan Anderson top of tree revision. 2699afb719eSLaura Abbott 2709afb719eSLaura Abbott A string of the format -gxxxxxxxx will be added to the localversion 2719afb719eSLaura Abbott if a git-based tree is found. The string generated by this will be 2729afb719eSLaura Abbott appended after any matching localversion* files, and after the value 2739afb719eSLaura Abbott set in CONFIG_LOCALVERSION. 2749afb719eSLaura Abbott 2759afb719eSLaura Abbott (The actual string used here is the first 12 characters produced 2769afb719eSLaura Abbott by running the command: 2779afb719eSLaura Abbott 2782e9f3bddSH. Peter Anvin $ git rev-parse --verify HEAD 2792e9f3bddSH. Peter Anvin 2802e9f3bddSH. Peter Anvin which is done within the script "scripts/setlocalversion".) 2812e9f3bddSH. Peter Anvin 2822e9f3bddSH. Peter Anvinconfig BUILD_SALT 2832e9f3bddSH. Peter Anvin string "Build ID Salt" 2842e9f3bddSH. Peter Anvin default "" 2852e9f3bddSH. Peter Anvin help 2862e9f3bddSH. Peter Anvin The build ID is used to link binaries and their debug info. Setting 2873ebe1243SLasse Collin this option will use the value in the calculation of the build id. 2883ebe1243SLasse Collin This is mostly useful for distributions which want to ensure the 2893ebe1243SLasse Collin build is unique between builds. It's safe to leave the default. 2907dd65febSAlbin Tonnerre 2917dd65febSAlbin Tonnerreconfig HAVE_KERNEL_GZIP 2927dd65febSAlbin Tonnerre bool 293e76e1fdfSKyungsik Lee 294e76e1fdfSKyungsik Leeconfig HAVE_KERNEL_BZIP2 295e76e1fdfSKyungsik Lee bool 29648f7ddf7SNick Terrell 29748f7ddf7SNick Terrellconfig HAVE_KERNEL_LZMA 29848f7ddf7SNick Terrell bool 299f16466afSVasily Gorbik 300f16466afSVasily Gorbikconfig HAVE_KERNEL_XZ 301f16466afSVasily Gorbik bool 30230d65dbfSAlain Knaff 30330d65dbfSAlain Knaffconfig HAVE_KERNEL_LZO 30430d65dbfSAlain Knaff bool 30548f7ddf7SNick Terrell 30630d65dbfSAlain Knaffconfig HAVE_KERNEL_LZ4 30730d65dbfSAlain Knaff bool 30830d65dbfSAlain Knaff 30930d65dbfSAlain Knaffconfig HAVE_KERNEL_ZSTD 31030d65dbfSAlain Knaff bool 31130d65dbfSAlain Knaff 31230d65dbfSAlain Knaffconfig HAVE_KERNEL_UNCOMPRESSED 31330d65dbfSAlain Knaff bool 31430d65dbfSAlain Knaff 31530d65dbfSAlain Knaffchoice 31630d65dbfSAlain Knaff prompt "Kernel compression mode" 31730d65dbfSAlain Knaff default KERNEL_GZIP 31830d65dbfSAlain Knaff depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_ZSTD || HAVE_KERNEL_UNCOMPRESSED 31930d65dbfSAlain Knaff help 32030d65dbfSAlain Knaff The linux kernel is a kind of self-extracting executable. 32130d65dbfSAlain Knaff Several compression algorithms are available, which differ 32230d65dbfSAlain Knaff in efficiency, compression and decompression speed. 32330d65dbfSAlain Knaff Compression speed is only relevant when building a kernel. 32430d65dbfSAlain Knaff Decompression speed is relevant at each boot. 32530d65dbfSAlain Knaff 3262e9f3bddSH. Peter Anvin If you have any problems with bzip2 or lzma compressed 32730d65dbfSAlain Knaff kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 3287dd65febSAlbin Tonnerre version of this functionality (bzip2 only), for 2.4, was 3297dd65febSAlbin Tonnerre supplied by Christian Ludwig) 33030d65dbfSAlain Knaff 33130d65dbfSAlain Knaff High compression options are mostly useful for users, who 33230d65dbfSAlain Knaff are low on disk space (embedded systems), but for whom ram 3332e9f3bddSH. Peter Anvin size matters less. 33430d65dbfSAlain Knaff 33530d65dbfSAlain Knaff If in doubt, select 'gzip' 3360a4dd35cSRandy Dunlap 3372e9f3bddSH. Peter Anvinconfig KERNEL_GZIP 3382e9f3bddSH. Peter Anvin bool "Gzip" 3392e9f3bddSH. Peter Anvin depends on HAVE_KERNEL_GZIP 34030d65dbfSAlain Knaff help 34130d65dbfSAlain Knaff The old and tried gzip compression. It provides a good balance 34230d65dbfSAlain Knaff between compression ratio and decompression speed. 3432e9f3bddSH. Peter Anvin 34430d65dbfSAlain Knaffconfig KERNEL_BZIP2 3450a4dd35cSRandy Dunlap bool "Bzip2" 3460a4dd35cSRandy Dunlap depends on HAVE_KERNEL_BZIP2 3470a4dd35cSRandy Dunlap help 34830d65dbfSAlain Knaff Its compression ratio and speed is intermediate. 3493ebe1243SLasse Collin Decompression speed is slowest among the choices. The kernel 3503ebe1243SLasse Collin size is about 10% smaller with bzip2, in comparison to gzip. 3513ebe1243SLasse Collin Bzip2 uses a large amount of memory. For modern kernels you 3523ebe1243SLasse Collin will need at least 8MB RAM or more for booting. 3533ebe1243SLasse Collin 3543ebe1243SLasse Collinconfig KERNEL_LZMA 3553ebe1243SLasse Collin bool "LZMA" 3563ebe1243SLasse Collin depends on HAVE_KERNEL_LZMA 3577472ff8aSLasse Collin help 3587472ff8aSLasse Collin This compression algorithm's ratio is best. Decompression speed 3597472ff8aSLasse Collin is between gzip and bzip2. Compression is slowest. 3603ebe1243SLasse Collin The kernel size is about 33% smaller with LZMA in comparison to gzip. 3613ebe1243SLasse Collin 3623ebe1243SLasse Collinconfig KERNEL_XZ 3633ebe1243SLasse Collin bool "XZ" 3643ebe1243SLasse Collin depends on HAVE_KERNEL_XZ 3657dd65febSAlbin Tonnerre help 3667dd65febSAlbin Tonnerre XZ uses the LZMA2 algorithm and instruction set specific 3677dd65febSAlbin Tonnerre BCJ filters which can improve compression ratio of executable 3687dd65febSAlbin Tonnerre code. The size of the kernel is about 30% smaller with XZ in 3690a4dd35cSRandy Dunlap comparison to gzip. On architectures for which there is a BCJ 370681b3049SStephan Sperber filter (i386, x86_64, ARM, ARM64, RISC-V, big endian PowerPC, 3717dd65febSAlbin Tonnerre and SPARC), XZ will create a few percent smaller kernel than 3727dd65febSAlbin Tonnerre plain LZMA. 373e76e1fdfSKyungsik Lee 374e76e1fdfSKyungsik Lee The speed is about the same as with LZMA: The decompression 375e76e1fdfSKyungsik Lee speed of XZ is better than that of bzip2 but worse than gzip 376e76e1fdfSKyungsik Lee and LZO. Compression is slow. 377e76e1fdfSKyungsik Lee 378e76e1fdfSKyungsik Leeconfig KERNEL_LZO 379e76e1fdfSKyungsik Lee bool "LZO" 380e76e1fdfSKyungsik Lee depends on HAVE_KERNEL_LZO 381e76e1fdfSKyungsik Lee help 382e76e1fdfSKyungsik Lee Its compression ratio is the poorest among the choices. The kernel 383e76e1fdfSKyungsik Lee size is about 10% bigger than gzip; however its speed 384e76e1fdfSKyungsik Lee (both compression and decompression) is the fastest. 38548f7ddf7SNick Terrell 38648f7ddf7SNick Terrellconfig KERNEL_LZ4 38748f7ddf7SNick Terrell bool "LZ4" 38848f7ddf7SNick Terrell depends on HAVE_KERNEL_LZ4 38948f7ddf7SNick Terrell help 39048f7ddf7SNick Terrell LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. 39148f7ddf7SNick Terrell A preliminary version of LZ4 de/compression tool is available at 39248f7ddf7SNick Terrell <https://code.google.com/p/lz4/>. 39348f7ddf7SNick Terrell 39448f7ddf7SNick Terrell Its compression ratio is worse than LZO. The size of the kernel 395f16466afSVasily Gorbik is about 8% bigger than LZO. But the decompression speed is 396f16466afSVasily Gorbik faster than LZO. 397f16466afSVasily Gorbik 398f16466afSVasily Gorbikconfig KERNEL_ZSTD 399f16466afSVasily Gorbik bool "ZSTD" 400f16466afSVasily Gorbik depends on HAVE_KERNEL_ZSTD 401f16466afSVasily Gorbik help 402f16466afSVasily Gorbik ZSTD is a compression algorithm targeting intermediate compression 403f16466afSVasily Gorbik with fast decompression speed. It will compress better than GZIP and 404f16466afSVasily Gorbik decompress around the same speed as LZO, but slower than LZ4. You 40530d65dbfSAlain Knaff will need at least 192 KB RAM or more for booting. The zstd command 40630d65dbfSAlain Knaff line tool is required for compression. 407ada4ab7aSChris Down 408ada4ab7aSChris Downconfig KERNEL_UNCOMPRESSED 409ada4ab7aSChris Down bool "None" 410ada4ab7aSChris Down depends on HAVE_KERNEL_UNCOMPRESSED 411ada4ab7aSChris Down help 412ada4ab7aSChris Down Produce uncompressed kernel image. This option is usually not what 413ada4ab7aSChris Down you want. It is useful for debugging the kernel in slow simulation 414ada4ab7aSChris Down environments, where decompressing and moving the kernel is awfully 415ada4ab7aSChris Down slow. This option allows early boot code to skip the decompressor 416ada4ab7aSChris Down and jump right at uncompressed kernel image. 417bd5dc17bSJosh Triplett 418bd5dc17bSJosh Triplettendchoice 419bd5dc17bSJosh Triplett 420bd5dc17bSJosh Triplettconfig DEFAULT_INIT 421bd5dc17bSJosh Triplett string "Default init path" 422bd5dc17bSJosh Triplett default "" 423bd5dc17bSJosh Triplett help 424bd5dc17bSJosh Triplett This option determines the default init for the system if no init= 425bd5dc17bSJosh Triplett option is passed on the kernel command line. If the requested path is 4261da177e4SLinus Torvalds not present, we will still then move on to attempting further 4271da177e4SLinus Torvalds locations (e.g. /sbin/init, etc). If this is empty, we will just use 428a7f7f624SMasahiro Yamada the fallback list when init= is not passed. 4291da177e4SLinus Torvalds 4301da177e4SLinus Torvaldsconfig DEFAULT_HOSTNAME 4311da177e4SLinus Torvalds string "Default hostname" 4321da177e4SLinus Torvalds default "(none)" 4331da177e4SLinus Torvalds help 4341da177e4SLinus Torvalds This option determines the default system hostname before userspace 4351da177e4SLinus Torvalds calls sethostname(2). The kernel traditionally uses "(none)" here, 4361da177e4SLinus Torvalds but you may wish to use a different default here to make a minimal 4371da177e4SLinus Torvalds system more usable with less configuration. 4381da177e4SLinus Torvalds 4391da177e4SLinus Torvaldsconfig SYSVIPC 4401da177e4SLinus Torvalds bool "System V IPC" 441a5494dcdSEric W. Biederman help 442a5494dcdSEric W. Biederman Inter Process Communication is a suite of library functions and 443a5494dcdSEric W. Biederman system calls which let processes (running programs) synchronize and 444a5494dcdSEric W. Biederman exchange information. It is generally considered to be a good thing, 445a5494dcdSEric W. Biederman and some programs won't run unless you say Y here. In particular, if 446a5494dcdSEric W. Biederman you want to run the DOS emulator dosemu under Linux (read the 4470cbed0eeSGuo Ren DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 4480cbed0eeSGuo Ren you'll need to say Y here. 4490cbed0eeSGuo Ren 4500cbed0eeSGuo Ren You can find documentation about IPC with "info ipc" and also in 4511da177e4SLinus Torvalds section 6.4 of the Linux Programmer's Guide, available from 4521da177e4SLinus Torvalds <http://www.tldp.org/guides.html>. 45319c92399SKees Cook 454a7f7f624SMasahiro Yamadaconfig SYSVIPC_SYSCTL 4551da177e4SLinus Torvalds bool 4561da177e4SLinus Torvalds depends on SYSVIPC 4571da177e4SLinus Torvalds depends on SYSCTL 4581da177e4SLinus Torvalds default y 459b0e37650SRobert P. J. Day 4601da177e4SLinus Torvaldsconfig SYSVIPC_COMPAT 4611da177e4SLinus Torvalds def_bool y 4621da177e4SLinus Torvalds depends on COMPAT && SYSVIPC 4631da177e4SLinus Torvalds 4641da177e4SLinus Torvaldsconfig POSIX_MQUEUE 4651da177e4SLinus Torvalds bool "POSIX Message Queues" 4661da177e4SLinus Torvalds depends on NET 467bdc8e5f8SSerge E. Hallyn help 468bdc8e5f8SSerge E. Hallyn POSIX variant of message queues is a part of IPC. In POSIX message 469bdc8e5f8SSerge E. Hallyn queues every message has a priority which decides about succession 470bdc8e5f8SSerge E. Hallyn of receiving it by a process. If you want to compile and run 471bdc8e5f8SSerge E. Hallyn programs written e.g. for Solaris with use of its POSIX message 472bdc8e5f8SSerge E. Hallyn queues (functions mq_*) say Y here. 473c73be61cSDavid Howells 474c73be61cSDavid Howells POSIX message queues are visible as a filesystem called 'mqueue' 475c73be61cSDavid Howells and can be mounted somewhere if you want to do filesystem 476c73be61cSDavid Howells operations on message queues. 477c73be61cSDavid Howells 478c73be61cSDavid Howells If unsure, say Y. 479c73be61cSDavid Howells 480c73be61cSDavid Howellsconfig POSIX_MQUEUE_SYSCTL 481c73be61cSDavid Howells bool 482c73be61cSDavid Howells depends on POSIX_MQUEUE 483c02b872aSMauro Carvalho Chehab depends on SYSCTL 484c73be61cSDavid Howells default y 485226b4ccdSKonstantin Khlebnikov 486226b4ccdSKonstantin Khlebnikovconfig WATCH_QUEUE 487226b4ccdSKonstantin Khlebnikov bool "General notification queue" 488226b4ccdSKonstantin Khlebnikov default n 489226b4ccdSKonstantin Khlebnikov help 490226b4ccdSKonstantin Khlebnikov 491226b4ccdSKonstantin Khlebnikov This is a general notification queue for the kernel to pass events to 492a2a368d9SGeert Uytterhoeven userspace by splicing them into pipes. It can be used in conjunction 493226b4ccdSKonstantin Khlebnikov with watches for key/keyring change notifications and device 494226b4ccdSKonstantin Khlebnikov notifications. 4951da177e4SLinus Torvalds 4961da177e4SLinus Torvalds See Documentation/core-api/watch_queue.rst 497804a6a49SChris Wright 4981da177e4SLinus Torvaldsconfig CROSS_MEMORY_ATTACH 4991da177e4SLinus Torvalds bool "Enable process_vm_readv/writev syscalls" 5001da177e4SLinus Torvalds depends on MMU 501cb74ed27SPaul Moore default y 502cb74ed27SPaul Moore help 5031da177e4SLinus Torvalds Enabling this option adds the system calls process_vm_readv and 5047a017721SAKASHI Takahiro process_vm_writev which allow a process with the correct privileges 5057a017721SAKASHI Takahiro to directly read from or write to another process' address space. 5067a017721SAKASHI Takahiro See the man page for more details. 5071da177e4SLinus Torvalds 508cb74ed27SPaul Mooreconfig AUDIT 5097a017721SAKASHI Takahiro bool "Auditing support" 51028a3a7ebSEric Paris depends on NET 51174c3cbe3SAl Viro help 512d9817ebeSThomas Gleixner Enable auditing infrastructure that can be used with another 513764e0da1SThomas Gleixner kernel subsystem, such as SELinux (which requires this for 514b24abcffSDaniel Borkmann logging of avc messages output). System call auditing is included 51587a4c375SChristoph Hellwig on architectures which support it. 516d9817ebeSThomas Gleixner 517391dc69cSFrederic Weisbeckerconfig HAVE_ARCH_AUDITSYSCALL 518391dc69cSFrederic Weisbecker bool 519abf917cdSFrederic Weisbecker 520abf917cdSFrederic Weisbeckerconfig AUDITSYSCALL 521abf917cdSFrederic Weisbecker def_bool y 522fdf9c356SFrederic Weisbecker depends on AUDIT && HAVE_ARCH_AUDITSYSCALL 523fdf9c356SFrederic Weisbecker select FSNOTIFY 52402382affSNicholas Piggin 525fdf9c356SFrederic Weisbeckersource "kernel/irq/Kconfig" 526fdf9c356SFrederic Weisbeckersource "kernel/time/Kconfig" 527fdf9c356SFrederic Weisbeckersource "kernel/bpf/Kconfig" 528fdf9c356SFrederic Weisbeckersource "kernel/Kconfig.preempt" 529c58b0df1SFrederic Weisbecker 530fdf9c356SFrederic Weisbeckermenu "CPU/Task time and stats accounting" 531fdf9c356SFrederic Weisbecker 532fdf9c356SFrederic Weisbeckerconfig VIRT_CPU_ACCOUNTING 533fdf9c356SFrederic Weisbecker bool 534fdf9c356SFrederic Weisbecker 535fdf9c356SFrederic Weisbeckerchoice 536fdf9c356SFrederic Weisbecker prompt "Cputime accounting" 537abf917cdSFrederic Weisbecker default TICK_CPU_ACCOUNTING 538391dc69cSFrederic Weisbecker 539c58b0df1SFrederic Weisbecker# Kind of a stub config for the pure tick based cputime accounting 540abf917cdSFrederic Weisbeckerconfig TICK_CPU_ACCOUNTING 541391dc69cSFrederic Weisbecker bool "Simple tick based cputime accounting" 542391dc69cSFrederic Weisbecker depends on !S390 && !NO_HZ_FULL 543391dc69cSFrederic Weisbecker help 544391dc69cSFrederic Weisbecker This is the basic tick based cputime accounting that maintains 545391dc69cSFrederic Weisbecker statistics about user, system and idle time spent on per jiffies 546391dc69cSFrederic Weisbecker granularity. 547391dc69cSFrederic Weisbecker 548391dc69cSFrederic Weisbecker If unsure, say Y. 549391dc69cSFrederic Weisbecker 550abf917cdSFrederic Weisbeckerconfig VIRT_CPU_ACCOUNTING_NATIVE 551abf917cdSFrederic Weisbecker bool "Deterministic task and CPU time accounting" 55224a9c541SFrederic Weisbecker depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL 553554b0004SKevin Hilman select VIRT_CPU_ACCOUNTING 554041a1574SArnd Bergmann help 555abf917cdSFrederic Weisbecker Select this option to enable more accurate task and CPU time 55624a9c541SFrederic Weisbecker accounting. This is done by reading a CPU counter on each 557abf917cdSFrederic Weisbecker kernel entry and exit and on transitions within the kernel 558abf917cdSFrederic Weisbecker between system, softirq and hardirq state, so there is a 559abf917cdSFrederic Weisbecker small performance impact. In the case of s390 or IBM POWER > 5, 560abf917cdSFrederic Weisbecker this also enables accounting of stolen time on logically-partitioned 561abf917cdSFrederic Weisbecker systems. 562abf917cdSFrederic Weisbecker 563abf917cdSFrederic Weisbeckerconfig VIRT_CPU_ACCOUNTING_GEN 564abf917cdSFrederic Weisbecker bool "Full dynticks CPU time accounting" 565abf917cdSFrederic Weisbecker depends on HAVE_CONTEXT_TRACKING_USER 566abf917cdSFrederic Weisbecker depends on HAVE_VIRT_CPU_ACCOUNTING_GEN 567abf917cdSFrederic Weisbecker depends on GENERIC_CLOCKEVENTS 568abf917cdSFrederic Weisbecker select VIRT_CPU_ACCOUNTING 569b58c3584SRik van Riel select CONTEXT_TRACKING_USER 570b58c3584SRik van Riel help 571fdf9c356SFrederic Weisbecker Select this option to enable task and CPU time accounting on full 572fdf9c356SFrederic Weisbecker dynticks systems. This accounting is implemented by watching every 573b58c3584SRik van Riel kernel-user boundaries using the context tracking subsystem. 574fdf9c356SFrederic Weisbecker The accounting is thus performed at the expense of some significant 575fdf9c356SFrederic Weisbecker overhead. 576fdf9c356SFrederic Weisbecker 577fdf9c356SFrederic Weisbecker For now this is only useful if you are working on the full 578fdf9c356SFrederic Weisbecker dynticks subsystem development. 579fdf9c356SFrederic Weisbecker 580fdf9c356SFrederic Weisbecker If unsure, say N. 581fdf9c356SFrederic Weisbecker 58211d4afd4SVincent Guittotendchoice 58311d4afd4SVincent Guittot 58411d4afd4SVincent Guittotconfig IRQ_TIME_ACCOUNTING 58511d4afd4SVincent Guittot bool "Fine granularity task level IRQ time accounting" 58611d4afd4SVincent Guittot depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE 587d4dbc991SVincent Guittot help 58898eb401dSValentin Schneider Select this option to enable fine granularity task irq time 589fcd7c9c3SValentin Schneider accounting. This is done by reading a timestamp on each 590fcd7c9c3SValentin Schneider transitions between softirq and hardirq state, so there can be a 59176504793SThara Gopinath small performance impact. 59298eb401dSValentin Schneider 59398eb401dSValentin Schneider If in doubt, say N here. 594d4dbc991SVincent Guittot 595d4dbc991SVincent Guittotconfig HAVE_SCHED_AVG_IRQ 59698eb401dSValentin Schneider def_bool y 597d4dbc991SVincent Guittot depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING 598d4dbc991SVincent Guittot depends on SMP 59998eb401dSValentin Schneider 60098eb401dSValentin Schneiderconfig SCHED_HW_PRESSURE 60198eb401dSValentin Schneider bool 60298eb401dSValentin Schneider default y if ARM && ARM_CPU_TOPOLOGY 60398eb401dSValentin Schneider default y if ARM64 604d4dbc991SVincent Guittot depends on SMP 60576504793SThara Gopinath depends on CPU_FREQ_THERMAL 606391dc69cSFrederic Weisbecker help 607391dc69cSFrederic Weisbecker Select this option to enable HW pressure accounting in the 6082813893fSIulia Manda scheduler. HW pressure is the value conveyed to the scheduler 609391dc69cSFrederic Weisbecker that reflects the reduction in CPU compute capacity resulted from 610391dc69cSFrederic Weisbecker HW throttling. HW throttling occurs when the performance of 611391dc69cSFrederic Weisbecker a CPU is capped due to high operating temperatures as an example. 612391dc69cSFrederic Weisbecker 613391dc69cSFrederic Weisbecker If selected, the scheduler will be able to balance tasks accordingly, 614391dc69cSFrederic Weisbecker i.e. put less load on throttled CPUs than on non/less throttled ones. 615391dc69cSFrederic Weisbecker 616391dc69cSFrederic Weisbecker This requires the architecture to implement 617391dc69cSFrederic Weisbecker arch_update_hw_pressure() and arch_scale_thermal_pressure(). 618391dc69cSFrederic Weisbecker 619391dc69cSFrederic Weisbeckerconfig BSD_PROCESS_ACCT 620391dc69cSFrederic Weisbecker bool "BSD Process Accounting" 621391dc69cSFrederic Weisbecker depends on MULTIUSER 622391dc69cSFrederic Weisbecker help 623391dc69cSFrederic Weisbecker If you say Y here, a user level program will be able to instruct the 624391dc69cSFrederic Weisbecker kernel (via a special system call) to write process accounting 625391dc69cSFrederic Weisbecker information to a file: whenever a process exits, information about 626391dc69cSFrederic Weisbecker that process will be appended to the file by the kernel. The 6273903bf94SRandy Dunlap information includes things such as creation time, owning user, 628391dc69cSFrederic Weisbecker command name, memory usage, controlling terminal etc. (the complete 629391dc69cSFrederic Weisbecker list is in the struct acct in <file:include/linux/acct.h>). It is 630391dc69cSFrederic Weisbecker up to the user level program to do useful things with this 631391dc69cSFrederic Weisbecker information. This is generally a good idea, so say Y. 632391dc69cSFrederic Weisbecker 63319c92399SKees Cookconfig BSD_PROCESS_ACCT_V3 634391dc69cSFrederic Weisbecker bool "BSD Process Accounting version 3 file format" 6352813893fSIulia Manda depends on BSD_PROCESS_ACCT 636391dc69cSFrederic Weisbecker default n 637391dc69cSFrederic Weisbecker help 638391dc69cSFrederic Weisbecker If you say Y here, the process accounting information is written 639391dc69cSFrederic Weisbecker in a new file format that also logs the process IDs of each 640391dc69cSFrederic Weisbecker process and its parent. Note that this file format is incompatible 641391dc69cSFrederic Weisbecker with previous v0/v1/v2 file formats, so you will need updated tools 642391dc69cSFrederic Weisbecker for processing it. A preliminary version of these tools is available 643391dc69cSFrederic Weisbecker at <http://www.gnu.org/software/acct/>. 644391dc69cSFrederic Weisbecker 645391dc69cSFrederic Weisbeckerconfig TASKSTATS 646391dc69cSFrederic Weisbecker bool "Export task/process statistics through netlink" 64719c92399SKees Cook depends on NET 648391dc69cSFrederic Weisbecker depends on MULTIUSER 649f6db8347SNaveen N. Rao default n 650391dc69cSFrederic Weisbecker help 651391dc69cSFrederic Weisbecker Export selected statistics for tasks/processes through the 652391dc69cSFrederic Weisbecker generic netlink interface. Unlike BSD process accounting, the 653391dc69cSFrederic Weisbecker statistics are available during the lifetime of tasks/processes as 654391dc69cSFrederic Weisbecker responses to commands. Like BSD accounting, they are sent to user 655391dc69cSFrederic Weisbecker space on task exit. 656391dc69cSFrederic Weisbecker 657391dc69cSFrederic Weisbecker Say N if unsure. 658391dc69cSFrederic Weisbecker 65919c92399SKees Cookconfig TASK_DELAY_ACCT 660391dc69cSFrederic Weisbecker bool "Enable per-task delay accounting" 661391dc69cSFrederic Weisbecker depends on TASKSTATS 662391dc69cSFrederic Weisbecker select SCHED_INFO 663391dc69cSFrederic Weisbecker help 664391dc69cSFrederic Weisbecker Collect information on time spent by a task waiting for system 665391dc69cSFrederic Weisbecker resources like cpu, synchronous block I/O completion and swapping 666391dc69cSFrederic Weisbecker in pages. Such statistics can help in setting a task's priorities 667391dc69cSFrederic Weisbecker relative to other tasks for cpu, io, rss limits etc. 66819c92399SKees Cook 669391dc69cSFrederic Weisbecker Say N if unsure. 670391dc69cSFrederic Weisbecker 671391dc69cSFrederic Weisbeckerconfig TASK_XACCT 672391dc69cSFrederic Weisbecker bool "Enable extended accounting over taskstats" 673391dc69cSFrederic Weisbecker depends on TASKSTATS 674391dc69cSFrederic Weisbecker help 675391dc69cSFrederic Weisbecker Collect extended task accounting data and send the data 676eb414681SJohannes Weiner to userland for processing over the taskstats interface. 677eb414681SJohannes Weiner 67898dfdd9eSRandy Dunlap Say N if unsure. 679eb414681SJohannes Weiner 680eb414681SJohannes Weinerconfig TASK_IO_ACCOUNTING 681eb414681SJohannes Weiner bool "Enable per-task storage I/O accounting" 682eb414681SJohannes Weiner depends on TASK_XACCT 683eb414681SJohannes Weiner help 684eb414681SJohannes Weiner Collect information on the number of bytes of storage I/O which this 685eb414681SJohannes Weiner task has caused. 686eb414681SJohannes Weiner 687eb414681SJohannes Weiner Say N if unsure. 6882ce7135aSJohannes Weiner 6892ce7135aSJohannes Weinerconfig PSI 6902ce7135aSJohannes Weiner bool "Pressure stall information tracking" 6912ce7135aSJohannes Weiner select KERNFS 692c3123552SMauro Carvalho Chehab help 693eb414681SJohannes Weiner Collect metrics that indicate how overcommitted the CPU, memory, 694eb414681SJohannes Weiner and IO capacity are in the system. 695eb414681SJohannes Weiner 696e0c27447SJohannes Weiner If you say Y here, the kernel will create /proc/pressure/ with the 697e0c27447SJohannes Weiner pressure statistics files cpu, memory, and io. These will indicate 698e0c27447SJohannes Weiner the share of walltime in which some or all tasks in the system are 699e0c27447SJohannes Weiner delayed due to contention of the respective resource. 700e0c27447SJohannes Weiner 701e0c27447SJohannes Weiner In kernels with cgroup support, cgroups (cgroup2 only) will 702428a1cb4SBaruch Siach have cpu.pressure, memory.pressure, and io.pressure files, 703428a1cb4SBaruch Siach which aggregate pressure stalls for the grouped tasks only. 704e0c27447SJohannes Weiner 7057b2489d3SJohannes Weiner For more details see Documentation/accounting/psi.rst. 7067b2489d3SJohannes Weiner 7077b2489d3SJohannes Weiner Say N if unsure. 7087b2489d3SJohannes Weiner 7097b2489d3SJohannes Weinerconfig PSI_DEFAULT_DISABLED 7107b2489d3SJohannes Weiner bool "Require boot parameter to enable pressure stall information tracking" 7117b2489d3SJohannes Weiner default n 7127b2489d3SJohannes Weiner depends on PSI 7137b2489d3SJohannes Weiner help 7147b2489d3SJohannes Weiner If set, pressure stall information tracking will be disabled 7157b2489d3SJohannes Weiner per default but can be enabled through passing psi=1 on the 716391dc69cSFrederic Weisbecker kernel commandline during boot. 717391dc69cSFrederic Weisbecker 7185c4991e2SFrederic Weisbecker This feature adds some code to the task wakeup and sleep 7195c4991e2SFrederic Weisbecker paths of the scheduler. The overhead is too low to affect 72097577684SOleg Nesterov common scheduling-intense workloads in practice (such as 7212c43838cSFrederic Weisbecker webservers, memcache), but it does show up in artificial 7225c4991e2SFrederic Weisbecker scheduler stress tests, such as hackbench. 7235c4991e2SFrederic Weisbecker 7245c4991e2SFrederic Weisbecker If you are paranoid and not sure what the kernel will be 7252c43838cSFrederic Weisbecker used for, say Y. 7262c43838cSFrederic Weisbecker 7272c43838cSFrederic Weisbecker Say N if unsure. 7282c43838cSFrederic Weisbecker 7295c4991e2SFrederic Weisbeckerendmenu # "CPU/Task time and stats accounting" 7300af92d46SPaul E. McKenney 731c903ff83SMike Travisconfig CPU_ISOLATION 7321da177e4SLinus Torvalds bool "CPU isolation" 733f2443ab6SRoss Biro depends on SMP 734a7f7f624SMasahiro Yamada default y 7351da177e4SLinus Torvalds help 7361da177e4SLinus Torvalds Make sure that CPUs running critical tasks are not disturbed by 7371da177e4SLinus Torvalds any source of "noise" such as unbound workqueues, timers, kthreads... 7381da177e4SLinus Torvalds Unbound jobs get offloaded to housekeeping CPUs. This is driven by 7391da177e4SLinus Torvalds the "isolcpus=" boot parameter. 7401da177e4SLinus Torvalds 7411da177e4SLinus Torvalds Say Y if unsure. 7421da177e4SLinus Torvalds 7431da177e4SLinus Torvaldssource "kernel/rcu/Kconfig" 7441da177e4SLinus Torvalds 7451da177e4SLinus Torvaldsconfig IKCONFIG 7461da177e4SLinus Torvalds tristate "Kernel .config support" 747a7f7f624SMasahiro Yamada help 7481da177e4SLinus Torvalds This option enables the complete Linux kernel ".config" file 7491da177e4SLinus Torvalds contents to be saved in the kernel. It provides documentation 7501da177e4SLinus Torvalds of which kernel options are used in a running kernel or in an 751f7b101d3SJoel Fernandes (Google) on-disk kernel. This information can be extracted from the kernel 752f7b101d3SJoel Fernandes (Google) image file with the script scripts/extract-ikconfig and used as 753f7b101d3SJoel Fernandes (Google) input to rebuild the current kernel or to build another kernel. 75443d8ce9dSJoel Fernandes (Google) It can also be extracted from a running kernel by reading 755f7b101d3SJoel Fernandes (Google) /proc/config.gz if enabled (below). 756f7b101d3SJoel Fernandes (Google) 757f7b101d3SJoel Fernandes (Google)config IKCONFIG_PROC 758f7b101d3SJoel Fernandes (Google) bool "Enable access to .config through /proc/config.gz" 75943d8ce9dSJoel Fernandes (Google) depends on IKCONFIG && PROC_FS 760794543a2SAlistair John Strachan help 761794543a2SAlistair John Strachan This option enables access to the kernel configuration file 7621c4b5ecbSChristoph Hellwig through /proc/config.gz. 763f17a32e9SAdrian Bunk 764361e9dfbSJosh Triplettconfig IKHEADERS 765794543a2SAlistair John Strachan tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz" 76623b2899fSLuis R. Rodriguez depends on SYSFS 76723b2899fSLuis R. Rodriguez help 76823b2899fSLuis R. Rodriguez This option enables access to the in-kernel headers that are generated during 76923b2899fSLuis R. Rodriguez the build process. These can be used to build eBPF tracing programs, 77023b2899fSLuis R. Rodriguez or similar programs. If you build the headers as a module, a module called 771f17a32e9SAdrian Bunk kheaders.ko is built which can be loaded on-demand to get access to headers. 772f17a32e9SAdrian Bunk 773f17a32e9SAdrian Bunkconfig LOG_BUF_SHIFT 774f17a32e9SAdrian Bunk int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 775f17a32e9SAdrian Bunk range 12 25 776794543a2SAlistair John Strachan default 17 777794543a2SAlistair John Strachan depends on PRINTK 778794543a2SAlistair John Strachan help 77923b2899fSLuis R. Rodriguez Select the minimal kernel log buffer size as a power of 2. 78023b2899fSLuis R. Rodriguez The final size is affected by LOG_CPU_MAX_BUF_SHIFT config 7812240a31dSGeert Uytterhoeven parameter, see below. Any higher size also might be forced 78223b2899fSLuis R. Rodriguez by "log_buf_len" boot parameter. 78323b2899fSLuis R. Rodriguez 784320bf431SYoann Congal Examples: 785361e9dfbSJosh Triplett 17 => 128 KB 78623b2899fSLuis R. Rodriguez 16 => 64 KB 78723b2899fSLuis R. Rodriguez 15 => 32 KB 78823b2899fSLuis R. Rodriguez 14 => 16 KB 78923b2899fSLuis R. Rodriguez 13 => 8 KB 79023b2899fSLuis R. Rodriguez 12 => 4 KB 79123b2899fSLuis R. Rodriguez 79223b2899fSLuis R. Rodriguezconfig LOG_CPU_MAX_BUF_SHIFT 79323b2899fSLuis R. Rodriguez int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)" 79423b2899fSLuis R. Rodriguez depends on SMP 79523b2899fSLuis R. Rodriguez range 0 21 79623b2899fSLuis R. Rodriguez default 0 if BASE_SMALL 79723b2899fSLuis R. Rodriguez default 12 7980f7636e1SPaul Menzel depends on PRINTK 79923b2899fSLuis R. Rodriguez help 80023b2899fSLuis R. Rodriguez This option allows to increase the default ring buffer size 80123b2899fSLuis R. Rodriguez according to the number of CPUs. The value defines the contribution 80223b2899fSLuis R. Rodriguez of each CPU as a power of 2. The used space is typically only few 80323b2899fSLuis R. Rodriguez lines however it might be much more when problems are reported, 8045e0d8d59SGeert Uytterhoeven e.g. backtraces. 8055e0d8d59SGeert Uytterhoeven 80623b2899fSLuis R. Rodriguez The increased size means that a new buffer has to be allocated and 80723b2899fSLuis R. Rodriguez the original static one is unused. It makes sense only on systems 80823b2899fSLuis R. Rodriguez with more CPUs. Therefore this value is used only when the sum of 80923b2899fSLuis R. Rodriguez contributions is greater than the half of the default kernel ring 81023b2899fSLuis R. Rodriguez buffer as defined by LOG_BUF_SHIFT. The default values are set 81123b2899fSLuis R. Rodriguez so that more than 16 CPUs are needed to trigger the allocation. 81223b2899fSLuis R. Rodriguez 81323b2899fSLuis R. Rodriguez Also this option is ignored when "log_buf_len" kernel parameter is 81423b2899fSLuis R. Rodriguez used as it forces an exact (power of two) size of the ring buffer. 81533701557SChris Down 81633701557SChris Down The number of possible CPUs is used for this computation ignoring 81733701557SChris Down hotplugging making the computation optimal for the worst case 81833701557SChris Down scenario while allowing a simple algorithm to be used from bootup. 81933701557SChris Down 82033701557SChris Down Examples shift values and their meaning: 82133701557SChris Down 17 => 128 KB for each CPU 82233701557SChris Down 16 => 64 KB for each CPU 82333701557SChris Down 15 => 32 KB for each CPU 82433701557SChris Down 14 => 16 KB for each CPU 82533701557SChris Down 13 => 8 KB for each CPU 82633701557SChris Down 12 => 4 KB for each CPU 82733701557SChris Down 82833701557SChris Downconfig PRINTK_INDEX 8295cdc38f9SKAMEZAWA Hiroyuki bool "Printk indexing debugfs interface" 8305cdc38f9SKAMEZAWA Hiroyuki depends on PRINTK && DEBUG_FS 8315cdc38f9SKAMEZAWA Hiroyuki help 8325cdc38f9SKAMEZAWA Hiroyuki Add support for indexing of all printk formats known at compile time 8335cdc38f9SKAMEZAWA Hiroyuki at <debugfs>/printk/index/<module>. 8345cdc38f9SKAMEZAWA Hiroyuki 83538ff87f7SStephen Boyd This can be used as part of maintaining daemons which monitor 83638ff87f7SStephen Boyd /dev/kmsg, as it permits auditing the printk formats present in a 83738ff87f7SStephen Boyd kernel, allowing detection of cases where monitored printks are 83869842cbaSPatrick Bellasi changed or no longer present. 83969842cbaSPatrick Bellasi 84069842cbaSPatrick Bellasi There is no additional runtime cost to printk with this enabled. 84169842cbaSPatrick Bellasi 84269842cbaSPatrick Bellasi# 84369842cbaSPatrick Bellasi# Architectures with an unreliable sched_clock() should select this: 84469842cbaSPatrick Bellasi# 84569842cbaSPatrick Bellasiconfig HAVE_UNSTABLE_SCHED_CLOCK 84669842cbaSPatrick Bellasi bool 84769842cbaSPatrick Bellasi 84869842cbaSPatrick Bellasiconfig GENERIC_SCHED_CLOCK 84969842cbaSPatrick Bellasi bool 85069842cbaSPatrick Bellasi 85169842cbaSPatrick Bellasimenu "Scheduler features" 85269842cbaSPatrick Bellasi 85369842cbaSPatrick Bellasiconfig UCLAMP_TASK 85469842cbaSPatrick Bellasi bool "Enable utilization clamping for RT/FAIR tasks" 85569842cbaSPatrick Bellasi depends on CPU_FREQ_GOV_SCHEDUTIL 85669842cbaSPatrick Bellasi help 85769842cbaSPatrick Bellasi This feature enables the scheduler to track the clamped utilization 85869842cbaSPatrick Bellasi of each CPU based on RUNNABLE tasks scheduled on that CPU. 85969842cbaSPatrick Bellasi 86069842cbaSPatrick Bellasi With this option, the user can specify the min and max CPU 86169842cbaSPatrick Bellasi utilization allowed for RUNNABLE tasks. The max utilization defines 86269842cbaSPatrick Bellasi the maximum frequency a task should use while the min utilization 86369842cbaSPatrick Bellasi defines the minimum frequency it should use. 86469842cbaSPatrick Bellasi 86569842cbaSPatrick Bellasi Both min and max utilization clamp values are hints to the scheduler, 86669842cbaSPatrick Bellasi aiming at improving its frequency selection policy, but they do not 86769842cbaSPatrick Bellasi enforce or grant any specific bandwidth for tasks. 86869842cbaSPatrick Bellasi 86969842cbaSPatrick Bellasi If in doubt, say N. 87069842cbaSPatrick Bellasi 87169842cbaSPatrick Bellasiconfig UCLAMP_BUCKETS_COUNT 87269842cbaSPatrick Bellasi int "Number of supported utilization clamp buckets" 87369842cbaSPatrick Bellasi range 5 20 87469842cbaSPatrick Bellasi default 5 87569842cbaSPatrick Bellasi depends on UCLAMP_TASK 87669842cbaSPatrick Bellasi help 87769842cbaSPatrick Bellasi Defines the number of clamp buckets to use. The range of each bucket 87869842cbaSPatrick Bellasi will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the 87969842cbaSPatrick Bellasi number of clamp buckets the finer their granularity and the higher 88069842cbaSPatrick Bellasi the precision of clamping aggregation and tracking at run-time. 88169842cbaSPatrick Bellasi 88269842cbaSPatrick Bellasi For example, with the minimum configuration value we will have 5 88369842cbaSPatrick Bellasi clamp buckets tracking 20% utilization each. A 25% boosted tasks will 88469842cbaSPatrick Bellasi be refcounted in the [20..39]% bucket and will set the bucket clamp 88569842cbaSPatrick Bellasi effective value to 25%. 88669842cbaSPatrick Bellasi If a second 30% boosted task should be co-scheduled on the same CPU, 88769842cbaSPatrick Bellasi that task will be refcounted in the same bucket of the first task and 88869842cbaSPatrick Bellasi it will boost the bucket clamp effective value to 30%. 88925c411fcSJohn Stultz The clamp effective value of a bucket is reset to its nominal value 89025c411fcSJohn Stultz (20% in the example above) when there are no more tasks refcounted in 89125c411fcSJohn Stultz that bucket. 89225c411fcSJohn Stultz 89325c411fcSJohn Stultz An additional boost/capping margin can be added to some tasks. In the 89425c411fcSJohn Stultz example above the 25% task will be boosted to 30% until it exits the 89525c411fcSJohn Stultz CPU. If that should be considered not acceptable on certain systems, 89625c411fcSJohn Stultz it's always possible to reduce the margin by increasing the number of 89725c411fcSJohn Stultz clamp buckets to trade off used memory for run-time tracking 89825c411fcSJohn Stultz precision. 89925c411fcSJohn Stultz 90025c411fcSJohn Stultz If in doubt, use the default value. 90169842cbaSPatrick Bellasi 90269842cbaSPatrick Bellasiconfig SCHED_PROXY_EXEC 903be3a7284SAndrea Arcangeli bool "Proxy Execution" 904be3a7284SAndrea Arcangeli # Avoid some build failures w/ PREEMPT_RT until it can be fixed 905be3a7284SAndrea Arcangeli depends on !PREEMPT_RT 906be3a7284SAndrea Arcangeli # Need to investigate how to inform sched_ext of split contexts 907be3a7284SAndrea Arcangeli depends on !SCHED_CLASS_EXT 908be3a7284SAndrea Arcangeli # Not particularly useful until we get to multi-rq proxying 909be3a7284SAndrea Arcangeli depends on EXPERT 910be5e610cSPeter Zijlstra help 91172b252aeSMel Gorman This option enables proxy execution, a mechanism for mutex-owning 91272b252aeSMel Gorman tasks to inherit the scheduling context of higher priority waiters. 91372b252aeSMel Gorman 91472b252aeSMel Gormanendmenu 91572b252aeSMel Gorman 91672b252aeSMel Gorman# 91772b252aeSMel Gorman# For architectures that want to enable the support for NUMA-affine scheduler 91872b252aeSMel Gorman# balancing logic: 91972b252aeSMel Gorman# 920c12d3362SArd Biesheuvelconfig ARCH_SUPPORTS_NUMA_BALANCING 9213a7c7331SMasahiro Yamada bool 922c12d3362SArd Biesheuvel 923dee2b702SGustavo A. R. Silva# 924dee2b702SGustavo A. R. Silva# For architectures that prefer to flush all TLBs after a number of pages 925158ea2d2SGustavo A. R. Silva# are unmapped instead of sending one IPI per page to flush. The architecture 926dee2b702SGustavo A. R. Silva# must provide guarantees on what happens if a clean TLB cache entry is 927dee2b702SGustavo A. R. Silva# written after the unmap. Details are in mm/rmap.c near the check for 9283e00f580SKees Cook# should_defer_flush. The architecture should also consider if the full flush 9290da6e5fdSLinus Torvalds# and the refill costs are offset by the savings of sending fewer IPIs. 9303e00f580SKees Cookconfig ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 9315a41237aSLinus Torvalds bool 9325a41237aSLinus Torvalds 933f0be87c4SLinus Torvaldsconfig CC_HAS_INT128 934f0be87c4SLinus Torvalds def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT 9358e5bd4eaSYury Norov 936f0be87c4SLinus Torvaldsconfig CC_IMPLICIT_FALLTHROUGH 93702153319SLinus Torvalds string 93802153319SLinus Torvalds default "-Wimplicit-fallthrough=5" if CC_IS_GCC && $(cc-option,-Wimplicit-fallthrough=5) 939a5e0ace0SGustavo A. R. Silva default "-Wimplicit-fallthrough" if CC_IS_CLANG && $(cc-option,-Wunreachable-code-fallthrough) 940a5e0ace0SGustavo A. R. Silva 941a5e0ace0SGustavo A. R. Silva# Currently, disable gcc-10+ array-bounds globally. 942a5e0ace0SGustavo A. R. Silva# It's still broken in gcc-13, so no upper bound yet. 94302153319SLinus Torvaldsconfig GCC10_NO_ARRAY_BOUNDS 944a5e0ace0SGustavo A. R. Silva def_bool y 945a5e0ace0SGustavo A. R. Silva 946a5e0ace0SGustavo A. R. Silvaconfig CC_NO_ARRAY_BOUNDS 947a5e0ace0SGustavo A. R. Silva bool 948a5e0ace0SGustavo A. R. Silva default y if CC_IS_GCC && GCC_VERSION >= 90000 && GCC10_NO_ARRAY_BOUNDS 94972b252aeSMel Gorman 950be5e610cSPeter Zijlstra# Currently, disable -Wstringop-overflow for GCC globally. 951be5e610cSPeter Zijlstraconfig GCC_NO_STRINGOP_OVERFLOW 952be5e610cSPeter Zijlstra def_bool y 953be5e610cSPeter Zijlstra 954be5e610cSPeter Zijlstraconfig CC_NO_STRINGOP_OVERFLOW 955be3a7284SAndrea Arcangeli bool 956be3a7284SAndrea Arcangeli default y if CC_IS_GCC && GCC_NO_STRINGOP_OVERFLOW 957be3a7284SAndrea Arcangeli 958be3a7284SAndrea Arcangeliconfig CC_STRINGOP_OVERFLOW 959be3a7284SAndrea Arcangeli bool 960be3a7284SAndrea Arcangeli default y if CC_IS_GCC && !CC_NO_STRINGOP_OVERFLOW 961be3a7284SAndrea Arcangeli 962be3a7284SAndrea Arcangeli# 963be3a7284SAndrea Arcangeli# For architectures that know their GCC __int128 support is sound 964be3a7284SAndrea Arcangeli# 965554b0f3cSSebastian Andrzej Siewiorconfig ARCH_SUPPORTS_INT128 966be3a7284SAndrea Arcangeli bool 967be3a7284SAndrea Arcangeli 968be3a7284SAndrea Arcangeli# For architectures that (ab)use NUMA to represent different memory regions 9696d56a410SPaul Gortmaker# all cpu-local but of different latencies, such as SuperH. 970be3a7284SAndrea Arcangeli# 971be3a7284SAndrea Arcangeliconfig ARCH_WANT_NUMA_VARIABLE_LOCALITY 972be3a7284SAndrea Arcangeli bool 9736f7c97e8SAneesh Kumar K.V 9746f7c97e8SAneesh Kumar K.Vconfig NUMA_BALANCING 9756f7c97e8SAneesh Kumar K.V bool "Memory placement aware NUMA scheduler" 9766f7c97e8SAneesh Kumar K.V depends on ARCH_SUPPORTS_NUMA_BALANCING 9776f7c97e8SAneesh Kumar K.V depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY 9786f7c97e8SAneesh Kumar K.V depends on SMP && NUMA && MIGRATION && !PREEMPT_RT 9796f7c97e8SAneesh Kumar K.V help 9806f7c97e8SAneesh Kumar K.V This option adds support for automatic NUMA aware memory/task placement. 98121c690a3SSuren Baghdasaryan The mechanism is quite primitive and is based on migrating memory when 98221c690a3SSuren Baghdasaryan it has references to the node the task is running on. 98321c690a3SSuren Baghdasaryan 98423964d2dSLi Zefan This system will be inactive on UMA systems. 9856341e62bSChristoph Jaeger 9862bd59d48STejun Heoconfig NUMA_BALANCING_DEFAULT_ENABLED 987ddbcc7e8SPaul Menage bool "Automatically enable NUMA aware memory/task placement" 98823964d2dSLi Zefan default y 9895cdc38f9SKAMEZAWA Hiroyuki depends on NUMA_BALANCING 9905cdc38f9SKAMEZAWA Hiroyuki help 9915cdc38f9SKAMEZAWA Hiroyuki If set, automatic NUMA balancing will be enabled if running on a NUMA 992d6a3b247SMauro Carvalho Chehab machine. 993da82c92fSMauro Carvalho Chehab 99445ce80fbSLi Zefanconfig SLAB_OBJ_EXT 995ddbcc7e8SPaul Menage bool 996ddbcc7e8SPaul Menage 997ddbcc7e8SPaul Menagemenuconfig CGROUPS 99823964d2dSLi Zefan bool "Control Group support" 99923964d2dSLi Zefan select KERNFS 10003e32cb2eSJohannes Weiner help 10013e32cb2eSJohannes Weiner This option adds support for grouping sets of processes together, for 10023e32cb2eSJohannes Weiner use with process control subsystems such as Cpusets, CFS, memory 10036a010a49STejun Heo controls or device isolation. 10046a010a49STejun Heo See 10056a010a49STejun Heo - Documentation/scheduler/sched-design-CFS.rst (CFS) 10066a010a49STejun Heo - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation 10076a010a49STejun Heo and resource control) 10086a010a49STejun Heo 10096a010a49STejun Heo Say N if unsure. 10106a010a49STejun Heo 10116a010a49STejun Heoif CGROUPS 10126a010a49STejun Heo 1013c255a458SAndrew Mortonconfig PAGE_COUNTER 1014a0166ec4SJohannes Weiner bool 10153e32cb2eSJohannes Weiner 101679bd9814STejun Heoconfig CGROUP_FAVOR_DYNMODS 101721c690a3SSuren Baghdasaryan bool "Favor dynamic modification latency reduction by default" 1018fdc5001bSKirill A. Shutemov help 101900f0b825SBalbir Singh This option enables the "favordynmods" mount option by default 1020a0166ec4SJohannes Weiner which reduces the latencies of dynamic cgroup modifications such 102100f0b825SBalbir Singh as task migrations and controller on/offs at the cost of making 102225352d2fSShakeel Butt hot path operations such as forks and exits more expensive. 102325352d2fSShakeel Butt 102425352d2fSShakeel Butt Say N if unsure. 102525352d2fSShakeel Butt 102625352d2fSShakeel Buttconfig MEMCG 102725352d2fSShakeel Butt bool "Memory controller" 102825352d2fSShakeel Butt select PAGE_COUNTER 1029940b01fcSShakeel Butt select EVENTFD 1030940b01fcSShakeel Butt select SLAB_OBJ_EXT 1031940b01fcSShakeel Butt select VM_EVENT_COUNTERS 1032940b01fcSShakeel Butt help 1033940b01fcSShakeel Butt Provides control over the memory footprint of tasks in a cgroup. 1034940b01fcSShakeel Butt 1035940b01fcSShakeel Buttconfig MEMCG_NMI_UNSAFE 1036e93d4166SRoman Gushchin bool 1037e93d4166SRoman Gushchin depends on MEMCG 1038c9929f0eSVlastimil Babka depends on HAVE_NMI 1039e93d4166SRoman Gushchin depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && !ARCH_HAVE_NMI_SAFE_CMPXCHG 1040e93d4166SRoman Gushchin default y 1041e93d4166SRoman Gushchin 1042e93d4166SRoman Gushchinconfig MEMCG_NMI_SAFETY_REQUIRES_ATOMIC 1043e93d4166SRoman Gushchin bool 1044e93d4166SRoman Gushchin depends on MEMCG 1045e93d4166SRoman Gushchin depends on HAVE_NMI 1046e93d4166SRoman Gushchin depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && ARCH_HAVE_NMI_SAFE_CMPXCHG 1047e93d4166SRoman Gushchin default y 1048e93d4166SRoman Gushchin 1049e93d4166SRoman Gushchinconfig MEMCG_V1 1050e93d4166SRoman Gushchin bool "Legacy cgroup v1 memory controller" 1051fcb4824bSValdis Kletnieks depends on MEMCG 105284c07d11SKirill Tkhai default n 10536bf024e6SJohannes Weiner help 10546bf024e6SJohannes Weiner Legacy cgroup v1 memory controller which has been deprecated by 10556bf024e6SJohannes Weiner cgroup v2 implementation. The v1 is there for legacy applications 10562bc64a20SAneesh Kumar K.V which haven't migrated to the new cgroup v2 interface yet. If you 1057a7f7f624SMasahiro Yamada do not have any such application then you are completely fine leaving 10586bf024e6SJohannes Weiner this option disabled. 10596bf024e6SJohannes Weiner 10606bf024e6SJohannes Weiner Please note that feature set of the legacy memory controller is likely 10612bc64a20SAneesh Kumar K.V going to shrink due to deprecation process. New deployments with v1 10626bf024e6SJohannes Weiner controller are highly discouraged. 10636bf024e6SJohannes Weiner 10646bf024e6SJohannes Weiner Say N if unsure. 10656bf024e6SJohannes Weiner 1066e5d1367fSStephane Eranianconfig BLK_CGROUP 10676bf024e6SJohannes Weiner bool "IO controller" 10686bf024e6SJohannes Weiner depends on BLOCK 10696bf024e6SJohannes Weiner default n 10707baf2199SKrzysztof Kozlowski help 10716bf024e6SJohannes Weiner Generic block IO controller cgroup interface. This is the common 10726bf024e6SJohannes Weiner cgroup interface which should be used by various IO controlling 1073da82c92fSMauro Carvalho Chehab policies. 10746bf024e6SJohannes Weiner 10756bf024e6SJohannes Weiner Currently, CFQ IO scheduler uses it to recognize task groups and 10766bf024e6SJohannes Weiner control disk bandwidth allocation (proportional time slice allocation) 10776bf024e6SJohannes Weiner to such task groups. It is also used by bio throttling logic in 10786bf024e6SJohannes Weiner block layer to implement upper limit in IO rates on a device. 1079e5d1367fSStephane Eranian 10807c941438SDhaval Giani This option only enables generic Block IO controller infrastructure. 1081a0166ec4SJohannes Weiner One needs to also enable actual IO controlling logic/policy. For 10827c941438SDhaval Giani enabling proportional weight division of disk bandwidth in CFQ, set 10837c941438SDhaval Giani CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set 10847c941438SDhaval Giani CONFIG_BLK_DEV_THROTTLING=y. 10857c941438SDhaval Giani 10867c941438SDhaval Giani See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 10877c941438SDhaval Giani 10887c941438SDhaval Gianiconfig CGROUP_WRITEBACK 1089e179e80cSTejun Heo bool 1090e179e80cSTejun Heo depends on MEMCG && BLK_CGROUP 1091e179e80cSTejun Heo default y 1092ddceadceSTejun Heo 1093ddceadceSTejun Heomenuconfig CGROUP_SCHED 1094ddceadceSTejun Heo bool "CPU controller" 10957c941438SDhaval Giani default n 10967c941438SDhaval Giani help 10977c941438SDhaval Giani This feature lets CPU scheduler recognize task groups and control CPU 1098e179e80cSTejun Heo bandwidth allocation to such task groups. It uses cgroups to group 10997c941438SDhaval Giani tasks. 11007c941438SDhaval Giani 1101ab84d31eSPaul Turnerif CGROUP_SCHED 1102ab84d31eSPaul Turnerconfig GROUP_SCHED_WEIGHT 1103ab84d31eSPaul Turner def_bool n 1104ddceadceSTejun Heo 1105ab84d31eSPaul Turnerconfig GROUP_SCHED_BANDWIDTH 1106ab84d31eSPaul Turner def_bool n 1107ab84d31eSPaul Turner 1108ab84d31eSPaul Turnerconfig FAIR_GROUP_SCHED 1109ab84d31eSPaul Turner bool "Group scheduling for SCHED_OTHER" 1110ab84d31eSPaul Turner depends on CGROUP_SCHED 1111d6a3b247SMauro Carvalho Chehab select GROUP_SCHED_WEIGHT 1112ab84d31eSPaul Turner default CGROUP_SCHED 11137c941438SDhaval Giani 11147c941438SDhaval Gianiconfig CFS_BANDWIDTH 11157c941438SDhaval Giani bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED" 11167c941438SDhaval Giani depends on FAIR_GROUP_SCHED 11177c941438SDhaval Giani select GROUP_SCHED_BANDWIDTH 11187c941438SDhaval Giani default n 111932bd7eb5SLi Zefan help 11207c941438SDhaval Giani This option allows users to define CPU bandwidth rates (limits) for 11217c941438SDhaval Giani tasks running within the fair group scheduler. Groups with no limit 1122d6a3b247SMauro Carvalho Chehab set are considered to be unconstrained and will run with no 11237c941438SDhaval Giani restriction. 1124e34e0131SMichal Koutný See Documentation/scheduler/sched-bwc.rst for more information. 1125e34e0131SMichal Koutný 1126e34e0131SMichal Koutnýconfig RT_GROUP_SCHED 1127e34e0131SMichal Koutný bool "Group scheduling for SCHED_RR/FIFO" 1128e34e0131SMichal Koutný depends on CGROUP_SCHED 1129e34e0131SMichal Koutný default n 1130e34e0131SMichal Koutný help 1131e34e0131SMichal Koutný This feature lets you explicitly allocate real CPU bandwidth 1132e34e0131SMichal Koutný to task groups. If enabled, it will also make it impossible to 1133e34e0131SMichal Koutný schedule realtime tasks for non-root users until you allocate 1134e34e0131SMichal Koutný realtime bandwidth for them. 113581951366STejun Heo See Documentation/scheduler/sched-rt-group.rst for more information. 113681951366STejun Heo 113781951366STejun Heoconfig RT_GROUP_SCHED_DEFAULT_DISABLED 113881951366STejun Heo bool "Require boot parameter to enable group scheduling for SCHED_RR/FIFO" 1139ddceadceSTejun Heo depends on RT_GROUP_SCHED 114081951366STejun Heo default n 114181951366STejun Heo help 11427c941438SDhaval Giani When set, the RT group scheduling is disabled by default. The option 11437c941438SDhaval Giani is in inverted form so that mere RT_GROUP_SCHED enables the group 1144af7f588dSMathieu Desnoyers scheduling. 1145af7f588dSMathieu Desnoyers 1146af7f588dSMathieu Desnoyers Say N if unsure. 1147af7f588dSMathieu Desnoyers 11482480c093SPatrick Bellasiconfig EXT_GROUP_SCHED 11492480c093SPatrick Bellasi bool 11502480c093SPatrick Bellasi depends on SCHED_CLASS_EXT && CGROUP_SCHED 11512480c093SPatrick Bellasi select GROUP_SCHED_WEIGHT 11522480c093SPatrick Bellasi select GROUP_SCHED_BANDWIDTH 11532480c093SPatrick Bellasi default y 11542480c093SPatrick Bellasi 11552480c093SPatrick Bellasiendif #CGROUP_SCHED 11562480c093SPatrick Bellasi 11572480c093SPatrick Bellasiconfig SCHED_MM_CID 11582480c093SPatrick Bellasi def_bool y 11592480c093SPatrick Bellasi depends on SMP && RSEQ 11602480c093SPatrick Bellasi 11612480c093SPatrick Bellasiconfig UCLAMP_TASK_GROUP 11622480c093SPatrick Bellasi bool "Utilization clamping per group of tasks" 11632480c093SPatrick Bellasi depends on CGROUP_SCHED 11642480c093SPatrick Bellasi depends on UCLAMP_TASK 11652480c093SPatrick Bellasi default n 11662480c093SPatrick Bellasi help 11672480c093SPatrick Bellasi This feature enables the scheduler to track the clamped utilization 11682480c093SPatrick Bellasi of each CPU based on RUNNABLE tasks currently scheduled on that CPU. 11692480c093SPatrick Bellasi 11706bf024e6SJohannes Weiner When this option is enabled, the user can specify a min and max 11716bf024e6SJohannes Weiner CPU bandwidth which is allowed for each single task in a group. 11726bf024e6SJohannes Weiner The max bandwidth allows to clamp the maximum frequency a task 11736bf024e6SJohannes Weiner can use, while the min bandwidth allows to define a minimum 11746bf024e6SJohannes Weiner frequency a task will always use. 11756bf024e6SJohannes Weiner 11766bf024e6SJohannes Weiner When task group based utilization clamping is enabled, an eventually 11776bf024e6SJohannes Weiner specified task-specific clamp value is constrained by the cgroup 11786bf024e6SJohannes Weiner specified clamp value. Both minimum and maximum task clamping cannot 11796cc578dfSParav Pandit be bigger than the corresponding clamping defined at task group level. 11806bf024e6SJohannes Weiner 11816bf024e6SJohannes Weiner If in doubt, say N. 118298076833SJonathan Neuschäfer 11836bf024e6SJohannes Weinerconfig CGROUP_PIDS 11846bf024e6SJohannes Weiner bool "PIDs controller" 11856bf024e6SJohannes Weiner help 118639d3e758SParav Pandit Provides enforcement of process number limits in the scope of a 118739d3e758SParav Pandit cgroup. Any attempt to fork more processes than is allowed in the 118839d3e758SParav Pandit cgroup will fail. PIDs are fundamentally a global resource because it 118939d3e758SParav Pandit is fairly trivial to reach PID exhaustion before you reach even a 119039d3e758SParav Pandit conservative kmemcg limit. As a result, it is possible to grind a 119139d3e758SParav Pandit system to halt without being limited by other cgroup policies. The 119239d3e758SParav Pandit PIDs controller is designed to stop this from happening. 119339d3e758SParav Pandit 119439d3e758SParav Pandit It should be noted that organisational operations (such as attaching 119539d3e758SParav Pandit to a cgroup hierarchy) will *not* be blocked by the PIDs controller, 1196b168ed45SMaarten Lankhorst since the PIDs limit only affects a process's ability to fork, not to 1197b168ed45SMaarten Lankhorst attach to a cgroup. 1198e33b5149SMaxime Ripard 1199b168ed45SMaarten Lankhorstconfig CGROUP_RDMA 1200b168ed45SMaarten Lankhorst bool "RDMA controller" 1201b168ed45SMaarten Lankhorst help 1202b168ed45SMaarten Lankhorst Provides enforcement of RDMA resources defined by IB stack. 1203b168ed45SMaarten Lankhorst It is fairly easy for consumers to exhaust RDMA resources, which 1204b168ed45SMaarten Lankhorst can result into resource unavailability to other consumers. 1205b168ed45SMaarten Lankhorst RDMA controller is designed to stop this from happening. 12066bf024e6SJohannes Weiner Attaching processes with active RDMA resources to the cgroup 12076bf024e6SJohannes Weiner hierarchy is allowed even if can cross the hierarchy's limit. 12086bf024e6SJohannes Weiner 12096bf024e6SJohannes Weinerconfig CGROUP_DMEM 12106bf024e6SJohannes Weiner bool "Device memory controller (DMEM)" 12116bf024e6SJohannes Weiner select PAGE_COUNTER 1212489c2a20SJohannes Weiner help 1213489c2a20SJohannes Weiner The DMEM controller allows compatible devices to restrict device 1214489c2a20SJohannes Weiner memory usage based on the cgroup hierarchy. 1215489c2a20SJohannes Weiner 1216489c2a20SJohannes Weiner As an example, it allows you to restrict VRAM usage for applications 12176bf024e6SJohannes Weiner in the DRM subsystem. 12186bf024e6SJohannes Weiner 12196bf024e6SJohannes Weinerconfig CGROUP_FREEZER 12206bf024e6SJohannes Weiner bool "Freezer controller" 1221afc24d49SVivek Goyal help 12226bf024e6SJohannes Weiner Provides a way to freeze and unfreeze all tasks in a 12236bf024e6SJohannes Weiner cgroup. 12246bf024e6SJohannes Weiner 12256bf024e6SJohannes Weiner This option affects the ORIGINAL cgroup interface. The cgroup2 memory 12266bf024e6SJohannes Weiner controller includes important in-kernel memory consumers per default. 12276bf024e6SJohannes Weiner 12286bf024e6SJohannes Weiner If you're using cgroup2, say N. 12296bf024e6SJohannes Weiner 12306bf024e6SJohannes Weinerconfig CGROUP_HUGETLB 12316bf024e6SJohannes Weiner bool "HugeTLB controller" 1232afc24d49SVivek Goyal depends on HUGETLB_PAGE 12336bf024e6SJohannes Weiner select PAGE_COUNTER 12346bf024e6SJohannes Weiner default n 1235e1d4eeecSNicolas Pitre help 1236bf9850f6SKuan-Wei Chiu Provides a cgroup controller for HugeTLB pages. 12376bf024e6SJohannes Weiner When you enable this, you can put a per cgroup limit on HugeTLB usage. 12386bf024e6SJohannes Weiner The limit is enforced during page fault. Since HugeTLB doesn't 12396bf024e6SJohannes Weiner support page reclaim, enforcing the limit at page fault time implies 12406bf024e6SJohannes Weiner that, the application will get SIGBUS signal if it tries to access 12416bf024e6SJohannes Weiner HugeTLB pages beyond its limit. This requires the application to know 1242afc24d49SVivek Goyal beforehand how much HugeTLB pages it would require for its use. The 12436bf024e6SJohannes Weiner control group is tracked in the third page lru pointer. This means 1244afc24d49SVivek Goyal that we cannot use the controller with huge page less than 3 pages. 12451abab1baSChen Ridong 12461abab1baSChen Ridongconfig CPUSETS 12471abab1baSChen Ridong bool "Cpuset controller" 12481abab1baSChen Ridong depends on SMP 12491abab1baSChen Ridong select UNION_FIND 12501abab1baSChen Ridong help 12511abab1baSChen Ridong This option will let you create and manage CPUSETs which 1252dae68fbaSMichal Koutný allow dynamically partitioning a system into sets of CPUs and 1253dae68fbaSMichal Koutný Memory Nodes and assigning tasks to run only within those sets. 12541abab1baSChen Ridong This is primarily useful on large SMP or NUMA systems. 12551abab1baSChen Ridong 12561abab1baSChen Ridong Say N if unsure. 12571abab1baSChen Ridong 12581abab1baSChen Ridongconfig CPUSETS_V1 12596bf024e6SJohannes Weiner bool "Legacy cgroup v1 cpusets controller" 12606bf024e6SJohannes Weiner depends on CPUSETS 1261dae68fbaSMichal Koutný default n 126289e9b9e0STejun Heo help 126389e9b9e0STejun Heo Legacy cgroup v1 cpusets controller which has been deprecated by 12646bf024e6SJohannes Weiner cgroup v2 implementation. The v1 is there for legacy applications 12656bf024e6SJohannes Weiner which haven't migrated to the new cgroup v2 interface yet. Legacy 12666bf024e6SJohannes Weiner interface includes cpuset filesystem and /proc/<pid>/cpuset. If you 12676bf024e6SJohannes Weiner do not have any such application then you are completely fine leaving 12686bf024e6SJohannes Weiner this option disabled. 12696bf024e6SJohannes Weiner 12706bf024e6SJohannes Weiner Say N if unsure. 12716bf024e6SJohannes Weiner 12726bf024e6SJohannes Weinerconfig PROC_PID_CPUSET 12736bf024e6SJohannes Weiner bool "Include legacy /proc/<pid>/cpuset file" 12746bf024e6SJohannes Weiner depends on CPUSETS_V1 12756bf024e6SJohannes Weiner default y 12766bf024e6SJohannes Weiner 12776bf024e6SJohannes Weinerconfig CGROUP_DEVICE 12786bf024e6SJohannes Weiner bool "Device controller" 12796bf024e6SJohannes Weiner help 12806bf024e6SJohannes Weiner Provides a cgroup controller implementing whitelists for 12816bf024e6SJohannes Weiner devices which a process in the cgroup can mknod or open. 12826546b19fSNamhyung Kim 12836546b19fSNamhyung Kimconfig CGROUP_CPUACCT 12846bf024e6SJohannes Weiner bool "Simple CPU accounting controller" 12856bf024e6SJohannes Weiner help 12866bf024e6SJohannes Weiner Provides a simple controller for monitoring the 128730070984SDaniel Mack total CPU consumed by the tasks in a cgroup. 128830070984SDaniel Mack 1289483c4933SAndy Lutomirskiconfig CGROUP_PERF 1290483c4933SAndy Lutomirski bool "Perf controller" 129130070984SDaniel Mack depends on PERF_EVENTS 129230070984SDaniel Mack help 129330070984SDaniel Mack This option extends the perf per-cpu mode to restrict monitoring 129430070984SDaniel Mack to threads which belong to the cgroup specified and run on the 129530070984SDaniel Mack designated cpu. Or this can be used to have cgroup ID in samples 129630070984SDaniel Mack so that it can monitor performance events among cgroups. 129730070984SDaniel Mack 129830070984SDaniel Mack Say N if unsure. 129930070984SDaniel Mack 1300a72232eaSVipin Sharmaconfig CGROUP_BPF 1301a72232eaSVipin Sharma bool "Support for eBPF programs attached to cgroups" 1302a72232eaSVipin Sharma depends on BPF_SYSCALL 1303a72232eaSVipin Sharma select SOCK_CGROUP_DATA 1304a72232eaSVipin Sharma help 1305a72232eaSVipin Sharma Allow attaching eBPF programs to a cgroup using the bpf(2) 1306a72232eaSVipin Sharma syscall command BPF_PROG_ATTACH. 1307a72232eaSVipin Sharma 1308a72232eaSVipin Sharma In which context these programs are accessed depends on the type 1309a72232eaSVipin Sharma of attachment. For instance, programs that are attached using 1310a72232eaSVipin Sharma BPF_CGROUP_INET_INGRESS will be executed on the ingress path of 1311a72232eaSVipin Sharma inet sockets. 1312a72232eaSVipin Sharma 1313a72232eaSVipin Sharmaconfig CGROUP_MISC 13146bf024e6SJohannes Weiner bool "Misc resource controller" 131523b0be48SWaiman Long default n 13166bf024e6SJohannes Weiner help 131723b0be48SWaiman Long Provides a controller for miscellaneous resources on a host. 13186bf024e6SJohannes Weiner 13196bf024e6SJohannes Weiner Miscellaneous scalar resources are the resources on the host system 132023b0be48SWaiman Long which cannot be abstracted like the other cgroups. This controller 132123b0be48SWaiman Long tracks and limits the miscellaneous resources used by a process 132223b0be48SWaiman Long attached to a cgroup hierarchy. 13236bf024e6SJohannes Weiner 13246bf024e6SJohannes Weiner For more information, please check misc cgroup section in 13256bf024e6SJohannes Weiner /Documentation/admin-guide/cgroup-v2.rst. 132673b35147SArnd Bergmann 132773b35147SArnd Bergmannconfig CGROUP_DEBUG 132873b35147SArnd Bergmann bool "Debug controller" 132973b35147SArnd Bergmann default n 133023964d2dSLi Zefan depends on DEBUG_KERNEL 1331c077719bSKAMEZAWA Hiroyuki help 13328dd2a82cSDaniel Lezcano This option enables a simple controller that exports 13336a108a14SDavid Rientjes debugging information about the cgroups framework. This 13342813893fSIulia Manda controller is for control cgroup debugging only. Its 13356a108a14SDavid Rientjes interfaces are not stable. 1336c5289a69SPavel Emelyanov 1337c5289a69SPavel Emelyanov Say N. 1338c5289a69SPavel Emelyanov 1339c5289a69SPavel Emelyanovconfig SOCK_CGROUP_DATA 1340c5289a69SPavel Emelyanov bool 1341c5289a69SPavel Emelyanov default n 13428dd2a82cSDaniel Lezcano 13438dd2a82cSDaniel Lezcanoendif # CGROUPS 134458bfdd6dSPavel Emelyanov 134558bfdd6dSPavel Emelyanovmenuconfig NAMESPACES 134617a6d441SDaniel Lezcano bool "Namespaces support" if EXPERT 134758bfdd6dSPavel Emelyanov depends on MULTIUSER 134858bfdd6dSPavel Emelyanov default !EXPERT 134958bfdd6dSPavel Emelyanov help 135058bfdd6dSPavel Emelyanov Provides the way to make tasks work with different objects using 1351769071acSAndrei Vagin the same id. For example same IPC id may refer to different objects 1352769071acSAndrei Vagin or same user id or pid may refer to different tasks when used in 1353660fd04fSThomas Gleixner different namespaces. 1354769071acSAndrei Vagin 1355769071acSAndrei Vaginif NAMESPACES 1356769071acSAndrei Vagin 1357769071acSAndrei Vaginconfig UTS_NS 1358769071acSAndrei Vagin bool "UTS namespace" 1359ae5e1b22SPavel Emelyanov default y 1360ae5e1b22SPavel Emelyanov help 13618dd2a82cSDaniel Lezcano In this namespace tasks see different info provided with the 136217a6d441SDaniel Lezcano uname() system call 1363ae5e1b22SPavel Emelyanov 1364ae5e1b22SPavel Emelyanovconfig TIME_NS 1365614b84cfSSerge E. Hallyn bool "TIME namespace" 1366ae5e1b22SPavel Emelyanov depends on GENERIC_GETTIMEOFDAY 1367aee16ce7SPavel Emelyanov default y 136819c92399SKees Cook help 13695673a94cSEric W. Biederman In this namespace boottime and monotonic clocks can be set. 1370aee16ce7SPavel Emelyanov The time will keep going with the same pace. 1371aee16ce7SPavel Emelyanov 1372aee16ce7SPavel Emelyanovconfig IPC_NS 1373e11f0ae3SEric W. Biederman bool "IPC namespace" 1374e11f0ae3SEric W. Biederman depends on (SYSVIPC || POSIX_MQUEUE) 1375d886f4e4SJohannes Weiner default y 1376d886f4e4SJohannes Weiner help 1377d886f4e4SJohannes Weiner In this namespace tasks work with IPC ids which correspond to 1378e11f0ae3SEric W. Biederman different IPC objects in different namespaces. 1379aee16ce7SPavel Emelyanov 1380aee16ce7SPavel Emelyanovconfig USER_NS 138174bd59bbSPavel Emelyanov bool "User namespace" 13829bd38c2cSDaniel Lezcano default n 138317a6d441SDaniel Lezcano help 138474bd59bbSPavel Emelyanov This allows containers, i.e. vservers, to use user namespaces 138512d2b8f9SHeikki Orsila to provide different user info for different servers. 1386692105b8SMatt LaPlante 138774bd59bbSPavel Emelyanov When user namespaces are enabled in the kernel it is 138874bd59bbSPavel Emelyanov recommended that the MEMCG option also be enabled and that 1389d6eb633fSMatt Helsley user-space use the memory control groups to limit the amount 1390d6eb633fSMatt Helsley of memory a memory unprivileged users can use. 13918dd2a82cSDaniel Lezcano 139217a6d441SDaniel Lezcano If unsure, say N. 1393d6eb633fSMatt Helsley 1394d6eb633fSMatt Helsleyconfig PID_NS 1395d6eb633fSMatt Helsley bool "PID Namespaces" 1396d6eb633fSMatt Helsley default y 13978dd2a82cSDaniel Lezcano help 13988dd2a82cSDaniel Lezcano Support process id namespaces. This allows having multiple 13995cb366bbSAdrian Reber processes with the same pid as long as they are in different 14005cb366bbSAdrian Reber pid namespaces. This is a building block of containers. 140130341ec9SRen Zhijie 14025cb366bbSAdrian Reberconfig NET_NS 1403bfe3911aSChris Wilson bool "Network namespace" 14045cb366bbSAdrian Reber depends on NET 14055cb366bbSAdrian Reber default y 14065cb366bbSAdrian Reber help 14075cb366bbSAdrian Reber Allow user space to create what appear to be multiple instances 14085cb366bbSAdrian Reber of the network stack. 14095cb366bbSAdrian Reber 14105cb366bbSAdrian Reberendif # NAMESPACES 14115cb366bbSAdrian Reber 14125cb366bbSAdrian Reberconfig CHECKPOINT_RESTORE 14135091faa4SMike Galbraith bool "Checkpoint/restore support" 14145091faa4SMike Galbraith depends on PROC_FS 14155091faa4SMike Galbraith select PROC_CHILDREN 14165091faa4SMike Galbraith select KCMP 14175091faa4SMike Galbraith default n 14185091faa4SMike Galbraith help 14195091faa4SMike Galbraith Enables additional kernel features in a sake of checkpoint/restore. 14205091faa4SMike Galbraith In particular it adds auxiliary prctl codes to setup process text, 14215091faa4SMike Galbraith data and heap segment sizes, and a few additional /proc filesystem 14225091faa4SMike Galbraith entries. 14235091faa4SMike Galbraith 14245091faa4SMike Galbraith If unsure, say N here. 14257af37becSDaniel Lezcano 14267af37becSDaniel Lezcanoconfig SCHED_AUTOGROUP 142726b5679eSPeter Zijlstra bool "Automatic process group scheduling" 14287af37becSDaniel Lezcano select CGROUPS 14297af37becSDaniel Lezcano select CGROUP_SCHED 14307af37becSDaniel Lezcano select FAIR_GROUP_SCHED 14317af37becSDaniel Lezcano help 14327af37becSDaniel Lezcano This option optimizes the scheduler for common desktop workloads by 14337af37becSDaniel Lezcano automatically creating and populating task groups. This separation 14347af37becSDaniel Lezcano of workloads isolates aggressive CPU burners (like build jobs) from 14357af37becSDaniel Lezcano desktop applications. Task group autogeneration is currently based 14367af37becSDaniel Lezcano upon task session. 1437f991633dSDimitri Gorokhovik 1438f991633dSDimitri Gorokhovikconfig RELAY 1439f991633dSDimitri Gorokhovik bool "Kernel->user space relay support (formerly relayfs)" 1440f991633dSDimitri Gorokhovik select IRQ_WORK 1441f991633dSDimitri Gorokhovik help 1442f991633dSDimitri Gorokhovik This option enables support for relay interface support in 1443f991633dSDimitri Gorokhovik certain file systems (such as debugfs). 14448c27ceffSMauro Carvalho Chehab It is designed to provide an efficient mechanism for tools and 1445f991633dSDimitri Gorokhovik facilities to relay large amounts of data from kernel space to 1446f991633dSDimitri Gorokhovik user space. 1447f991633dSDimitri Gorokhovik 1448f991633dSDimitri Gorokhovik If unsure, say N. 1449f991633dSDimitri Gorokhovik 1450f991633dSDimitri Gorokhovikconfig BLK_DEV_INITRD 1451f991633dSDimitri Gorokhovik bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 1452c33df4eaSJean-Paul Saman help 1453c33df4eaSJean-Paul Saman The initial RAM filesystem is a ramfs which is loaded by the 1454dbec4866SSam Ravnborg boot loader (loadlin or lilo) and that is mounted as root 1455dbec4866SSam Ravnborg before the normal boot procedure. It is typically used to 1456c33df4eaSJean-Paul Saman load modules needed to mount the "real" root file system, 1457c33df4eaSJean-Paul Saman etc. See <file:Documentation/admin-guide/initrd.rst> for details. 145876db5a27SMasami Hiramatsu 145976db5a27SMasami Hiramatsu If RAM disk support (BLK_DEV_RAM) is also included, this 1460a2a9d67aSMasami Hiramatsu also enables initial RAM disk (initrd) support and adds 146176db5a27SMasami Hiramatsu 15 Kbytes (more on some other architectures) to the kernel size. 146276db5a27SMasami Hiramatsu 146376db5a27SMasami Hiramatsu If unsure say Y. 14640947db01SMasami Hiramatsu 146585c46b78SMasami Hiramatsuif BLK_DEV_INITRD 14660947db01SMasami Hiramatsu 146776db5a27SMasami Hiramatsusource "usr/Kconfig" 146876db5a27SMasami Hiramatsu 146976db5a27SMasami Hiramatsuendif 1470b743852cSPaul E. McKenney 1471b743852cSPaul E. McKenneyconfig BOOT_CONFIG 1472b743852cSPaul E. McKenney bool "Boot config support" 14736ded8a28SPaul E. McKenney select BLK_DEV_INITRD if !BOOT_CONFIG_EMBED 1474b743852cSPaul E. McKenney help 1475b743852cSPaul E. McKenney Extra boot config allows system admin to pass a config file as 1476b743852cSPaul E. McKenney complemental extension of kernel cmdline when booting. 1477b743852cSPaul E. McKenney The boot config file must be attached at the end of initramfs 1478b743852cSPaul E. McKenney with checksum, size and magic word. 1479b743852cSPaul E. McKenney See <file:Documentation/admin-guide/bootconfig.rst> for details. 1480b743852cSPaul E. McKenney 1481b743852cSPaul E. McKenney If unsure, say Y. 1482b743852cSPaul E. McKenney 1483a2a9d67aSMasami Hiramatsuconfig BOOT_CONFIG_FORCE 1484a2a9d67aSMasami Hiramatsu bool "Force unconditional bootconfig processing" 1485a2a9d67aSMasami Hiramatsu depends on BOOT_CONFIG 1486a2a9d67aSMasami Hiramatsu default y if BOOT_CONFIG_EMBED 1487a2a9d67aSMasami Hiramatsu help 1488a2a9d67aSMasami Hiramatsu With this Kconfig option set, BOOT_CONFIG processing is carried 1489a2a9d67aSMasami Hiramatsu out even when the "bootconfig" kernel-boot parameter is omitted. 1490a2a9d67aSMasami Hiramatsu In fact, with this Kconfig option set, there is no way to 1491a2a9d67aSMasami Hiramatsu make the kernel ignore the BOOT_CONFIG-supplied kernel-boot 1492a2a9d67aSMasami Hiramatsu parameters. 1493a2a9d67aSMasami Hiramatsu 1494a2a9d67aSMasami Hiramatsu If unsure, say N. 1495a2a9d67aSMasami Hiramatsu 1496a2a9d67aSMasami Hiramatsuconfig BOOT_CONFIG_EMBED 1497a2a9d67aSMasami Hiramatsu bool "Embed bootconfig file in the kernel" 1498a2a9d67aSMasami Hiramatsu depends on BOOT_CONFIG 1499a2a9d67aSMasami Hiramatsu help 1500a2a9d67aSMasami Hiramatsu Embed a bootconfig file given by BOOT_CONFIG_EMBED_FILE in the 1501a2a9d67aSMasami Hiramatsu kernel. Usually, the bootconfig file is loaded with the initrd 15021274aea1SDavid Disseldorp image. But if the system doesn't support initrd, this option will 15031274aea1SDavid Disseldorp help you by embedding a bootconfig file while building the kernel. 15041274aea1SDavid Disseldorp 15051274aea1SDavid Disseldorp If unsure, say N. 15061274aea1SDavid Disseldorp 15071274aea1SDavid Disseldorpconfig BOOT_CONFIG_EMBED_FILE 15081274aea1SDavid Disseldorp string "Embedded bootconfig file path" 15091274aea1SDavid Disseldorp depends on BOOT_CONFIG_EMBED 15101274aea1SDavid Disseldorp help 15111274aea1SDavid Disseldorp Specify a bootconfig file which will be embedded to the kernel. 151283c0b272SDavid Disseldorp This bootconfig will be used if there is no initrd or no other 151383c0b272SDavid Disseldorp bootconfig in the initrd. 151483c0b272SDavid Disseldorp 151583c0b272SDavid Disseldorpconfig INITRAMFS_PRESERVE_MTIME 151683c0b272SDavid Disseldorp bool "Preserve cpio archive mtimes in initramfs" 151783c0b272SDavid Disseldorp depends on BLK_DEV_INITRD 151883c0b272SDavid Disseldorp default y 1519877417e6SArnd Bergmann help 1520877417e6SArnd Bergmann Each entry in an initramfs cpio archive carries an mtime value. When 15212cc3ce24SUlf Magnusson enabled, extracted cpio items take this mtime, with directory mtime 1522877417e6SArnd Bergmann setting deferred until after creation of any child entries. 1523877417e6SArnd Bergmann 152415f5db60SMasahiro Yamada If unsure, say Y. 1525877417e6SArnd Bergmann 1526877417e6SArnd Bergmannconfig INITRAMFS_TEST 1527877417e6SArnd Bergmann bool "Test initramfs cpio archive extraction" if !KUNIT_ALL_TESTS 1528877417e6SArnd Bergmann depends on BLK_DEV_INITRD && KUNIT=y 1529877417e6SArnd Bergmann default KUNIT_ALL_TESTS 1530c45b4f1fSLinus Torvalds help 153115f5db60SMasahiro Yamada Build KUnit tests for initramfs. See Documentation/dev-tools/kunit 1532c45b4f1fSLinus Torvalds 1533ce3b487fSMasahiro Yamadachoice 1534ce3b487fSMasahiro Yamada prompt "Compiler optimization level" 1535c45b4f1fSLinus Torvalds default CC_OPTIMIZE_FOR_PERFORMANCE 1536877417e6SArnd Bergmann 1537877417e6SArnd Bergmannconfig CC_OPTIMIZE_FOR_PERFORMANCE 15385d20ee31SNicholas Piggin bool "Optimize for performance (-O2)" 15395d20ee31SNicholas Piggin help 15405d20ee31SNicholas Piggin This is the default optimization level for the kernel, building 15415d20ee31SNicholas Piggin with the "-O2" compiler flag for best performance and most 15425d20ee31SNicholas Piggin helpful compile-time warnings. 15435d20ee31SNicholas Piggin 15445d20ee31SNicholas Pigginconfig CC_OPTIMIZE_FOR_SIZE 15455d20ee31SNicholas Piggin bool "Optimize for size (-Os)" 15465d20ee31SNicholas Piggin help 15475d20ee31SNicholas Piggin Choosing this option will pass "-Os" to your compiler resulting 15485d20ee31SNicholas Piggin in a smaller kernel. 15495d20ee31SNicholas Piggin 15505d20ee31SNicholas Pigginendchoice 15515d20ee31SNicholas Piggin 1552e85d1d65SMasahiro Yamadaconfig HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1553e85d1d65SMasahiro Yamada bool 15545d20ee31SNicholas Piggin help 15558b9d2712SMasahiro Yamada This requires that the arch annotates or otherwise protects 15568b9d2712SMasahiro Yamada its external entry points from being discarded. Linker scripts 15578b9d2712SMasahiro Yamada must also merge .text.*, .data.*, and .bss.* correctly into 15585d20ee31SNicholas Piggin output sections. Care must be taken not to pull in unrelated 15595d20ee31SNicholas Piggin sections (e.g., '.text.init'). Typically '.' in section names 15605d20ee31SNicholas Piggin is used to distinguish them from label names / C identifiers. 15615d20ee31SNicholas Piggin 15625d20ee31SNicholas Pigginconfig LD_DEAD_CODE_DATA_ELIMINATION 15635d20ee31SNicholas Piggin bool "Dead code and data elimination (EXPERIMENTAL)" 15645d20ee31SNicholas Piggin depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION 15655d20ee31SNicholas Piggin depends on EXPERT 156659612b24SNathan Chancellor depends on $(cc-option,-ffunction-sections -fdata-sections) 156759612b24SNathan Chancellor depends on $(ld-option,--gc-sections) 156859612b24SNathan Chancellor help 156959612b24SNathan Chancellor Enable this if you want to do dead code and data elimination with 1570e1789d7cSXin Li the linker by compiling with -ffunction-sections -fdata-sections, 1571e1789d7cSXin Li and linking with --gc-sections. 1572e1789d7cSXin Li 1573e1789d7cSXin Li This can reduce on disk and in-memory size of the kernel 1574e1789d7cSXin Li code and static data, particularly for small configs and 1575e1789d7cSXin Li on small systems. This has the possibility of introducing 1576e1789d7cSXin Li silently broken kernel if the required annotations are not 157759612b24SNathan Chancellor present. This option is not well tested yet, so use at your 15780847062aSRandy Dunlap own risk. 15790847062aSRandy Dunlap 15800847062aSRandy Dunlapconfig LD_ORPHAN_WARN 1581657a5209SMike Frysinger def_bool y 1582657a5209SMike Frysinger depends on ARCH_WANT_LD_ORPHAN_WARN 1583657a5209SMike Frysinger depends on $(ld-option,--orphan-handling=warn) 1584657a5209SMike Frysinger depends on $(ld-option,--orphan-handling=error) 1585657a5209SMike Frysinger 1586657a5209SMike Frysingerconfig LD_ORPHAN_WARN_LEVEL 1587657a5209SMike Frysinger string 1588657a5209SMike Frysinger depends on LD_ORPHAN_WARN 1589657a5209SMike Frysinger default "error" if WERROR 1590657a5209SMike Frysinger default "warn" 1591657a5209SMike Frysinger 1592657a5209SMike Frysingerconfig SYSCTL 1593657a5209SMike Frysinger bool 1594657a5209SMike Frysinger 1595657a5209SMike Frysingerconfig HAVE_UID16 1596657a5209SMike Frysinger bool 1597657a5209SMike Frysinger 1598657a5209SMike Frysingerconfig SYSCTL_EXCEPTION_TRACE 1599657a5209SMike Frysinger bool 1600657a5209SMike Frysinger help 1601657a5209SMike Frysinger Enable support for /proc/sys/debug/exception-trace. 1602657a5209SMike Frysinger 1603657a5209SMike Frysingerconfig SYSCTL_ARCH_UNALIGN_NO_WARN 1604c443279aSChristian Brauner bool 1605c443279aSChristian Brauner help 1606c443279aSChristian Brauner Enable support for /proc/sys/kernel/ignore-unaligned-usertrap 1607c443279aSChristian Brauner Allows arch to define/use @no_unaligned_warning to possibly warn 1608c443279aSChristian Brauner about unaligned access emulation going on under the hood. 1609c443279aSChristian Brauner 1610c443279aSChristian Braunerconfig SYSCTL_ARCH_UNALIGN_ALLOW 1611c443279aSChristian Brauner bool 1612c443279aSChristian Brauner help 1613c443279aSChristian Brauner Enable support for /proc/sys/kernel/unaligned-trap 1614657a5209SMike Frysinger Allows arches to define/use @unaligned_enabled to runtime toggle 1615657a5209SMike Frysinger the unaligned access emulation. 1616657a5209SMike Frysinger see arch/parisc/kernel/unaligned.c for reference 16176a108a14SDavid Rientjes 16186a108a14SDavid Rientjesconfig SYSFS_SYSCALL 1619f505c553SJosh Triplett bool "Sysfs syscall support" 1620f505c553SJosh Triplett default n 16211da177e4SLinus Torvalds help 16221da177e4SLinus Torvalds sys_sysfs is an obsolete system call no longer supported in libc. 16231da177e4SLinus Torvalds Note that disabling this option is more secure but might break 16241da177e4SLinus Torvalds compatibility with some systems. 16251da177e4SLinus Torvalds 16261da177e4SLinus Torvalds If unsure say N here. 1627ae81f9e3SChuck Ebbert 16286a108a14SDavid Rientjesconfig HAVE_PCSPKR_PLATFORM 16292813893fSIulia Manda bool 1630ae81f9e3SChuck Ebbert 1631ae81f9e3SChuck Ebbertmenuconfig EXPERT 1632ae81f9e3SChuck Ebbert bool "Configure standard kernel features (expert users)" 1633ae81f9e3SChuck Ebbert # Unhide debug options, to make the on-by-default options visible 16342813893fSIulia Manda select DEBUG_KERNEL 16352813893fSIulia Manda help 16362813893fSIulia Manda This option allows certain base kernel options and settings 16372813893fSIulia Manda to be disabled or tweaked. This is for specialized 16382813893fSIulia Manda environments which can tolerate a "non-standard" kernel. 16392813893fSIulia Manda Only use this if you really know what you are doing. 16402813893fSIulia Manda 16412813893fSIulia Mandaconfig UID16 16422813893fSIulia Manda bool "Enable 16-bit UID system calls" if EXPERT 16432813893fSIulia Manda depends on HAVE_UID16 && MULTIUSER 16442813893fSIulia Manda default y 16452813893fSIulia Manda help 16462813893fSIulia Manda This enables the legacy 16-bit UID syscall wrappers. 16472813893fSIulia Manda 1648f6187769SFabian Frederickconfig MULTIUSER 1649f6187769SFabian Frederick bool "Multiple users, groups and capabilities support" if EXPERT 1650cd14b018SMasahiro Yamada default y 1651a7f7f624SMasahiro Yamada help 1652f6187769SFabian Frederick This option enables support for non-root users, groups and 1653f6187769SFabian Frederick capabilities. 1654f6187769SFabian Frederick 1655f6187769SFabian Frederick If you say N here, all processes will run with UID 0, GID 0, and all 1656f6187769SFabian Frederick possible capabilities. Saying N here also compiles out support for 1657f6187769SFabian Frederick system calls related to UIDs, GIDs, and capabilities, such as setuid, 1658d1b069f5SRandy Dunlap setgid, and capset. 1659d1b069f5SRandy Dunlap 1660d1b069f5SRandy Dunlap If unsure, say Y here. 1661d1b069f5SRandy Dunlap 1662d1b069f5SRandy Dunlapconfig SGETMASK_SYSCALL 1663d1b069f5SRandy Dunlap bool "sgetmask/ssetmask syscalls support" if EXPERT 1664d1b069f5SRandy Dunlap default PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH 1665d1b069f5SRandy Dunlap help 1666d1b069f5SRandy Dunlap sys_sgetmask and sys_ssetmask are obsolete system calls 1667d1b069f5SRandy Dunlap no longer supported in libc but still enabled by default in some 1668d1b069f5SRandy Dunlap architectures. 1669d1b069f5SRandy Dunlap 1670d1b069f5SRandy Dunlap If unsure, leave the default option here. 1671baa73d9eSNicolas Pitre 1672baa73d9eSNicolas Pitreconfig FHANDLE 1673baa73d9eSNicolas Pitre bool "open by fhandle syscalls" if EXPERT 1674baa73d9eSNicolas Pitre select EXPORTFS 1675baa73d9eSNicolas Pitre default y 1676baa73d9eSNicolas Pitre help 1677baa73d9eSNicolas Pitre If you say Y here, a user level program will be able to map 1678baa73d9eSNicolas Pitre file names to handle and then later use the handle for 1679baa73d9eSNicolas Pitre different file system operations. This is useful in implementing 1680baa73d9eSNicolas Pitre userspace file servers, which now track files using handles instead 1681baa73d9eSNicolas Pitre of names. The handle would remain the same even if file names 1682baa73d9eSNicolas Pitre get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2) 1683baa73d9eSNicolas Pitre syscalls. 1684baa73d9eSNicolas Pitre 1685baa73d9eSNicolas Pitreconfig POSIX_TIMERS 1686baa73d9eSNicolas Pitre bool "Posix Clocks & timers" if EXPERT 1687baa73d9eSNicolas Pitre default y 1688d59745ceSMatt Mackall help 1689d59745ceSMatt Mackall This includes native support for POSIX timers to the kernel. 16906a108a14SDavid Rientjes Some embedded systems have no use for them and therefore they 169174876a98SFrederic Weisbecker can be configured out to reduce the size of the kernel image. 1692d59745ceSMatt Mackall 1693d59745ceSMatt Mackall When this option is disabled, the following syscalls won't be 1694d59745ceSMatt Mackall available: timer_create, timer_gettime: timer_getoverrun, 1695d59745ceSMatt Mackall timer_settime, timer_delete, clock_adjtime, getitimer, 1696d59745ceSMatt Mackall setitimer, alarm. Furthermore, the clock_settime, clock_gettime, 1697d59745ceSMatt Mackall clock_getres and clock_nanosleep syscalls will be limited to 1698d59745ceSMatt Mackall CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only. 1699c8538a7aSMatt Mackall 17006a108a14SDavid Rientjes If unsure say y. 1701c8538a7aSMatt Mackall 1702c8538a7aSMatt Mackallconfig PRINTK 1703c8538a7aSMatt Mackall default y 1704c8538a7aSMatt Mackall bool "Enable support for printk" if EXPERT 1705c8538a7aSMatt Mackall select IRQ_WORK 1706c8538a7aSMatt Mackall help 1707c8538a7aSMatt Mackall This option enables normal printk support. Removing it 1708c8538a7aSMatt Mackall eliminates most of the message strings from the kernel image 1709708e9a79SMatt Mackall and makes the kernel more or less silent. As this makes it 1710046d662fSAlex Kelly very difficult to diagnose system problems, saying N here is 1711708e9a79SMatt Mackall strongly discouraged. 17126a108a14SDavid Rientjes 1713708e9a79SMatt Mackallconfig PRINTK_RINGBUFFER_KUNIT_TEST 1714708e9a79SMatt Mackall tristate "KUnit Test for the printk ringbuffer" if !KUNIT_ALL_TESTS 1715708e9a79SMatt Mackall depends on PRINTK && KUNIT 17168761f1abSRalf Baechle default KUNIT_ALL_TESTS 1717e5e1d3cbSStas Sergeev help 17186a108a14SDavid Rientjes This builds the printk ringbuffer KUnit test suite. 17198761f1abSRalf Baechle 172015f304b6SRalf Baechle For more information on KUnit and unit tests in general, please refer 1721e5e1d3cbSStas Sergeev to the KUnit documentation. 1722e5e1d3cbSStas Sergeev 1723e5e1d3cbSStas Sergeev If unsure, say N. 1724e5e1d3cbSStas Sergeev 1725e5e1d3cbSStas Sergeevconfig BUG 172627021649SYoann Congal bool "BUG() support" if EXPERT 172727021649SYoann Congal default y 17281da177e4SLinus Torvalds help 172927021649SYoann Congal Disabling this option eliminates support for BUG and WARN, reducing 17301da177e4SLinus Torvalds the size of your kernel image and potentially quietly ignoring 17311da177e4SLinus Torvalds numerous fatal conditions. You should only consider disabling this 17321da177e4SLinus Torvalds option for embedded systems with no facilities for reporting errors. 17331da177e4SLinus Torvalds Just say Y. 17346a108a14SDavid Rientjes 17353f2bedabSArnd Bergmannconfig ELF_CORE 17361da177e4SLinus Torvalds depends on COREDUMP 1737bc2eecd7SNicolas Pitre default y 17381da177e4SLinus Torvalds bool "Enable ELF core dumps" if EXPERT 17391da177e4SLinus Torvalds help 17401da177e4SLinus Torvalds Enable support for generating core dumps. Disabling saves about 4k. 17411da177e4SLinus Torvalds 17421da177e4SLinus Torvalds 1743bc2eecd7SNicolas Pitreconfig PCSPKR_PLATFORM 1744bc2eecd7SNicolas Pitre bool "Enable PC-Speaker support" if EXPERT 1745bc2eecd7SNicolas Pitre depends on HAVE_PCSPKR_PLATFORM 1746bc2eecd7SNicolas Pitre select I8253_LOCK 1747bc2eecd7SNicolas Pitre default y 174880367ad0SSebastian Andrzej Siewior help 174980367ad0SSebastian Andrzej Siewior This option allows to disable the internal PC-Speaker 175080367ad0SSebastian Andrzej Siewior support, saving some memory. 175180367ad0SSebastian Andrzej Siewior 175280367ad0SSebastian Andrzej Siewiorconfig BASE_SMALL 1753c042c505SPeter Zijlstra bool "Enable smaller-sized data structures for core" if EXPERT 1754c042c505SPeter Zijlstra help 1755c042c505SPeter Zijlstra Enabling this option reduces the size of miscellaneous core 1756c042c505SPeter Zijlstra kernel data structures. This saves memory on small machines, 1757c042c505SPeter Zijlstra but may reduce performance. 17581da177e4SLinus Torvalds 17596a108a14SDavid Rientjesconfig FUTEX 17601da177e4SLinus Torvalds bool "Enable futex support" if EXPERT 17611da177e4SLinus Torvalds depends on !(SPARC32 && SMP) 17621da177e4SLinus Torvalds default y 17631da177e4SLinus Torvalds imply RT_MUTEXES 17641da177e4SLinus Torvalds help 1765fba2afaaSDavide Libenzi Disabling this option will cause the kernel to be built without 17666a108a14SDavid Rientjes support for "fast userspace mutexes". The resulting kernel may not 1767fba2afaaSDavide Libenzi run glibc-based applications correctly. 1768fba2afaaSDavide Libenzi 1769fba2afaaSDavide Libenziconfig FUTEX_PI 1770fba2afaaSDavide Libenzi bool 1771fba2afaaSDavide Libenzi depends on FUTEX && RT_MUTEXES 1772fba2afaaSDavide Libenzi default y 1773fba2afaaSDavide Libenzi 1774b215e283SDavide Libenziconfig FUTEX_PRIVATE_HASH 17756a108a14SDavid Rientjes bool 1776b215e283SDavide Libenzi depends on FUTEX && !BASE_SMALL && MMU 1777b215e283SDavide Libenzi default y 1778b215e283SDavide Libenzi 1779b215e283SDavide Libenziconfig FUTEX_MPOL 1780b215e283SDavide Libenzi bool 1781b215e283SDavide Libenzi depends on FUTEX && NUMA 1782b215e283SDavide Libenzi default y 1783e1ad7468SDavide Libenzi 17846a108a14SDavid Rientjesconfig EPOLL 1785e1ad7468SDavide Libenzi bool "Enable eventpoll support" if EXPERT 1786e1ad7468SDavide Libenzi default y 1787e1ad7468SDavide Libenzi help 1788e1ad7468SDavide Libenzi Disabling this option will cause the kernel to be built without 1789e1ad7468SDavide Libenzi support for epoll family of system calls. 1790e1ad7468SDavide Libenzi 1791e1ad7468SDavide Libenziconfig SIGNALFD 17921da177e4SLinus Torvalds bool "Enable signalfd() system call" if EXPERT 17936a108a14SDavid Rientjes default y 17941da177e4SLinus Torvalds help 17951da177e4SLinus Torvalds Enable the signalfd() system call that allows to receive signals 17961da177e4SLinus Torvalds on a file descriptor. 17971da177e4SLinus Torvalds 17981da177e4SLinus Torvalds If unsure, say Y. 17991da177e4SLinus Torvalds 18001da177e4SLinus Torvaldsconfig TIMERFD 18011da177e4SLinus Torvalds bool "Enable timerfd() system call" if EXPERT 18021da177e4SLinus Torvalds default y 1803ebf3f09cSThomas Petazzoni help 18046a108a14SDavid Rientjes Enable the timerfd() system call that allows to receive timer 1805ebf3f09cSThomas Petazzoni events on a file descriptor. 1806ebf3f09cSThomas Petazzoni 1807ebf3f09cSThomas Petazzoni If unsure, say Y. 1808ebf3f09cSThomas Petazzoni 1809ebf3f09cSThomas Petazzoniconfig EVENTFD 1810ebf3f09cSThomas Petazzoni bool "Enable eventfd() system call" if EXPERT 18112b188cc1SJens Axboe default y 18122b188cc1SJens Axboe help 1813561fb04aSJens Axboe Enable the eventfd() system call that allows to receive both 18142b188cc1SJens Axboe kernel notification (ie. KAIO) or userspace notifications. 18152b188cc1SJens Axboe 18162b188cc1SJens Axboe If unsure, say Y. 18172b188cc1SJens Axboe 18182b188cc1SJens Axboeconfig SHMEM 18192b188cc1SJens Axboe bool "Use full shmem filesystem" if EXPERT 18201802656eSJens Axboe default y 18211802656eSJens Axboe depends on MMU 1822d1fbe1ebSRandy Dunlap help 18231802656eSJens Axboe The shmem is an internal filesystem used to manage shared memory. 18241802656eSJens Axboe It is backed by swap and manages resource limits. It is also exported 18251802656eSJens Axboe to userspace as tmpfs if TMPFS is enabled. Disabling this 18261802656eSJens Axboe option replaces shmem and tmpfs with the much simpler ramfs code, 18271802656eSJens Axboe which may be appropriate on small systems without swap. 18281802656eSJens Axboe 18291802656eSJens Axboeconfig AIO 18301802656eSJens Axboe bool "Enable AIO support" if EXPERT 18311802656eSJens Axboe default y 18321802656eSJens Axboe help 18333a0ae385SPavel Begunkov This option enables POSIX asynchronous I/O which may by used 18343a0ae385SPavel Begunkov by some high performance threaded applications. Disabling 18353a0ae385SPavel Begunkov this option saves about 7k. 18363a0ae385SPavel Begunkov 18373a0ae385SPavel Begunkovconfig IO_URING 18383a0ae385SPavel Begunkov bool "Enable IO uring support" if EXPERT 18393a0ae385SPavel Begunkov select IO_WQ 18403a0ae385SPavel Begunkov default y 18413a0ae385SPavel Begunkov help 18423a0ae385SPavel Begunkov This option enables support for the io_uring interface, enabling 18433a0ae385SPavel Begunkov applications to submit and complete IO through submission and 1844d3ac21caSJosh Triplett completion rings that are shared between the kernel and application. 1845d3ac21caSJosh Triplett 1846d3ac21caSJosh Triplettconfig GCOV_PROFILE_URING 1847d3ac21caSJosh Triplett bool "Enable GCOV profiling on the io_uring subsystem" 1848d3ac21caSJosh Triplett depends on IO_URING && GCOV_KERNEL 1849d3ac21caSJosh Triplett help 1850d3ac21caSJosh Triplett Enable GCOV profiling on the io_uring subsystem, to facilitate 1851d3ac21caSJosh Triplett code coverage testing. 1852d3ac21caSJosh Triplett 1853d3ac21caSJosh Triplett If unsure, say N. 18545b25b13aSMathieu Desnoyers 18555b25b13aSMathieu Desnoyers Note that this will have a negative impact on the performance of 18565b25b13aSMathieu Desnoyers the io_uring subsystem, hence this should only be enabled for 18575b25b13aSMathieu Desnoyers specific test purposes. 18585b25b13aSMathieu Desnoyers 18595b25b13aSMathieu Desnoyersconfig IO_URING_MOCK_FILE 18605b25b13aSMathieu Desnoyers tristate "Enable io_uring mock files (Experimental)" if EXPERT 18615b25b13aSMathieu Desnoyers default n 18625b25b13aSMathieu Desnoyers depends on IO_URING 18635b25b13aSMathieu Desnoyers help 18645b25b13aSMathieu Desnoyers Enable mock files for io_uring subststem testing. The ABI might 18655b25b13aSMathieu Desnoyers still change, so it's still experimental and should only be enabled 1866a751ea34SRandy Dunlap for specific test purposes. 1867a751ea34SRandy Dunlap 1868a751ea34SRandy Dunlap If unsure, say N. 1869a751ea34SRandy Dunlap 1870a751ea34SRandy Dunlapconfig ADVISE_SYSCALLS 1871a751ea34SRandy Dunlap bool "Enable madvise/fadvise syscalls" if EXPERT 1872a751ea34SRandy Dunlap default y 1873a751ea34SRandy Dunlap help 1874a751ea34SRandy Dunlap This option enables the madvise and fadvise syscalls, used by 1875a751ea34SRandy Dunlap applications to advise the kernel about their future memory or file 1876a751ea34SRandy Dunlap usage, improving performance. If building an embedded system where no 1877a751ea34SRandy Dunlap applications use these syscalls, you can disable this option to save 1878a751ea34SRandy Dunlap space. 1879a751ea34SRandy Dunlap 1880a751ea34SRandy Dunlapconfig MEMBARRIER 1881a751ea34SRandy Dunlap bool "Enable membarrier() system call" if EXPERT 1882a751ea34SRandy Dunlap default y 1883a751ea34SRandy Dunlap help 1884a751ea34SRandy Dunlap Enable the membarrier() system call that allows issuing memory 1885a751ea34SRandy Dunlap barriers across all running threads, which can be used to distribute 1886a751ea34SRandy Dunlap the cost of user-space memory barriers asymmetrically by transforming 1887a751ea34SRandy Dunlap pairs of memory barriers into pairs consisting of membarrier() and a 1888a751ea34SRandy Dunlap compiler barrier. 1889a751ea34SRandy Dunlap 1890a751ea34SRandy Dunlap If unsure, say Y. 1891a751ea34SRandy Dunlap 1892a751ea34SRandy Dunlapconfig KCMP 1893a751ea34SRandy Dunlap bool "Enable kcmp() system call" if EXPERT 1894a751ea34SRandy Dunlap help 1895a751ea34SRandy Dunlap Enable the kernel resource comparison system call. It provides 1896a751ea34SRandy Dunlap user-space with the ability to compare two processes to see if they 1897a751ea34SRandy Dunlap share a common resource, such as a file descriptor or even virtual 1898a751ea34SRandy Dunlap memory space. 1899a751ea34SRandy Dunlap 1900a751ea34SRandy Dunlap If unsure, say N. 1901a751ea34SRandy Dunlap 1902a751ea34SRandy Dunlapconfig RSEQ 1903a751ea34SRandy Dunlap bool "Enable rseq() system call" if EXPERT 1904a751ea34SRandy Dunlap default y 1905a751ea34SRandy Dunlap depends on HAVE_RSEQ 1906a751ea34SRandy Dunlap select MEMBARRIER 1907a751ea34SRandy Dunlap help 1908a751ea34SRandy Dunlap Enable the restartable sequences system call. It provides a 1909d1b069f5SRandy Dunlap user-space cache for the current CPU number value, which 1910d1b069f5SRandy Dunlap speeds up getting the current CPU number from user-space, 1911d1b069f5SRandy Dunlap as well as an ABI to speed up user-space operations on 1912d1b069f5SRandy Dunlap per-CPU data. 1913d1b069f5SRandy Dunlap 1914d1b069f5SRandy Dunlap If unsure, say Y. 1915d1b069f5SRandy Dunlap 1916d1b069f5SRandy Dunlapconfig DEBUG_RSEQ 191730f3bb09SZhen Lei default n 191830f3bb09SZhen Lei bool "Enable debugging of rseq() system call" if EXPERT 191930f3bb09SZhen Lei depends on RSEQ && DEBUG_KERNEL 192030f3bb09SZhen Lei help 192130f3bb09SZhen Lei Enable extra debugging checks for the rseq system call. 192230f3bb09SZhen Lei 192330f3bb09SZhen Lei If unsure, say N. 192430f3bb09SZhen Lei 192530f3bb09SZhen Leiconfig CACHESTAT_SYSCALL 192630f3bb09SZhen Lei bool "Enable cachestat() system call" if EXPERT 192730f3bb09SZhen Lei default y 192830f3bb09SZhen Lei help 192930f3bb09SZhen Lei Enable the cachestat system call, which queries the page cache 1930d1b069f5SRandy Dunlap statistics of a file (number of cached pages, dirty pages, 1931d1b069f5SRandy Dunlap pages marked for writeback, (recently) evicted pages). 1932d1b069f5SRandy Dunlap 1933d1b069f5SRandy Dunlap If unsure say Y here. 1934d1b069f5SRandy Dunlap 1935d1b069f5SRandy Dunlapconfig KALLSYMS 1936bdf0fe33SBaruch Siach bool "Load all symbols for debugging/ksymoops" if EXPERT 1937bdf0fe33SBaruch Siach default y 1938bdf0fe33SBaruch Siach help 1939bdf0fe33SBaruch Siach Say Y here to let the kernel print out symbolic crash information and 1940d1b069f5SRandy Dunlap symbolic stack backtraces. This increases the size of the kernel 1941d1b069f5SRandy Dunlap somewhat, as all symbols have to be loaded into the kernel image. 1942d1b069f5SRandy Dunlap 1943d1b069f5SRandy Dunlapconfig KALLSYMS_SELFTEST 1944d1b069f5SRandy Dunlap bool "Test the basic functions and performance of kallsyms" 1945d1b069f5SRandy Dunlap depends on KALLSYMS 1946bdf0fe33SBaruch Siach default n 1947d1b069f5SRandy Dunlap help 1948d1b069f5SRandy Dunlap Test the basic functions and performance of some interfaces, such as 1949d1b069f5SRandy Dunlap kallsyms_lookup_name. It also calculates the compression rate of the 19503ccfebedSMathieu Desnoyers kallsyms compression algorithm for the current symbol set. 19513ccfebedSMathieu Desnoyers 19523ccfebedSMathieu Desnoyers Start self-test automatically after system startup. Suggest executing 195370216e18SMathieu Desnoyers "dmesg | grep kallsyms_selftest" to collect test results. "finish" is 195470216e18SMathieu Desnoyers displayed in the last line, indicating that the test is complete. 195570216e18SMathieu Desnoyers 19565796d396SJeff Xuconfig KALLSYMS_ALL 19575796d396SJeff Xu bool "Include all symbols in kallsyms" 19585796d396SJeff Xu depends on DEBUG_KERNEL && KALLSYMS 19595796d396SJeff Xu help 19605796d396SJeff Xu Normally kallsyms only contains the symbols of functions for nicer 19615796d396SJeff Xu OOPS messages and backtraces (i.e., symbols from the text and inittext 19625796d396SJeff Xu sections). This is sufficient for most cases. And only if you want to 19635796d396SJeff Xu enable kernel live patching, or other less common use cases (e.g., 19645796d396SJeff Xu when a debugger is used) all symbols are required (i.e., names of 19655796d396SJeff Xu variables from the data sections, etc). 19665796d396SJeff Xu 19675796d396SJeff Xu This option makes sure that all symbols are loaded into the kernel 19685796d396SJeff Xu image (i.e., symbols from all sections) in cost of increased kernel 19695796d396SJeff Xu size (depending on the kernel configuration, it may be 300KiB or 19705796d396SJeff Xu something like this). 19715796d396SJeff Xu 19725796d396SJeff Xu Say N unless you really need all symbols, or kernel live patching. 19735796d396SJeff Xu 19745796d396SJeff Xu# end of the "standard kernel features (expert users)" menu 19755796d396SJeff Xu 19765796d396SJeff Xuconfig ARCH_HAS_MEMBARRIER_CALLBACKS 19775796d396SJeff Xu bool 1978cdd6c482SIngo Molnar 19790793a61dSThomas Gleixnerconfig ARCH_HAS_MEMBARRIER_SYNC_CORE 1980018df72dSMike Frysinger bool 1981018df72dSMike Frysinger 19820793a61dSThomas Gleixnerconfig ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS 19832aef6f30SSean Christopherson bool 19842aef6f30SSean Christopherson help 19852aef6f30SSean Christopherson Control MSEAL_SYSTEM_MAPPINGS access based on architecture. 19862aef6f30SSean Christopherson 1987906010b2SPeter Zijlstra A 64-bit kernel is required for the memory sealing feature. 1988906010b2SPeter Zijlstra No specific hardware features from the CPU are needed. 1989906010b2SPeter Zijlstra 1990906010b2SPeter Zijlstra To enable this feature, the architecture needs to update their 1991906010b2SPeter Zijlstra special mappings calls to include the sealing flag and confirm 199257c0c15bSIngo Molnar that it doesn't unmap/remap system mappings during the life 19930793a61dSThomas Gleixner time of the process. The existence of this flag for an architecture 1994cdd6c482SIngo Molnar implies that it does not require the remapping of the system 199557c0c15bSIngo Molnar mappings during process lifetime, so sealing these mappings is safe 1996392d65a9SRobert Richter from a kernel perspective. 1997cdd6c482SIngo Molnar 1998e360adbeSPeter Zijlstra After the architecture enables this, a distribution can set 19990793a61dSThomas Gleixner CONFIG_MSEAL_SYSTEM_MAPPING to manage access to the feature. 200057c0c15bSIngo Molnar 200157c0c15bSIngo Molnar For complete descriptions of memory sealing, please see 20020793a61dSThomas Gleixner Documentation/userspace-api/mseal.rst 2003dd77038dSThadeu Lima de Souza Cascardo 200457c0c15bSIngo Molnarconfig HAVE_PERF_EVENTS 200557c0c15bSIngo Molnar bool 200657c0c15bSIngo Molnar help 200757c0c15bSIngo Molnar See tools/perf/design.txt for details. 20080793a61dSThomas Gleixner 20090793a61dSThomas Gleixnerconfig GUEST_PERF_EVENTS 20100793a61dSThomas Gleixner bool 20110793a61dSThomas Gleixner depends on HAVE_PERF_EVENTS 20120793a61dSThomas Gleixner 20130793a61dSThomas Gleixnerconfig PERF_USE_VMALLOC 201457c0c15bSIngo Molnar bool 2015dd77038dSThadeu Lima de Souza Cascardo help 201657c0c15bSIngo Molnar See tools/perf/design.txt for details 20170793a61dSThomas Gleixner 20180793a61dSThomas Gleixnermenu "Kernel Performance Events And Counters" 20190793a61dSThomas Gleixner 20200793a61dSThomas Gleixnerconfig PERF_EVENTS 20210793a61dSThomas Gleixner bool "Kernel performance events and counters" 2022906010b2SPeter Zijlstra default y if PROFILING 2023906010b2SPeter Zijlstra depends on HAVE_PERF_EVENTS 2024906010b2SPeter Zijlstra select IRQ_WORK 2025cb307113SMichael Ellerman help 2026906010b2SPeter Zijlstra Enable kernel support for various performance events provided 2027906010b2SPeter Zijlstra by software and hardware. 2028906010b2SPeter Zijlstra 2029906010b2SPeter Zijlstra Software events are supported either built-in or via the 2030906010b2SPeter Zijlstra use of generic tracepoints. 2031906010b2SPeter Zijlstra 2032906010b2SPeter Zijlstra Most modern CPUs support performance events via performance 2033906010b2SPeter Zijlstra counter registers. These registers count the number of certain 2034906010b2SPeter Zijlstra types of hw events: such as instructions executed, cachemisses 20350793a61dSThomas Gleixner suffered, or branches mis-predicted - without slowing down the 20360793a61dSThomas Gleixner kernel or applications. These registers can also trigger interrupts 2037091f6e26SDavid Howells when a threshold number of events have passed - and can thus be 2038091f6e26SDavid Howells used to profile the code that runs on that CPU. 2039091f6e26SDavid Howells 2040091f6e26SDavid Howells The Linux Performance Event subsystem provides an abstraction of 2041091f6e26SDavid Howells these software and hardware event capabilities, available via a 2042d43de6c7SDavid Howells system call and used by the "perf" utility in tools/perf/. It 2043091f6e26SDavid Howells provides per task and per CPU counters, and it provides event 2044091f6e26SDavid Howells capabilities on top of those. 2045091f6e26SDavid Howells 2046091f6e26SDavid Howells Say Y if unsure. 2047091f6e26SDavid Howells 2048091f6e26SDavid Howellsconfig DEBUG_PERF_USE_VMALLOC 204982c04ff8SPeter Foley default n 2050091f6e26SDavid Howells bool "Debug: use vmalloc to back perf mmap() buffers" 2051091f6e26SDavid Howells depends on PERF_EVENTS && DEBUG_KERNEL && !PPC 2052091f6e26SDavid Howells select PERF_USE_VMALLOC 2053091f6e26SDavid Howells help 205482c04ff8SPeter Foley Use vmalloc memory to back perf mmap() buffers. 2055125e5645SMathieu Desnoyers 2056b309a294SRobert Richter Mostly useful for debugging the vmalloc code on platforms 2057125e5645SMathieu Desnoyers that don't require it. 2058125e5645SMathieu Desnoyers 2059f8408264SViresh Kumar Say N if unsure. 2060125e5645SMathieu Desnoyers 20612f7ab126SMiguel Ojedaendmenu 20622f7ab126SMiguel Ojeda 20632f7ab126SMiguel Ojedaconfig SYSTEM_DATA_VERIFICATION 20642f7ab126SMiguel Ojeda def_bool n 2065ac61506bSSami Tolvanen select SYSTEM_TRUSTED_KEYRING 2066ac61506bSSami Tolvanen select KEYS 2067f1385dc6SNeal Gompa select CRYPTO 20682f7ab126SMiguel Ojeda select CRYPTO_RSA 20695daa0c35SMatthew Maurer select ASYMMETRIC_KEY_TYPE 20708b8ca9c2SAlice Ryhl select ASYMMETRIC_PUBLIC_KEY_SUBTYPE 2071ca627e63SMatthew Maurer select ASN1 2072af6017b6SMiguel Ojeda select OID_REGISTRY 2073f64e2f3aSMatthew Maurer select X509_CERTIFICATE_PARSER 207493e34a0bSAlice Ryhl select PKCS7_MESSAGE_PARSER 20752f7ab126SMiguel Ojeda help 20762f7ab126SMiguel Ojeda Provide PKCS#7 message verification using the contents of the system 20772f7ab126SMiguel Ojeda trusted keyring to provide public keys. This then can be used for 20782f7ab126SMiguel Ojeda module verification, kexec image verification and firmware blob 20792f7ab126SMiguel Ojeda verification. 20802f7ab126SMiguel Ojeda 20812f7ab126SMiguel Ojedaconfig PROFILING 20822f7ab126SMiguel Ojeda bool "Profiling support" 20832f7ab126SMiguel Ojeda help 20842f7ab126SMiguel Ojeda Say Y here to enable the extended profiling support mechanisms used 20852f7ab126SMiguel Ojeda by profilers. 20862f7ab126SMiguel Ojeda 20872f7ab126SMiguel Ojedaconfig RUST 20882f7ab126SMiguel Ojeda bool "Rust support" 20892f7ab126SMiguel Ojeda depends on HAVE_RUST 20902f7ab126SMiguel Ojeda depends on RUST_IS_AVAILABLE 20915134a335SMiguel Ojeda select EXTENDED_MODVERSIONS if MODVERSIONS 20925134a335SMiguel Ojeda depends on !MODVERSIONS || GENDWARFKSYMS 20935134a335SMiguel Ojeda depends on !GCC_PLUGIN_RANDSTRUCT 20942f7ab126SMiguel Ojeda depends on !RANDSTRUCT 20952f7ab126SMiguel Ojeda depends on !DEBUG_INFO_BTF || (PAHOLE_HAS_LANG_EXCLUDE && !LTO) 20962f7ab126SMiguel Ojeda depends on !CFI || HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC 20972f7ab126SMiguel Ojeda select CFI_ICALL_NORMALIZE_INTEGERS if CFI 20989e98db17SMiguel Ojeda depends on !CALL_PADDING || RUSTC_VERSION >= 108100 2099c23d1f7eSMiguel Ojeda depends on !KASAN_SW_TAGS 2100c23d1f7eSMiguel Ojeda depends on !(MITIGATION_RETHUNK && KASAN) || RUSTC_VERSION >= 108300 2101c23d1f7eSMiguel Ojeda help 2102c23d1f7eSMiguel Ojeda Enables Rust support in the kernel. 2103aacf93e8SMasahiro Yamada 21042f7ab126SMiguel Ojeda This allows other Rust-related options, like drivers written in Rust, 21055f87f112SIngo Molnar to be selected. 21065f87f112SIngo Molnar 21075f87f112SIngo Molnar It is also required to be able to load external kernel modules 21085f87f112SIngo Molnar written in Rust. 210997e1c18eSMathieu Desnoyers 21105f87f112SIngo Molnar See Documentation/rust/ for more information. 2111a363d27cSMathieu Desnoyers 211297e1c18eSMathieu Desnoyers If unsure, say N. 211389cde455SEric DeVolder 211489cde455SEric DeVolderconfig RUSTC_VERSION_TEXT 21151da177e4SLinus Torvalds string 21161da177e4SLinus Torvalds depends on RUST 21171572497cSChristoph Hellwig default "$(RUSTC_VERSION_TEXT)" 21181572497cSChristoph Hellwig help 2119ae81f9e3SChuck Ebbert See `CC_VERSION_TEXT`. 21206341e62bSChristoph Jaeger 21211c6f9ec0SSebastian Andrzej Siewiorconfig BINDGEN_VERSION_TEXT 2122ae81f9e3SChuck Ebbert string 2123c8424e77SThiago Jung Bauermann depends on RUST 2124c8424e77SThiago Jung Bauermann # The dummy parameter `workaround-for-0.69.0` is required to support 0.69.0 2125c8424e77SThiago Jung Bauermann # (https://github.com/rust-lang/rust-bindgen/pull/2678) and 0.71.0 2126c8424e77SThiago Jung Bauermann # (https://github.com/rust-lang/rust-bindgen/pull/3040). It can be removed 212773b4fc92SChristophe Leroy # when the minimum version is upgraded past the latter (0.69.1 and 0.71.1 21286c9692e2SPeter Zijlstra # both fixed the issue). 212998a79d6aSRusty Russell default "$(shell,$(BINDGEN) --version workaround-for-0.69.0 2>/dev/null)" 213098a79d6aSRusty Russell 213198a79d6aSRusty Russell# 21325f054e31SRusty Russell# Place an empty function call at each tracepoint site. Can be 21335f054e31SRusty Russell# dynamically changed for a probe function. 213498a79d6aSRusty Russell# 213598a79d6aSRusty Russellconfig TRACEPOINTS 2136692105b8SMatt LaPlante bool 213798a79d6aSRusty Russell select TASKS_TRACE_RCU 21383a65dfe8SJens Axboe 2139e98c3202SAvi Kivitysource "kernel/Kconfig.kexec" 2140e98c3202SAvi Kivity 2141e98c3202SAvi Kivityendmenu # General setup 2142e260be67SPaul E. McKenney 214316295becSSteffen Klassertsource "arch/Kconfig" 214416295becSSteffen Klassert 214516295becSSteffen Klassertconfig RT_MUTEXES 214616295becSSteffen Klassert bool 21474520c6a4SDavid Howells default y if PREEMPT_RT 21484520c6a4SDavid Howells 21494520c6a4SDavid Howellsconfig MODULE_SIG_FORMAT 21504520c6a4SDavid Howells def_bool n 21514520c6a4SDavid Howells select SYSTEM_DATA_VERIFICATION 21524520c6a4SDavid Howells 21534520c6a4SDavid Howellssource "kernel/module/Kconfig" 21544520c6a4SDavid Howells 21556beb0009SThomas Gleixnerconfig INIT_ALL_POSSIBLE 2156e61938a9SMathieu Desnoyers bool 21570ebeea8cSDaniel Borkmann help 21580ebeea8cSDaniel Borkmann Back when each arch used to define their own cpu_online_mask and 21590ebeea8cSDaniel Borkmann cpu_possible_mask, some of them chose to initialize cpu_possible_mask 21604ff4c745SAndrea Parri with all 1s, and others with all 0s. When they were centralised, 21614ff4c745SAndrea Parri it was better to provide this option than to break all the archs 21624ff4c745SAndrea Parri and have several arch maintainers pursuing me down dark alleys. 2163e61938a9SMathieu Desnoyers 2164e61938a9SMathieu Desnoyerssource "block/Kconfig" 21651bd21c6cSDominik Brodowski 21661bd21c6cSDominik Brodowskiconfig PREEMPT_NOTIFIERS 21677303e30eSDominik Brodowski bool 21687303e30eSDominik Brodowski 21697303e30eSDominik Brodowskiconfig PADATA 21707303e30eSDominik Brodowski depends on SMP 21717303e30eSDominik Brodowski bool 21727303e30eSDominik Brodowski 21731bd21c6cSDominik Brodowskiconfig ASN1 21741bd21c6cSDominik Brodowski tristate 2175 help 2176 Build a simple ASN.1 grammar compiler that produces a bytecode output 2177 that can be interpreted by the ASN.1 stream decoder and used to 2178 inform it as to what tags are to be expected in a stream and what 2179 functions to call on what tags. 2180 2181source "kernel/Kconfig.locks" 2182 2183config ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 2184 bool 2185 2186config ARCH_HAS_PREPARE_SYNC_CORE_CMD 2187 bool 2188 2189config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 2190 bool 2191 2192# It may be useful for an architecture to override the definitions of the 2193# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h> 2194# and the COMPAT_ variants in <linux/compat.h>, in particular to use a 2195# different calling convention for syscalls. They can also override the 2196# macros for not-implemented syscalls in kernel/sys_ni.c and 2197# kernel/time/posix-stubs.c. All these overrides need to be available in 2198# <asm/syscall_wrapper.h>. 2199config ARCH_HAS_SYSCALL_WRAPPER 2200 def_bool n 2201