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 85deab487eSThomas Weißschuhconfig ARCH_HAS_CC_CAN_LINK 86deab487eSThomas Weißschuh bool 87deab487eSThomas Weißschuh 881a927fd3SMasahiro Yamadaconfig CC_CAN_LINK 899371f86eSMasahiro Yamada bool 90deab487eSThomas Weißschuh default ARCH_CC_CAN_LINK if ARCH_HAS_CC_CAN_LINK 9180623f2cSThomas Weißschuh default $(cc_can_link_user,$(m64-flag)) if 64BIT 9280623f2cSThomas Weißschuh default $(cc_can_link_user,$(m32-flag)) 931a927fd3SMasahiro Yamada 94f2f6a8e8SMark Rutland# Fixed in GCC 14, 13.3, 12.4 and 11.5 95f2f6a8e8SMark Rutland# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113921 96f2f6a8e8SMark Rutlandconfig GCC_ASM_GOTO_OUTPUT_BROKEN 97f2f6a8e8SMark Rutland bool 98f2f6a8e8SMark Rutland depends on CC_IS_GCC 99f2f6a8e8SMark Rutland default y if GCC_VERSION < 110500 100f2f6a8e8SMark Rutland default y if GCC_VERSION >= 120000 && GCC_VERSION < 120400 101f2f6a8e8SMark Rutland default y if GCC_VERSION >= 130000 && GCC_VERSION < 130300 102f2f6a8e8SMark Rutland 103587f1701SNick Desaulniersconfig CC_HAS_ASM_GOTO_OUTPUT 104f2f6a8e8SMark Rutland def_bool y 105f2f6a8e8SMark Rutland depends on !GCC_ASM_GOTO_OUTPUT_BROKEN 106e2ffa15bSThomas Gleixner # Detect basic support 107f2f6a8e8SMark Rutland 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) 108e2ffa15bSThomas Gleixner # Detect clang (< v17) scoped label issues 109fde0ab43SLinus Torvalds 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) 110587f1701SNick Desaulniers 1111aa0e8b1SSean Christophersonconfig CC_HAS_ASM_GOTO_TIED_OUTPUT 1121aa0e8b1SSean Christopherson depends on CC_HAS_ASM_GOTO_OUTPUT 1131aa0e8b1SSean Christopherson # Detect buggy gcc and clang, fixed in gcc-11 clang-14. 114534bd703SAlexandre Belloni 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) 1151aa0e8b1SSean Christopherson 1165cf896fbSPeter Collingbourneconfig TOOLS_SUPPORT_RELR 1172d122942SWill Deacon def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) 1185cf896fbSPeter Collingbourne 119eb111869SRasmus Villemoesconfig CC_HAS_ASM_INLINE 120eb111869SRasmus Villemoes def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 121eb111869SRasmus Villemoes 122f72e2cffSHeiko Carstensconfig CC_HAS_ASSUME 123f72e2cffSHeiko Carstens bool 124f72e2cffSHeiko Carstens # clang needs to be at least 19.1.0 since the meaning of the assume 125f72e2cffSHeiko Carstens # attribute changed: 126f72e2cffSHeiko Carstens # https://github.com/llvm/llvm-project/commit/c44fa3e8a9a44c2e9a575768a3c185354b9f6c17 127f72e2cffSHeiko Carstens default y if CC_IS_CLANG && CLANG_VERSION >= 190100 128f72e2cffSHeiko Carstens # supported since gcc 13.1.0 129f72e2cffSHeiko Carstens # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106654 130f72e2cffSHeiko Carstens default y if CC_IS_GCC && GCC_VERSION >= 130100 131f72e2cffSHeiko Carstens 13251c2ee6dSNick Desaulniersconfig CC_HAS_NO_PROFILE_FN_ATTR 13351c2ee6dSNick Desaulniers def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror) 13451c2ee6dSNick Desaulniers 135f06e108aSJan Hendrik Farrconfig CC_HAS_COUNTED_BY 1365106c650SJan Hendrik Farr bool 13786a9b125SNathan Chancellor # clang needs to be at least 20.1.0 to avoid potential crashes 13886a9b125SNathan Chancellor # when building structures that contain __counted_by 13986a9b125SNathan Chancellor # https://github.com/ClangBuiltLinux/linux/issues/2114 14086a9b125SNathan Chancellor # https://github.com/llvm/llvm-project/commit/160fb1121cdf703c3ef5e61fb26c5659eb581489 14186a9b125SNathan Chancellor default y if CC_IS_CLANG && CLANG_VERSION >= 200100 1425106c650SJan Hendrik Farr # supported since gcc 15.1.0 1435106c650SJan Hendrik Farr # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896 1445106c650SJan Hendrik Farr default y if CC_IS_GCC && GCC_VERSION >= 150100 145f06e108aSJan Hendrik Farr 146150a04d8SBill Wendlingconfig CC_HAS_COUNTED_BY_PTR 147150a04d8SBill Wendling bool 148150a04d8SBill Wendling # supported since clang 22 149150a04d8SBill Wendling default y if CC_IS_CLANG && CLANG_VERSION >= 220000 150150a04d8SBill Wendling # supported since gcc 16.0.0 151150a04d8SBill Wendling default y if CC_IS_GCC && GCC_VERSION >= 160000 152150a04d8SBill Wendling 153b688f369SKees Cookconfig CC_HAS_MULTIDIMENSIONAL_NONSTRING 154b688f369SKees Cook def_bool $(success,echo 'char tag[][4] __attribute__((__nonstring__)) = { };' | $(CC) $(CLANG_FLAGS) -x c - -c -o /dev/null -Werror) 155b688f369SKees Cook 156e7607f7dSNathan Chancellorconfig LD_CAN_USE_KEEP_IN_OVERLAY 157e7607f7dSNathan Chancellor # ld.lld prior to 21.0.0 did not support KEEP within an overlay description 158e7607f7dSNathan Chancellor # https://github.com/llvm/llvm-project/pull/130661 159e7607f7dSNathan Chancellor def_bool LD_IS_BFD || LLD_VERSION >= 210000 160e7607f7dSNathan Chancellor 16188622323SAlexandre Courbotconfig RUSTC_HAS_SLICE_AS_FLATTENED 16288622323SAlexandre Courbot def_bool RUSTC_VERSION >= 108000 16388622323SAlexandre Courbot 16447cb6bf7SXiangfei Dingconfig RUSTC_HAS_COERCE_POINTEE 16547cb6bf7SXiangfei Ding def_bool RUSTC_VERSION >= 108400 16647cb6bf7SXiangfei Ding 16736174d16SMiguel Ojedaconfig RUSTC_HAS_SPAN_FILE 16836174d16SMiguel Ojeda def_bool RUSTC_VERSION >= 108800 16936174d16SMiguel Ojeda 1707129ea6eSMiguel Ojedaconfig RUSTC_HAS_UNNECESSARY_TRANSMUTES 1717129ea6eSMiguel Ojeda def_bool RUSTC_VERSION >= 108800 1727129ea6eSMiguel Ojeda 1730aa2b78cSBoqun Fengconfig RUSTC_HAS_FILE_WITH_NUL 1740aa2b78cSBoqun Feng def_bool RUSTC_VERSION >= 108900 1750aa2b78cSBoqun Feng 176c09461a0SAlice Ryhlconfig RUSTC_HAS_FILE_AS_C_STR 177c09461a0SAlice Ryhl def_bool RUSTC_VERSION >= 109100 178c09461a0SAlice Ryhl 179613fe169SNathan Chancellorconfig PAHOLE_VERSION 180613fe169SNathan Chancellor int 18190e5b38aSIhor Solodrai default "$(PAHOLE_VERSION)" 182613fe169SNathan Chancellor 183b99b87f7SPeter Oberparleiterconfig CONSTRUCTORS 184b99b87f7SPeter Oberparleiter bool 185b99b87f7SPeter Oberparleiter 186e360adbeSPeter Zijlstraconfig IRQ_WORK 187fd0a68a2STejun Heo def_bool y if SMP 188e360adbeSPeter Zijlstra 18910916706SShile Zhangconfig BUILDTIME_TABLE_SORT 1901dbdc6f1SDavid Daney bool 1911dbdc6f1SDavid Daney 192c65eacbeSAndy Lutomirskiconfig THREAD_INFO_IN_TASK 193c65eacbeSAndy Lutomirski bool 194c65eacbeSAndy Lutomirski help 195c65eacbeSAndy Lutomirski Select this to move thread_info off the stack into task_struct. To 196c65eacbeSAndy Lutomirski make this work, an arch will need to remove all thread_info fields 197c65eacbeSAndy Lutomirski except flags and fix any runtime bugs. 198c65eacbeSAndy Lutomirski 199c6c314a6SAndy Lutomirski One subtle change that will be needed is to use try_get_task_stack() 200c6c314a6SAndy Lutomirski and put_task_stack() in save_thread_stack_tsk() and get_wchan(). 201c6c314a6SAndy Lutomirski 202ff0cfc66SAl Boldimenu "General setup" 2031da177e4SLinus Torvalds 2041da177e4SLinus Torvaldsconfig BROKEN 2051da177e4SLinus Torvalds bool 206fefbeed8SAndrew Morton help 207fefbeed8SAndrew Morton This option allows you to choose whether you want to try to 208fefbeed8SAndrew Morton compile (and fix) old drivers that haven't been updated to 209fefbeed8SAndrew Morton new infrastructure. 2101da177e4SLinus Torvalds 2111da177e4SLinus Torvaldsconfig BROKEN_ON_SMP 2121da177e4SLinus Torvalds bool 2131da177e4SLinus Torvalds depends on BROKEN || !SMP 2141da177e4SLinus Torvalds default y 2151da177e4SLinus Torvalds 2161da177e4SLinus Torvaldsconfig INIT_ENV_ARG_LIMIT 2171da177e4SLinus Torvalds int 218dd673bcaSAdrian Bunk default 32 if !UML 219dd673bcaSAdrian Bunk default 128 if UML 2201da177e4SLinus Torvalds help 22134ad92c2SRandy Dunlap Maximum of each of the number of arguments and environment 22234ad92c2SRandy Dunlap variables passed to init from the kernel command line. 2231da177e4SLinus Torvalds 2244bb16672SJiri Slabyconfig COMPILE_TEST 2254bb16672SJiri Slaby bool "Compile also drivers which will not load" 226ea29b20aSMasahiro Yamada depends on HAS_IOMEM 2274bb16672SJiri Slaby help 2284bb16672SJiri Slaby Some drivers can be compiled on a different platform than they are 2294bb16672SJiri Slaby intended to be run on. Despite they cannot be loaded there (or even 2304bb16672SJiri Slaby when they load they cannot be used due to missing HW support), 2314bb16672SJiri Slaby developers still, opposing to distributors, might want to build such 2324bb16672SJiri Slaby drivers to compile-test them. 2334bb16672SJiri Slaby 2344bb16672SJiri Slaby If you are a developer and want to build everything available, say Y 2354bb16672SJiri Slaby here. If you are a user/distributor, say N here to exclude useless 2364bb16672SJiri Slaby drivers to be distributed. 2374bb16672SJiri Slaby 2383fe617ccSLinus Torvaldsconfig WERROR 2393fe617ccSLinus Torvalds bool "Compile the kernel with warnings as errors" 240b339ec9cSMarco Elver default COMPILE_TEST 2413fe617ccSLinus Torvalds help 2423fe617ccSLinus Torvalds A kernel build should not cause any compiler warnings, and this 2432f7ab126SMiguel Ojeda enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags 244e1789d7cSXin Li to enforce that rule by default. Certain warnings from other tools 245e1789d7cSXin Li such as the linker may be upgraded to errors with this option as 246e1789d7cSXin Li well. 2473fe617ccSLinus Torvalds 248e1789d7cSXin Li However, if you have a new (or very old) compiler or linker with odd 249e1789d7cSXin Li and unusual warnings, or you have some architecture with problems, 2503fe617ccSLinus Torvalds you may need to disable this config option in order to 2513fe617ccSLinus Torvalds successfully build the kernel. 2523fe617ccSLinus Torvalds 2533fe617ccSLinus Torvalds If in doubt, say Y. 2543fe617ccSLinus Torvalds 255d6fc9fcbSMasahiro Yamadaconfig UAPI_HEADER_TEST 256d6fc9fcbSMasahiro Yamada bool "Compile test UAPI headers" 2572a0a3080SThomas Weißschuh depends on HEADERS_INSTALL 258d6fc9fcbSMasahiro Yamada help 259d6fc9fcbSMasahiro Yamada Compile test headers exported to user-space to ensure they are 260d6fc9fcbSMasahiro Yamada self-contained, i.e. compilable as standalone units. 261d6fc9fcbSMasahiro Yamada 262d6fc9fcbSMasahiro Yamada If you are a developer or tester and want to ensure the exported 263d6fc9fcbSMasahiro Yamada headers are self-contained, say Y here. Otherwise, choose N. 264d6fc9fcbSMasahiro Yamada 2651da177e4SLinus Torvaldsconfig LOCALVERSION 2661da177e4SLinus Torvalds string "Local version - append to kernel release" 2671da177e4SLinus Torvalds help 2681da177e4SLinus Torvalds Append an extra string to the end of your kernel version. 2691da177e4SLinus Torvalds This will show up when you type uname, for example. 2701da177e4SLinus Torvalds The string you set here will be appended after the contents of 2711da177e4SLinus Torvalds any files with a filename matching localversion* in your 2721da177e4SLinus Torvalds object and source tree, in that order. Your total string can 2731da177e4SLinus Torvalds be a maximum of 64 characters. 2741da177e4SLinus Torvalds 275aaebf433SRyan Andersonconfig LOCALVERSION_AUTO 276aaebf433SRyan Anderson bool "Automatically append version information to the version string" 277aaebf433SRyan Anderson default y 278ac3339baSAlexey Dobriyan depends on !COMPILE_TEST 279aaebf433SRyan Anderson help 280aaebf433SRyan Anderson This will try to automatically determine if the current tree is a 2816e5a5420SRobert P. J. Day release tree by looking for git tags that belong to the current 2826e5a5420SRobert P. J. Day top of tree revision. 283aaebf433SRyan Anderson 284aaebf433SRyan Anderson A string of the format -gxxxxxxxx will be added to the localversion 2856e5a5420SRobert P. J. Day if a git-based tree is found. The string generated by this will be 286aaebf433SRyan Anderson appended after any matching localversion* files, and after the value 2876e5a5420SRobert P. J. Day set in CONFIG_LOCALVERSION. 288aaebf433SRyan Anderson 2890f9c608dSRasmus Villemoes (The actual string used here is the first 12 characters produced 2906e5a5420SRobert P. J. Day by running the command: 2916e5a5420SRobert P. J. Day 2926e5a5420SRobert P. J. Day $ git rev-parse --verify HEAD 2936e5a5420SRobert P. J. Day 2946e5a5420SRobert P. J. Day which is done within the script "scripts/setlocalversion".) 295aaebf433SRyan Anderson 2969afb719eSLaura Abbottconfig BUILD_SALT 2979afb719eSLaura Abbott string "Build ID Salt" 2989afb719eSLaura Abbott default "" 2999afb719eSLaura Abbott help 3009afb719eSLaura Abbott The build ID is used to link binaries and their debug info. Setting 3019afb719eSLaura Abbott this option will use the value in the calculation of the build id. 3029afb719eSLaura Abbott This is mostly useful for distributions which want to ensure the 3039afb719eSLaura Abbott build is unique between builds. It's safe to leave the default. 3049afb719eSLaura Abbott 3052e9f3bddSH. Peter Anvinconfig HAVE_KERNEL_GZIP 3062e9f3bddSH. Peter Anvin bool 3072e9f3bddSH. Peter Anvin 3082e9f3bddSH. Peter Anvinconfig HAVE_KERNEL_BZIP2 3092e9f3bddSH. Peter Anvin bool 3102e9f3bddSH. Peter Anvin 3112e9f3bddSH. Peter Anvinconfig HAVE_KERNEL_LZMA 3122e9f3bddSH. Peter Anvin bool 3132e9f3bddSH. Peter Anvin 3143ebe1243SLasse Collinconfig HAVE_KERNEL_XZ 3153ebe1243SLasse Collin bool 3163ebe1243SLasse Collin 3177dd65febSAlbin Tonnerreconfig HAVE_KERNEL_LZO 3187dd65febSAlbin Tonnerre bool 3197dd65febSAlbin Tonnerre 320e76e1fdfSKyungsik Leeconfig HAVE_KERNEL_LZ4 321e76e1fdfSKyungsik Lee bool 322e76e1fdfSKyungsik Lee 32348f7ddf7SNick Terrellconfig HAVE_KERNEL_ZSTD 32448f7ddf7SNick Terrell bool 32548f7ddf7SNick Terrell 326f16466afSVasily Gorbikconfig HAVE_KERNEL_UNCOMPRESSED 327f16466afSVasily Gorbik bool 328f16466afSVasily Gorbik 32930d65dbfSAlain Knaffchoice 33030d65dbfSAlain Knaff prompt "Kernel compression mode" 33130d65dbfSAlain Knaff default KERNEL_GZIP 33248f7ddf7SNick Terrell 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 33330d65dbfSAlain Knaff help 33430d65dbfSAlain Knaff The linux kernel is a kind of self-extracting executable. 33530d65dbfSAlain Knaff Several compression algorithms are available, which differ 33630d65dbfSAlain Knaff in efficiency, compression and decompression speed. 33730d65dbfSAlain Knaff Compression speed is only relevant when building a kernel. 33830d65dbfSAlain Knaff Decompression speed is relevant at each boot. 33930d65dbfSAlain Knaff 34030d65dbfSAlain Knaff If you have any problems with bzip2 or lzma compressed 34130d65dbfSAlain Knaff kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 34230d65dbfSAlain Knaff version of this functionality (bzip2 only), for 2.4, was 34330d65dbfSAlain Knaff supplied by Christian Ludwig) 34430d65dbfSAlain Knaff 34530d65dbfSAlain Knaff High compression options are mostly useful for users, who 34630d65dbfSAlain Knaff are low on disk space (embedded systems), but for whom ram 34730d65dbfSAlain Knaff size matters less. 34830d65dbfSAlain Knaff 34930d65dbfSAlain Knaff If in doubt, select 'gzip' 35030d65dbfSAlain Knaff 35130d65dbfSAlain Knaffconfig KERNEL_GZIP 35230d65dbfSAlain Knaff bool "Gzip" 3532e9f3bddSH. Peter Anvin depends on HAVE_KERNEL_GZIP 35430d65dbfSAlain Knaff help 3557dd65febSAlbin Tonnerre The old and tried gzip compression. It provides a good balance 3567dd65febSAlbin Tonnerre between compression ratio and decompression speed. 35730d65dbfSAlain Knaff 35830d65dbfSAlain Knaffconfig KERNEL_BZIP2 35930d65dbfSAlain Knaff bool "Bzip2" 3602e9f3bddSH. Peter Anvin depends on HAVE_KERNEL_BZIP2 36130d65dbfSAlain Knaff help 36230d65dbfSAlain Knaff Its compression ratio and speed is intermediate. 3630a4dd35cSRandy Dunlap Decompression speed is slowest among the choices. The kernel 3642e9f3bddSH. Peter Anvin size is about 10% smaller with bzip2, in comparison to gzip. 3652e9f3bddSH. Peter Anvin Bzip2 uses a large amount of memory. For modern kernels you 3662e9f3bddSH. Peter Anvin will need at least 8MB RAM or more for booting. 36730d65dbfSAlain Knaff 36830d65dbfSAlain Knaffconfig KERNEL_LZMA 36930d65dbfSAlain Knaff bool "LZMA" 3702e9f3bddSH. Peter Anvin depends on HAVE_KERNEL_LZMA 37130d65dbfSAlain Knaff help 3720a4dd35cSRandy Dunlap This compression algorithm's ratio is best. Decompression speed 3730a4dd35cSRandy Dunlap is between gzip and bzip2. Compression is slowest. 3740a4dd35cSRandy Dunlap The kernel size is about 33% smaller with LZMA in comparison to gzip. 37530d65dbfSAlain Knaff 3763ebe1243SLasse Collinconfig KERNEL_XZ 3773ebe1243SLasse Collin bool "XZ" 3783ebe1243SLasse Collin depends on HAVE_KERNEL_XZ 3793ebe1243SLasse Collin help 3803ebe1243SLasse Collin XZ uses the LZMA2 algorithm and instruction set specific 3813ebe1243SLasse Collin BCJ filters which can improve compression ratio of executable 3823ebe1243SLasse Collin code. The size of the kernel is about 30% smaller with XZ in 3833ebe1243SLasse Collin comparison to gzip. On architectures for which there is a BCJ 3847472ff8aSLasse Collin filter (i386, x86_64, ARM, ARM64, RISC-V, big endian PowerPC, 3857472ff8aSLasse Collin and SPARC), XZ will create a few percent smaller kernel than 3867472ff8aSLasse Collin plain LZMA. 3873ebe1243SLasse Collin 3883ebe1243SLasse Collin The speed is about the same as with LZMA: The decompression 3893ebe1243SLasse Collin speed of XZ is better than that of bzip2 but worse than gzip 3903ebe1243SLasse Collin and LZO. Compression is slow. 3913ebe1243SLasse Collin 3927dd65febSAlbin Tonnerreconfig KERNEL_LZO 3937dd65febSAlbin Tonnerre bool "LZO" 3947dd65febSAlbin Tonnerre depends on HAVE_KERNEL_LZO 3957dd65febSAlbin Tonnerre help 3960a4dd35cSRandy Dunlap Its compression ratio is the poorest among the choices. The kernel 397681b3049SStephan Sperber size is about 10% bigger than gzip; however its speed 3987dd65febSAlbin Tonnerre (both compression and decompression) is the fastest. 3997dd65febSAlbin Tonnerre 400e76e1fdfSKyungsik Leeconfig KERNEL_LZ4 401e76e1fdfSKyungsik Lee bool "LZ4" 402e76e1fdfSKyungsik Lee depends on HAVE_KERNEL_LZ4 403e76e1fdfSKyungsik Lee help 404e76e1fdfSKyungsik Lee LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. 405e76e1fdfSKyungsik Lee A preliminary version of LZ4 de/compression tool is available at 406e76e1fdfSKyungsik Lee <https://code.google.com/p/lz4/>. 407e76e1fdfSKyungsik Lee 408e76e1fdfSKyungsik Lee Its compression ratio is worse than LZO. The size of the kernel 409e76e1fdfSKyungsik Lee is about 8% bigger than LZO. But the decompression speed is 410e76e1fdfSKyungsik Lee faster than LZO. 411e76e1fdfSKyungsik Lee 41248f7ddf7SNick Terrellconfig KERNEL_ZSTD 41348f7ddf7SNick Terrell bool "ZSTD" 41448f7ddf7SNick Terrell depends on HAVE_KERNEL_ZSTD 41548f7ddf7SNick Terrell help 41648f7ddf7SNick Terrell ZSTD is a compression algorithm targeting intermediate compression 41748f7ddf7SNick Terrell with fast decompression speed. It will compress better than GZIP and 41848f7ddf7SNick Terrell decompress around the same speed as LZO, but slower than LZ4. You 41948f7ddf7SNick Terrell will need at least 192 KB RAM or more for booting. The zstd command 42048f7ddf7SNick Terrell line tool is required for compression. 42148f7ddf7SNick Terrell 422f16466afSVasily Gorbikconfig KERNEL_UNCOMPRESSED 423f16466afSVasily Gorbik bool "None" 424f16466afSVasily Gorbik depends on HAVE_KERNEL_UNCOMPRESSED 425f16466afSVasily Gorbik help 426f16466afSVasily Gorbik Produce uncompressed kernel image. This option is usually not what 427f16466afSVasily Gorbik you want. It is useful for debugging the kernel in slow simulation 428f16466afSVasily Gorbik environments, where decompressing and moving the kernel is awfully 429f16466afSVasily Gorbik slow. This option allows early boot code to skip the decompressor 430f16466afSVasily Gorbik and jump right at uncompressed kernel image. 431f16466afSVasily Gorbik 43230d65dbfSAlain Knaffendchoice 43330d65dbfSAlain Knaff 434ada4ab7aSChris Downconfig DEFAULT_INIT 435ada4ab7aSChris Down string "Default init path" 436ada4ab7aSChris Down default "" 437ada4ab7aSChris Down help 438ada4ab7aSChris Down This option determines the default init for the system if no init= 439ada4ab7aSChris Down option is passed on the kernel command line. If the requested path is 440ada4ab7aSChris Down not present, we will still then move on to attempting further 441ada4ab7aSChris Down locations (e.g. /sbin/init, etc). If this is empty, we will just use 442ada4ab7aSChris Down the fallback list when init= is not passed. 443ada4ab7aSChris Down 444bd5dc17bSJosh Triplettconfig DEFAULT_HOSTNAME 445bd5dc17bSJosh Triplett string "Default hostname" 446bd5dc17bSJosh Triplett default "(none)" 447bd5dc17bSJosh Triplett help 448bd5dc17bSJosh Triplett This option determines the default system hostname before userspace 449bd5dc17bSJosh Triplett calls sethostname(2). The kernel traditionally uses "(none)" here, 450bd5dc17bSJosh Triplett but you may wish to use a different default here to make a minimal 451bd5dc17bSJosh Triplett system more usable with less configuration. 452bd5dc17bSJosh Triplett 4531da177e4SLinus Torvaldsconfig SYSVIPC 4541da177e4SLinus Torvalds bool "System V IPC" 455a7f7f624SMasahiro Yamada help 4561da177e4SLinus Torvalds Inter Process Communication is a suite of library functions and 4571da177e4SLinus Torvalds system calls which let processes (running programs) synchronize and 4581da177e4SLinus Torvalds exchange information. It is generally considered to be a good thing, 4591da177e4SLinus Torvalds and some programs won't run unless you say Y here. In particular, if 4601da177e4SLinus Torvalds you want to run the DOS emulator dosemu under Linux (read the 4611da177e4SLinus Torvalds DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 4621da177e4SLinus Torvalds you'll need to say Y here. 4631da177e4SLinus Torvalds 4641da177e4SLinus Torvalds You can find documentation about IPC with "info ipc" and also in 4651da177e4SLinus Torvalds section 6.4 of the Linux Programmer's Guide, available from 4661da177e4SLinus Torvalds <http://www.tldp.org/guides.html>. 4671da177e4SLinus Torvalds 468a5494dcdSEric W. Biedermanconfig SYSVIPC_SYSCTL 469a5494dcdSEric W. Biederman bool 470a5494dcdSEric W. Biederman depends on SYSVIPC 471a5494dcdSEric W. Biederman depends on SYSCTL 472a5494dcdSEric W. Biederman default y 473a5494dcdSEric W. Biederman 4740cbed0eeSGuo Renconfig SYSVIPC_COMPAT 4750cbed0eeSGuo Ren def_bool y 4760cbed0eeSGuo Ren depends on COMPAT && SYSVIPC 4770cbed0eeSGuo Ren 4781da177e4SLinus Torvaldsconfig POSIX_MQUEUE 4791da177e4SLinus Torvalds bool "POSIX Message Queues" 48019c92399SKees Cook depends on NET 481a7f7f624SMasahiro Yamada help 4821da177e4SLinus Torvalds POSIX variant of message queues is a part of IPC. In POSIX message 4831da177e4SLinus Torvalds queues every message has a priority which decides about succession 4841da177e4SLinus Torvalds of receiving it by a process. If you want to compile and run 4851da177e4SLinus Torvalds programs written e.g. for Solaris with use of its POSIX message 486b0e37650SRobert P. J. Day queues (functions mq_*) say Y here. 4871da177e4SLinus Torvalds 4881da177e4SLinus Torvalds POSIX message queues are visible as a filesystem called 'mqueue' 4891da177e4SLinus Torvalds and can be mounted somewhere if you want to do filesystem 4901da177e4SLinus Torvalds operations on message queues. 4911da177e4SLinus Torvalds 4921da177e4SLinus Torvalds If unsure, say Y. 4931da177e4SLinus Torvalds 494bdc8e5f8SSerge E. Hallynconfig POSIX_MQUEUE_SYSCTL 495bdc8e5f8SSerge E. Hallyn bool 496bdc8e5f8SSerge E. Hallyn depends on POSIX_MQUEUE 497bdc8e5f8SSerge E. Hallyn depends on SYSCTL 498bdc8e5f8SSerge E. Hallyn default y 499bdc8e5f8SSerge E. Hallyn 500c73be61cSDavid Howellsconfig WATCH_QUEUE 501c73be61cSDavid Howells bool "General notification queue" 502c73be61cSDavid Howells default n 503c73be61cSDavid Howells help 504c73be61cSDavid Howells 505c73be61cSDavid Howells This is a general notification queue for the kernel to pass events to 506c73be61cSDavid Howells userspace by splicing them into pipes. It can be used in conjunction 507c73be61cSDavid Howells with watches for key/keyring change notifications and device 508c73be61cSDavid Howells notifications. 509c73be61cSDavid Howells 510c02b872aSMauro Carvalho Chehab See Documentation/core-api/watch_queue.rst 511c73be61cSDavid Howells 512226b4ccdSKonstantin Khlebnikovconfig CROSS_MEMORY_ATTACH 513226b4ccdSKonstantin Khlebnikov bool "Enable process_vm_readv/writev syscalls" 514226b4ccdSKonstantin Khlebnikov depends on MMU 515226b4ccdSKonstantin Khlebnikov default y 516226b4ccdSKonstantin Khlebnikov help 517226b4ccdSKonstantin Khlebnikov Enabling this option adds the system calls process_vm_readv and 518226b4ccdSKonstantin Khlebnikov process_vm_writev which allow a process with the correct privileges 519a2a368d9SGeert Uytterhoeven to directly read from or write to another process' address space. 520226b4ccdSKonstantin Khlebnikov See the man page for more details. 521226b4ccdSKonstantin Khlebnikov 5221da177e4SLinus Torvaldsconfig AUDIT 5231da177e4SLinus Torvalds bool "Auditing support" 524804a6a49SChris Wright depends on NET 5251da177e4SLinus Torvalds help 5261da177e4SLinus Torvalds Enable auditing infrastructure that can be used with another 5271da177e4SLinus Torvalds kernel subsystem, such as SELinux (which requires this for 528cb74ed27SPaul Moore logging of avc messages output). System call auditing is included 529cb74ed27SPaul Moore on architectures which support it. 5301da177e4SLinus Torvalds 5317a017721SAKASHI Takahiroconfig HAVE_ARCH_AUDITSYSCALL 5327a017721SAKASHI Takahiro bool 5337a017721SAKASHI Takahiro 5341da177e4SLinus Torvaldsconfig AUDITSYSCALL 535cb74ed27SPaul Moore def_bool y 5367a017721SAKASHI Takahiro depends on AUDIT && HAVE_ARCH_AUDITSYSCALL 53728a3a7ebSEric Paris select FSNOTIFY 53874c3cbe3SAl Viro 539d9817ebeSThomas Gleixnersource "kernel/irq/Kconfig" 540764e0da1SThomas Gleixnersource "kernel/time/Kconfig" 541b24abcffSDaniel Borkmannsource "kernel/bpf/Kconfig" 54287a4c375SChristoph Hellwigsource "kernel/Kconfig.preempt" 543d9817ebeSThomas Gleixner 544391dc69cSFrederic Weisbeckermenu "CPU/Task time and stats accounting" 545391dc69cSFrederic Weisbecker 546abf917cdSFrederic Weisbeckerconfig VIRT_CPU_ACCOUNTING 547abf917cdSFrederic Weisbecker bool 548abf917cdSFrederic Weisbecker 549fdf9c356SFrederic Weisbeckerchoice 550fdf9c356SFrederic Weisbecker prompt "Cputime accounting" 55102382affSNicholas Piggin default TICK_CPU_ACCOUNTING 552fdf9c356SFrederic Weisbecker 553fdf9c356SFrederic Weisbecker# Kind of a stub config for the pure tick based cputime accounting 554fdf9c356SFrederic Weisbeckerconfig TICK_CPU_ACCOUNTING 555fdf9c356SFrederic Weisbecker bool "Simple tick based cputime accounting" 556c58b0df1SFrederic Weisbecker depends on !S390 && !NO_HZ_FULL 557fdf9c356SFrederic Weisbecker help 558fdf9c356SFrederic Weisbecker This is the basic tick based cputime accounting that maintains 559fdf9c356SFrederic Weisbecker statistics about user, system and idle time spent on per jiffies 560fdf9c356SFrederic Weisbecker granularity. 561fdf9c356SFrederic Weisbecker 562fdf9c356SFrederic Weisbecker If unsure, say Y. 563fdf9c356SFrederic Weisbecker 564abf917cdSFrederic Weisbeckerconfig VIRT_CPU_ACCOUNTING_NATIVE 565391dc69cSFrederic Weisbecker bool "Deterministic task and CPU time accounting" 566c58b0df1SFrederic Weisbecker depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL 567abf917cdSFrederic Weisbecker select VIRT_CPU_ACCOUNTING 568391dc69cSFrederic Weisbecker help 569391dc69cSFrederic Weisbecker Select this option to enable more accurate task and CPU time 570391dc69cSFrederic Weisbecker accounting. This is done by reading a CPU counter on each 571391dc69cSFrederic Weisbecker kernel entry and exit and on transitions within the kernel 572391dc69cSFrederic Weisbecker between system, softirq and hardirq state, so there is a 573391dc69cSFrederic Weisbecker small performance impact. In the case of s390 or IBM POWER > 5, 574391dc69cSFrederic Weisbecker this also enables accounting of stolen time on logically-partitioned 575391dc69cSFrederic Weisbecker systems. 576391dc69cSFrederic Weisbecker 577abf917cdSFrederic Weisbeckerconfig VIRT_CPU_ACCOUNTING_GEN 578abf917cdSFrederic Weisbecker bool "Full dynticks CPU time accounting" 57924a9c541SFrederic Weisbecker depends on HAVE_CONTEXT_TRACKING_USER 580554b0004SKevin Hilman depends on HAVE_VIRT_CPU_ACCOUNTING_GEN 581041a1574SArnd Bergmann depends on GENERIC_CLOCKEVENTS 582abf917cdSFrederic Weisbecker select VIRT_CPU_ACCOUNTING 58324a9c541SFrederic Weisbecker select CONTEXT_TRACKING_USER 584abf917cdSFrederic Weisbecker help 585abf917cdSFrederic Weisbecker Select this option to enable task and CPU time accounting on full 586abf917cdSFrederic Weisbecker dynticks systems. This accounting is implemented by watching every 587abf917cdSFrederic Weisbecker kernel-user boundaries using the context tracking subsystem. 588abf917cdSFrederic Weisbecker The accounting is thus performed at the expense of some significant 589abf917cdSFrederic Weisbecker overhead. 590abf917cdSFrederic Weisbecker 591abf917cdSFrederic Weisbecker For now this is only useful if you are working on the full 592abf917cdSFrederic Weisbecker dynticks subsystem development. 593abf917cdSFrederic Weisbecker 594abf917cdSFrederic Weisbecker If unsure, say N. 595abf917cdSFrederic Weisbecker 596b58c3584SRik van Rielendchoice 597b58c3584SRik van Riel 598fdf9c356SFrederic Weisbeckerconfig IRQ_TIME_ACCOUNTING 599fdf9c356SFrederic Weisbecker bool "Fine granularity task level IRQ time accounting" 600b58c3584SRik van Riel depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE 601fdf9c356SFrederic Weisbecker help 602fdf9c356SFrederic Weisbecker Select this option to enable fine granularity task irq time 603fdf9c356SFrederic Weisbecker accounting. This is done by reading a timestamp on each 604fdf9c356SFrederic Weisbecker transitions between softirq and hardirq state, so there can be a 605fdf9c356SFrederic Weisbecker small performance impact. 606fdf9c356SFrederic Weisbecker 607fdf9c356SFrederic Weisbecker If in doubt, say N here. 608fdf9c356SFrederic Weisbecker 60911d4afd4SVincent Guittotconfig HAVE_SCHED_AVG_IRQ 61011d4afd4SVincent Guittot def_bool y 61111d4afd4SVincent Guittot depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING 61211d4afd4SVincent Guittot depends on SMP 61311d4afd4SVincent Guittot 614d4dbc991SVincent Guittotconfig SCHED_HW_PRESSURE 61598eb401dSValentin Schneider bool 616fcd7c9c3SValentin Schneider default y if ARM && ARM_CPU_TOPOLOGY 617fcd7c9c3SValentin Schneider default y if ARM64 61876504793SThara Gopinath depends on SMP 61998eb401dSValentin Schneider depends on CPU_FREQ_THERMAL 62098eb401dSValentin Schneider help 621d4dbc991SVincent Guittot Select this option to enable HW pressure accounting in the 622d4dbc991SVincent Guittot scheduler. HW pressure is the value conveyed to the scheduler 62398eb401dSValentin Schneider that reflects the reduction in CPU compute capacity resulted from 624d4dbc991SVincent Guittot HW throttling. HW throttling occurs when the performance of 625d4dbc991SVincent Guittot a CPU is capped due to high operating temperatures as an example. 62698eb401dSValentin Schneider 62798eb401dSValentin Schneider If selected, the scheduler will be able to balance tasks accordingly, 62898eb401dSValentin Schneider i.e. put less load on throttled CPUs than on non/less throttled ones. 62998eb401dSValentin Schneider 63098eb401dSValentin Schneider This requires the architecture to implement 631d4dbc991SVincent Guittot arch_update_hw_pressure() and arch_scale_thermal_pressure(). 63276504793SThara Gopinath 633391dc69cSFrederic Weisbeckerconfig BSD_PROCESS_ACCT 63446329a9dSJeff Layton bool "BSD Process Accounting (DEPRECATED)" 6352813893fSIulia Manda depends on MULTIUSER 63646329a9dSJeff Layton default n 637391dc69cSFrederic Weisbecker help 638391dc69cSFrederic Weisbecker If you say Y here, a user level program will be able to instruct the 639391dc69cSFrederic Weisbecker kernel (via a special system call) to write process accounting 640391dc69cSFrederic Weisbecker information to a file: whenever a process exits, information about 641391dc69cSFrederic Weisbecker that process will be appended to the file by the kernel. The 642391dc69cSFrederic Weisbecker information includes things such as creation time, owning user, 643391dc69cSFrederic Weisbecker command name, memory usage, controlling terminal etc. (the complete 644391dc69cSFrederic Weisbecker list is in the struct acct in <file:include/linux/acct.h>). It is 645391dc69cSFrederic Weisbecker up to the user level program to do useful things with this 64646329a9dSJeff Layton information. This mechanism is antiquated and has significant 64746329a9dSJeff Layton scalability issues. You probably want to use eBPF instead. Say 64846329a9dSJeff Layton N unless you really need this. 649391dc69cSFrederic Weisbecker 650391dc69cSFrederic Weisbeckerconfig BSD_PROCESS_ACCT_V3 651391dc69cSFrederic Weisbecker bool "BSD Process Accounting version 3 file format" 652391dc69cSFrederic Weisbecker depends on BSD_PROCESS_ACCT 653391dc69cSFrederic Weisbecker default n 654391dc69cSFrederic Weisbecker help 655391dc69cSFrederic Weisbecker If you say Y here, the process accounting information is written 656391dc69cSFrederic Weisbecker in a new file format that also logs the process IDs of each 6573903bf94SRandy Dunlap process and its parent. Note that this file format is incompatible 658391dc69cSFrederic Weisbecker with previous v0/v1/v2 file formats, so you will need updated tools 659391dc69cSFrederic Weisbecker for processing it. A preliminary version of these tools is available 660391dc69cSFrederic Weisbecker at <http://www.gnu.org/software/acct/>. 661391dc69cSFrederic Weisbecker 662391dc69cSFrederic Weisbeckerconfig TASKSTATS 66319c92399SKees Cook bool "Export task/process statistics through netlink" 664391dc69cSFrederic Weisbecker depends on NET 6652813893fSIulia Manda depends on MULTIUSER 666391dc69cSFrederic Weisbecker default n 667391dc69cSFrederic Weisbecker help 668391dc69cSFrederic Weisbecker Export selected statistics for tasks/processes through the 669391dc69cSFrederic Weisbecker generic netlink interface. Unlike BSD process accounting, the 670391dc69cSFrederic Weisbecker statistics are available during the lifetime of tasks/processes as 671391dc69cSFrederic Weisbecker responses to commands. Like BSD accounting, they are sent to user 672391dc69cSFrederic Weisbecker space on task exit. 673391dc69cSFrederic Weisbecker 674391dc69cSFrederic Weisbecker Say N if unsure. 675391dc69cSFrederic Weisbecker 676391dc69cSFrederic Weisbeckerconfig TASK_DELAY_ACCT 67719c92399SKees Cook bool "Enable per-task delay accounting" 678391dc69cSFrederic Weisbecker depends on TASKSTATS 679f6db8347SNaveen N. Rao select SCHED_INFO 680391dc69cSFrederic Weisbecker help 681391dc69cSFrederic Weisbecker Collect information on time spent by a task waiting for system 682391dc69cSFrederic Weisbecker resources like cpu, synchronous block I/O completion and swapping 683391dc69cSFrederic Weisbecker in pages. Such statistics can help in setting a task's priorities 684391dc69cSFrederic Weisbecker relative to other tasks for cpu, io, rss limits etc. 685391dc69cSFrederic Weisbecker 686391dc69cSFrederic Weisbecker Say N if unsure. 687391dc69cSFrederic Weisbecker 688391dc69cSFrederic Weisbeckerconfig TASK_XACCT 68919c92399SKees Cook bool "Enable extended accounting over taskstats" 690391dc69cSFrederic Weisbecker depends on TASKSTATS 691391dc69cSFrederic Weisbecker help 692391dc69cSFrederic Weisbecker Collect extended task accounting data and send the data 693391dc69cSFrederic Weisbecker to userland for processing over the taskstats interface. 694391dc69cSFrederic Weisbecker 695391dc69cSFrederic Weisbecker Say N if unsure. 696391dc69cSFrederic Weisbecker 697391dc69cSFrederic Weisbeckerconfig TASK_IO_ACCOUNTING 69819c92399SKees Cook bool "Enable per-task storage I/O accounting" 699391dc69cSFrederic Weisbecker depends on TASK_XACCT 700391dc69cSFrederic Weisbecker help 701391dc69cSFrederic Weisbecker Collect information on the number of bytes of storage I/O which this 702391dc69cSFrederic Weisbecker task has caused. 703391dc69cSFrederic Weisbecker 704391dc69cSFrederic Weisbecker Say N if unsure. 705391dc69cSFrederic Weisbecker 706eb414681SJohannes Weinerconfig PSI 707eb414681SJohannes Weiner bool "Pressure stall information tracking" 70898dfdd9eSRandy Dunlap select KERNFS 709eb414681SJohannes Weiner help 710eb414681SJohannes Weiner Collect metrics that indicate how overcommitted the CPU, memory, 711eb414681SJohannes Weiner and IO capacity are in the system. 712eb414681SJohannes Weiner 713eb414681SJohannes Weiner If you say Y here, the kernel will create /proc/pressure/ with the 714eb414681SJohannes Weiner pressure statistics files cpu, memory, and io. These will indicate 715eb414681SJohannes Weiner the share of walltime in which some or all tasks in the system are 716eb414681SJohannes Weiner delayed due to contention of the respective resource. 717eb414681SJohannes Weiner 7182ce7135aSJohannes Weiner In kernels with cgroup support, cgroups (cgroup2 only) will 7192ce7135aSJohannes Weiner have cpu.pressure, memory.pressure, and io.pressure files, 7202ce7135aSJohannes Weiner which aggregate pressure stalls for the grouped tasks only. 7212ce7135aSJohannes Weiner 722c3123552SMauro Carvalho Chehab For more details see Documentation/accounting/psi.rst. 723eb414681SJohannes Weiner 724eb414681SJohannes Weiner Say N if unsure. 725eb414681SJohannes Weiner 726e0c27447SJohannes Weinerconfig PSI_DEFAULT_DISABLED 727e0c27447SJohannes Weiner bool "Require boot parameter to enable pressure stall information tracking" 728e0c27447SJohannes Weiner default n 729e0c27447SJohannes Weiner depends on PSI 730e0c27447SJohannes Weiner help 731e0c27447SJohannes Weiner If set, pressure stall information tracking will be disabled 732428a1cb4SBaruch Siach per default but can be enabled through passing psi=1 on the 733428a1cb4SBaruch Siach kernel commandline during boot. 734e0c27447SJohannes Weiner 7357b2489d3SJohannes Weiner This feature adds some code to the task wakeup and sleep 7367b2489d3SJohannes Weiner paths of the scheduler. The overhead is too low to affect 7377b2489d3SJohannes Weiner common scheduling-intense workloads in practice (such as 7387b2489d3SJohannes Weiner webservers, memcache), but it does show up in artificial 7397b2489d3SJohannes Weiner scheduler stress tests, such as hackbench. 7407b2489d3SJohannes Weiner 7417b2489d3SJohannes Weiner If you are paranoid and not sure what the kernel will be 7427b2489d3SJohannes Weiner used for, say Y. 7437b2489d3SJohannes Weiner 7447b2489d3SJohannes Weiner Say N if unsure. 7457b2489d3SJohannes Weiner 746391dc69cSFrederic Weisbeckerendmenu # "CPU/Task time and stats accounting" 747391dc69cSFrederic Weisbecker 7485c4991e2SFrederic Weisbeckerconfig CPU_ISOLATION 7495c4991e2SFrederic Weisbecker bool "CPU isolation" 75097577684SOleg Nesterov depends on SMP 7512c43838cSFrederic Weisbecker default y 7525c4991e2SFrederic Weisbecker help 7535c4991e2SFrederic Weisbecker Make sure that CPUs running critical tasks are not disturbed by 7545c4991e2SFrederic Weisbecker any source of "noise" such as unbound workqueues, timers, kthreads... 7552c43838cSFrederic Weisbecker Unbound jobs get offloaded to housekeeping CPUs. This is driven by 7562c43838cSFrederic Weisbecker the "isolcpus=" boot parameter. 7572c43838cSFrederic Weisbecker 7582c43838cSFrederic Weisbecker Say Y if unsure. 7595c4991e2SFrederic Weisbecker 7600af92d46SPaul E. McKenneysource "kernel/rcu/Kconfig" 761c903ff83SMike Travis 7621da177e4SLinus Torvaldsconfig IKCONFIG 763f2443ab6SRoss Biro tristate "Kernel .config support" 764a7f7f624SMasahiro Yamada help 7651da177e4SLinus Torvalds This option enables the complete Linux kernel ".config" file 7661da177e4SLinus Torvalds contents to be saved in the kernel. It provides documentation 7671da177e4SLinus Torvalds of which kernel options are used in a running kernel or in an 7681da177e4SLinus Torvalds on-disk kernel. This information can be extracted from the kernel 7691da177e4SLinus Torvalds image file with the script scripts/extract-ikconfig and used as 7701da177e4SLinus Torvalds input to rebuild the current kernel or to build another kernel. 7711da177e4SLinus Torvalds It can also be extracted from a running kernel by reading 7721da177e4SLinus Torvalds /proc/config.gz if enabled (below). 7731da177e4SLinus Torvalds 7741da177e4SLinus Torvaldsconfig IKCONFIG_PROC 7751da177e4SLinus Torvalds bool "Enable access to .config through /proc/config.gz" 7761da177e4SLinus Torvalds depends on IKCONFIG && PROC_FS 777a7f7f624SMasahiro Yamada help 7781da177e4SLinus Torvalds This option enables access to the kernel configuration file 7791da177e4SLinus Torvalds through /proc/config.gz. 7801da177e4SLinus Torvalds 781f7b101d3SJoel Fernandes (Google)config IKHEADERS 782f7b101d3SJoel Fernandes (Google) tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz" 783f7b101d3SJoel Fernandes (Google) depends on SYSFS 78443d8ce9dSJoel Fernandes (Google) help 785f7b101d3SJoel Fernandes (Google) This option enables access to the in-kernel headers that are generated during 786f7b101d3SJoel Fernandes (Google) the build process. These can be used to build eBPF tracing programs, 787f7b101d3SJoel Fernandes (Google) or similar programs. If you build the headers as a module, a module called 788f7b101d3SJoel Fernandes (Google) kheaders.ko is built which can be loaded on-demand to get access to headers. 78943d8ce9dSJoel Fernandes (Google) 790794543a2SAlistair John Strachanconfig LOG_BUF_SHIFT 791794543a2SAlistair John Strachan int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 7921c4b5ecbSChristoph Hellwig range 12 25 793f17a32e9SAdrian Bunk default 17 794361e9dfbSJosh Triplett depends on PRINTK 795794543a2SAlistair John Strachan help 79623b2899fSLuis R. Rodriguez Select the minimal kernel log buffer size as a power of 2. 79723b2899fSLuis R. Rodriguez The final size is affected by LOG_CPU_MAX_BUF_SHIFT config 79823b2899fSLuis R. Rodriguez parameter, see below. Any higher size also might be forced 79923b2899fSLuis R. Rodriguez by "log_buf_len" boot parameter. 80023b2899fSLuis R. Rodriguez 801f17a32e9SAdrian Bunk Examples: 802f17a32e9SAdrian Bunk 17 => 128 KB 803f17a32e9SAdrian Bunk 16 => 64 KB 804f17a32e9SAdrian Bunk 15 => 32 KB 805f17a32e9SAdrian Bunk 14 => 16 KB 806794543a2SAlistair John Strachan 13 => 8 KB 807794543a2SAlistair John Strachan 12 => 4 KB 808794543a2SAlistair John Strachan 80923b2899fSLuis R. Rodriguezconfig LOG_CPU_MAX_BUF_SHIFT 81023b2899fSLuis R. Rodriguez int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)" 8112240a31dSGeert Uytterhoeven depends on SMP 81223b2899fSLuis R. Rodriguez range 0 21 81323b2899fSLuis R. Rodriguez default 0 if BASE_SMALL 814320bf431SYoann Congal default 12 815361e9dfbSJosh Triplett depends on PRINTK 81623b2899fSLuis R. Rodriguez help 81723b2899fSLuis R. Rodriguez This option allows to increase the default ring buffer size 81823b2899fSLuis R. Rodriguez according to the number of CPUs. The value defines the contribution 81923b2899fSLuis R. Rodriguez of each CPU as a power of 2. The used space is typically only few 82023b2899fSLuis R. Rodriguez lines however it might be much more when problems are reported, 82123b2899fSLuis R. Rodriguez e.g. backtraces. 82223b2899fSLuis R. Rodriguez 82323b2899fSLuis R. Rodriguez The increased size means that a new buffer has to be allocated and 82423b2899fSLuis R. Rodriguez the original static one is unused. It makes sense only on systems 82523b2899fSLuis R. Rodriguez with more CPUs. Therefore this value is used only when the sum of 82623b2899fSLuis R. Rodriguez contributions is greater than the half of the default kernel ring 82723b2899fSLuis R. Rodriguez buffer as defined by LOG_BUF_SHIFT. The default values are set 8280f7636e1SPaul Menzel so that more than 16 CPUs are needed to trigger the allocation. 82923b2899fSLuis R. Rodriguez 83023b2899fSLuis R. Rodriguez Also this option is ignored when "log_buf_len" kernel parameter is 83123b2899fSLuis R. Rodriguez used as it forces an exact (power of two) size of the ring buffer. 83223b2899fSLuis R. Rodriguez 83323b2899fSLuis R. Rodriguez The number of possible CPUs is used for this computation ignoring 8345e0d8d59SGeert Uytterhoeven hotplugging making the computation optimal for the worst case 8355e0d8d59SGeert Uytterhoeven scenario while allowing a simple algorithm to be used from bootup. 83623b2899fSLuis R. Rodriguez 83723b2899fSLuis R. Rodriguez Examples shift values and their meaning: 83823b2899fSLuis R. Rodriguez 17 => 128 KB for each CPU 83923b2899fSLuis R. Rodriguez 16 => 64 KB for each CPU 84023b2899fSLuis R. Rodriguez 15 => 32 KB for each CPU 84123b2899fSLuis R. Rodriguez 14 => 16 KB for each CPU 84223b2899fSLuis R. Rodriguez 13 => 8 KB for each CPU 84323b2899fSLuis R. Rodriguez 12 => 4 KB for each CPU 84423b2899fSLuis R. Rodriguez 84533701557SChris Downconfig PRINTK_INDEX 84633701557SChris Down bool "Printk indexing debugfs interface" 84733701557SChris Down depends on PRINTK && DEBUG_FS 84833701557SChris Down help 84933701557SChris Down Add support for indexing of all printk formats known at compile time 85033701557SChris Down at <debugfs>/printk/index/<module>. 85133701557SChris Down 85233701557SChris Down This can be used as part of maintaining daemons which monitor 85333701557SChris Down /dev/kmsg, as it permits auditing the printk formats present in a 85433701557SChris Down kernel, allowing detection of cases where monitored printks are 85533701557SChris Down changed or no longer present. 85633701557SChris Down 85733701557SChris Down There is no additional runtime cost to printk with this enabled. 85833701557SChris Down 8595cdc38f9SKAMEZAWA Hiroyuki# 8605cdc38f9SKAMEZAWA Hiroyuki# Architectures with an unreliable sched_clock() should select this: 8615cdc38f9SKAMEZAWA Hiroyuki# 8625cdc38f9SKAMEZAWA Hiroyukiconfig HAVE_UNSTABLE_SCHED_CLOCK 8635cdc38f9SKAMEZAWA Hiroyuki bool 8645cdc38f9SKAMEZAWA Hiroyuki 86538ff87f7SStephen Boydconfig GENERIC_SCHED_CLOCK 86638ff87f7SStephen Boyd bool 86738ff87f7SStephen Boyd 86869842cbaSPatrick Bellasimenu "Scheduler features" 86969842cbaSPatrick Bellasi 87069842cbaSPatrick Bellasiconfig UCLAMP_TASK 87169842cbaSPatrick Bellasi bool "Enable utilization clamping for RT/FAIR tasks" 87269842cbaSPatrick Bellasi depends on CPU_FREQ_GOV_SCHEDUTIL 87369842cbaSPatrick Bellasi help 87469842cbaSPatrick Bellasi This feature enables the scheduler to track the clamped utilization 87569842cbaSPatrick Bellasi of each CPU based on RUNNABLE tasks scheduled on that CPU. 87669842cbaSPatrick Bellasi 87769842cbaSPatrick Bellasi With this option, the user can specify the min and max CPU 87869842cbaSPatrick Bellasi utilization allowed for RUNNABLE tasks. The max utilization defines 87969842cbaSPatrick Bellasi the maximum frequency a task should use while the min utilization 88069842cbaSPatrick Bellasi defines the minimum frequency it should use. 88169842cbaSPatrick Bellasi 88269842cbaSPatrick Bellasi Both min and max utilization clamp values are hints to the scheduler, 88369842cbaSPatrick Bellasi aiming at improving its frequency selection policy, but they do not 88469842cbaSPatrick Bellasi enforce or grant any specific bandwidth for tasks. 88569842cbaSPatrick Bellasi 88669842cbaSPatrick Bellasi If in doubt, say N. 88769842cbaSPatrick Bellasi 88869842cbaSPatrick Bellasiconfig UCLAMP_BUCKETS_COUNT 88969842cbaSPatrick Bellasi int "Number of supported utilization clamp buckets" 89069842cbaSPatrick Bellasi range 5 20 89169842cbaSPatrick Bellasi default 5 89269842cbaSPatrick Bellasi depends on UCLAMP_TASK 89369842cbaSPatrick Bellasi help 89469842cbaSPatrick Bellasi Defines the number of clamp buckets to use. The range of each bucket 89569842cbaSPatrick Bellasi will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the 89669842cbaSPatrick Bellasi number of clamp buckets the finer their granularity and the higher 89769842cbaSPatrick Bellasi the precision of clamping aggregation and tracking at run-time. 89869842cbaSPatrick Bellasi 89969842cbaSPatrick Bellasi For example, with the minimum configuration value we will have 5 90069842cbaSPatrick Bellasi clamp buckets tracking 20% utilization each. A 25% boosted tasks will 90169842cbaSPatrick Bellasi be refcounted in the [20..39]% bucket and will set the bucket clamp 90269842cbaSPatrick Bellasi effective value to 25%. 90369842cbaSPatrick Bellasi If a second 30% boosted task should be co-scheduled on the same CPU, 90469842cbaSPatrick Bellasi that task will be refcounted in the same bucket of the first task and 90569842cbaSPatrick Bellasi it will boost the bucket clamp effective value to 30%. 90669842cbaSPatrick Bellasi The clamp effective value of a bucket is reset to its nominal value 90769842cbaSPatrick Bellasi (20% in the example above) when there are no more tasks refcounted in 90869842cbaSPatrick Bellasi that bucket. 90969842cbaSPatrick Bellasi 91069842cbaSPatrick Bellasi An additional boost/capping margin can be added to some tasks. In the 91169842cbaSPatrick Bellasi example above the 25% task will be boosted to 30% until it exits the 91269842cbaSPatrick Bellasi CPU. If that should be considered not acceptable on certain systems, 91369842cbaSPatrick Bellasi it's always possible to reduce the margin by increasing the number of 91469842cbaSPatrick Bellasi clamp buckets to trade off used memory for run-time tracking 91569842cbaSPatrick Bellasi precision. 91669842cbaSPatrick Bellasi 91769842cbaSPatrick Bellasi If in doubt, use the default value. 91869842cbaSPatrick Bellasi 91925c411fcSJohn Stultzconfig SCHED_PROXY_EXEC 92025c411fcSJohn Stultz bool "Proxy Execution" 92125c411fcSJohn Stultz # Avoid some build failures w/ PREEMPT_RT until it can be fixed 92225c411fcSJohn Stultz depends on !PREEMPT_RT 92325c411fcSJohn Stultz # Need to investigate how to inform sched_ext of split contexts 92425c411fcSJohn Stultz depends on !SCHED_CLASS_EXT 92525c411fcSJohn Stultz # Not particularly useful until we get to multi-rq proxying 92625c411fcSJohn Stultz depends on EXPERT 92725c411fcSJohn Stultz help 92825c411fcSJohn Stultz This option enables proxy execution, a mechanism for mutex-owning 92925c411fcSJohn Stultz tasks to inherit the scheduling context of higher priority waiters. 93025c411fcSJohn Stultz 93169842cbaSPatrick Bellasiendmenu 93269842cbaSPatrick Bellasi 933be3a7284SAndrea Arcangeli# 934be3a7284SAndrea Arcangeli# For architectures that want to enable the support for NUMA-affine scheduler 935be3a7284SAndrea Arcangeli# balancing logic: 936be3a7284SAndrea Arcangeli# 937be3a7284SAndrea Arcangeliconfig ARCH_SUPPORTS_NUMA_BALANCING 938be3a7284SAndrea Arcangeli bool 939be3a7284SAndrea Arcangeli 940be5e610cSPeter Zijlstra# 94172b252aeSMel Gorman# For architectures that prefer to flush all TLBs after a number of pages 94272b252aeSMel Gorman# are unmapped instead of sending one IPI per page to flush. The architecture 94372b252aeSMel Gorman# must provide guarantees on what happens if a clean TLB cache entry is 94472b252aeSMel Gorman# written after the unmap. Details are in mm/rmap.c near the check for 94572b252aeSMel Gorman# should_defer_flush. The architecture should also consider if the full flush 94672b252aeSMel Gorman# and the refill costs are offset by the savings of sending fewer IPIs. 94772b252aeSMel Gormanconfig ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 94872b252aeSMel Gorman bool 94972b252aeSMel Gorman 950c12d3362SArd Biesheuvelconfig CC_HAS_INT128 9513a7c7331SMasahiro Yamada def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT 952c12d3362SArd Biesheuvel 953dee2b702SGustavo A. R. Silvaconfig CC_IMPLICIT_FALLTHROUGH 954dee2b702SGustavo A. R. Silva string 955158ea2d2SGustavo A. R. Silva default "-Wimplicit-fallthrough=5" if CC_IS_GCC && $(cc-option,-Wimplicit-fallthrough=5) 956dee2b702SGustavo A. R. Silva default "-Wimplicit-fallthrough" if CC_IS_CLANG && $(cc-option,-Wunreachable-code-fallthrough) 957dee2b702SGustavo A. R. Silva 9583e00f580SKees Cook# Currently, disable gcc-10+ array-bounds globally. 9590da6e5fdSLinus Torvalds# It's still broken in gcc-13, so no upper bound yet. 9603e00f580SKees Cookconfig GCC10_NO_ARRAY_BOUNDS 9615a41237aSLinus Torvalds def_bool y 9625a41237aSLinus Torvalds 963f0be87c4SLinus Torvaldsconfig CC_NO_ARRAY_BOUNDS 964f0be87c4SLinus Torvalds bool 9658e5bd4eaSYury Norov default y if CC_IS_GCC && GCC_VERSION >= 90000 && GCC10_NO_ARRAY_BOUNDS 966f0be87c4SLinus Torvalds 96702153319SLinus Torvalds# Currently, disable -Wstringop-overflow for GCC globally. 96802153319SLinus Torvaldsconfig GCC_NO_STRINGOP_OVERFLOW 969a5e0ace0SGustavo A. R. Silva def_bool y 970a5e0ace0SGustavo A. R. Silva 971a5e0ace0SGustavo A. R. Silvaconfig CC_NO_STRINGOP_OVERFLOW 972a5e0ace0SGustavo A. R. Silva bool 97302153319SLinus Torvalds default y if CC_IS_GCC && GCC_NO_STRINGOP_OVERFLOW 974a5e0ace0SGustavo A. R. Silva 975a5e0ace0SGustavo A. R. Silvaconfig CC_STRINGOP_OVERFLOW 976a5e0ace0SGustavo A. R. Silva bool 977a5e0ace0SGustavo A. R. Silva default y if CC_IS_GCC && !CC_NO_STRINGOP_OVERFLOW 978a5e0ace0SGustavo A. R. Silva 97972b252aeSMel Gorman# 980be5e610cSPeter Zijlstra# For architectures that know their GCC __int128 support is sound 981be5e610cSPeter Zijlstra# 982be5e610cSPeter Zijlstraconfig ARCH_SUPPORTS_INT128 983be5e610cSPeter Zijlstra bool 984be5e610cSPeter Zijlstra 985be3a7284SAndrea Arcangeli# For architectures that (ab)use NUMA to represent different memory regions 986be3a7284SAndrea Arcangeli# all cpu-local but of different latencies, such as SuperH. 987be3a7284SAndrea Arcangeli# 988be3a7284SAndrea Arcangeliconfig ARCH_WANT_NUMA_VARIABLE_LOCALITY 989be3a7284SAndrea Arcangeli bool 990be3a7284SAndrea Arcangeli 991be3a7284SAndrea Arcangeliconfig NUMA_BALANCING 992be3a7284SAndrea Arcangeli bool "Memory placement aware NUMA scheduler" 993be3a7284SAndrea Arcangeli depends on ARCH_SUPPORTS_NUMA_BALANCING 994be3a7284SAndrea Arcangeli depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY 995554b0f3cSSebastian Andrzej Siewior depends on SMP && NUMA && MIGRATION && !PREEMPT_RT 996be3a7284SAndrea Arcangeli help 997be3a7284SAndrea Arcangeli This option adds support for automatic NUMA aware memory/task placement. 998be3a7284SAndrea Arcangeli The mechanism is quite primitive and is based on migrating memory when 9996d56a410SPaul Gortmaker it has references to the node the task is running on. 1000be3a7284SAndrea Arcangeli 1001be3a7284SAndrea Arcangeli This system will be inactive on UMA systems. 1002be3a7284SAndrea Arcangeli 10036f7c97e8SAneesh Kumar K.Vconfig NUMA_BALANCING_DEFAULT_ENABLED 10046f7c97e8SAneesh Kumar K.V bool "Automatically enable NUMA aware memory/task placement" 10056f7c97e8SAneesh Kumar K.V default y 10066f7c97e8SAneesh Kumar K.V depends on NUMA_BALANCING 10076f7c97e8SAneesh Kumar K.V help 10086f7c97e8SAneesh Kumar K.V If set, automatic NUMA balancing will be enabled if running on a NUMA 10096f7c97e8SAneesh Kumar K.V machine. 10106f7c97e8SAneesh Kumar K.V 101121c690a3SSuren Baghdasaryanconfig SLAB_OBJ_EXT 101221c690a3SSuren Baghdasaryan bool 101321c690a3SSuren Baghdasaryan 101423964d2dSLi Zefanmenuconfig CGROUPS 10156341e62bSChristoph Jaeger bool "Control Group support" 10162bd59d48STejun Heo select KERNFS 1017ddbcc7e8SPaul Menage help 101823964d2dSLi Zefan This option adds support for grouping sets of processes together, for 10195cdc38f9SKAMEZAWA Hiroyuki use with process control subsystems such as Cpusets, CFS, memory 10205cdc38f9SKAMEZAWA Hiroyuki controls or device isolation. 10215cdc38f9SKAMEZAWA Hiroyuki See 1022d6a3b247SMauro Carvalho Chehab - Documentation/scheduler/sched-design-CFS.rst (CFS) 1023da82c92fSMauro Carvalho Chehab - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation 102445ce80fbSLi Zefan and resource control) 1025ddbcc7e8SPaul Menage 1026ddbcc7e8SPaul Menage Say N if unsure. 1027ddbcc7e8SPaul Menage 102823964d2dSLi Zefanif CGROUPS 102923964d2dSLi Zefan 10303e32cb2eSJohannes Weinerconfig PAGE_COUNTER 10313e32cb2eSJohannes Weiner bool 10323e32cb2eSJohannes Weiner 10336a010a49STejun Heoconfig CGROUP_FAVOR_DYNMODS 10346a010a49STejun Heo bool "Favor dynamic modification latency reduction by default" 10356a010a49STejun Heo help 10366a010a49STejun Heo This option enables the "favordynmods" mount option by default 10376a010a49STejun Heo which reduces the latencies of dynamic cgroup modifications such 10386a010a49STejun Heo as task migrations and controller on/offs at the cost of making 10396a010a49STejun Heo hot path operations such as forks and exits more expensive. 10406a010a49STejun Heo 10416a010a49STejun Heo Say N if unsure. 10426a010a49STejun Heo 1043c255a458SAndrew Mortonconfig MEMCG 1044a0166ec4SJohannes Weiner bool "Memory controller" 10453e32cb2eSJohannes Weiner select PAGE_COUNTER 104679bd9814STejun Heo select EVENTFD 104721c690a3SSuren Baghdasaryan select SLAB_OBJ_EXT 1048fdc5001bSKirill A. Shutemov select VM_EVENT_COUNTERS 104900f0b825SBalbir Singh help 1050a0166ec4SJohannes Weiner Provides control over the memory footprint of tasks in a cgroup. 105100f0b825SBalbir Singh 105225352d2fSShakeel Buttconfig MEMCG_NMI_UNSAFE 105325352d2fSShakeel Butt bool 105425352d2fSShakeel Butt depends on MEMCG 105525352d2fSShakeel Butt depends on HAVE_NMI 105625352d2fSShakeel Butt depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && !ARCH_HAVE_NMI_SAFE_CMPXCHG 105725352d2fSShakeel Butt default y 105825352d2fSShakeel Butt 1059940b01fcSShakeel Buttconfig MEMCG_NMI_SAFETY_REQUIRES_ATOMIC 1060940b01fcSShakeel Butt bool 1061940b01fcSShakeel Butt depends on MEMCG 1062940b01fcSShakeel Butt depends on HAVE_NMI 1063940b01fcSShakeel Butt depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && ARCH_HAVE_NMI_SAFE_CMPXCHG 1064940b01fcSShakeel Butt default y 1065940b01fcSShakeel Butt 1066e93d4166SRoman Gushchinconfig MEMCG_V1 1067e93d4166SRoman Gushchin bool "Legacy cgroup v1 memory controller" 1068c9929f0eSVlastimil Babka depends on MEMCG 1069e93d4166SRoman Gushchin default n 1070e93d4166SRoman Gushchin help 1071e93d4166SRoman Gushchin Legacy cgroup v1 memory controller which has been deprecated by 1072e93d4166SRoman Gushchin cgroup v2 implementation. The v1 is there for legacy applications 1073e93d4166SRoman Gushchin which haven't migrated to the new cgroup v2 interface yet. If you 1074e93d4166SRoman Gushchin do not have any such application then you are completely fine leaving 1075e93d4166SRoman Gushchin this option disabled. 1076e93d4166SRoman Gushchin 1077e93d4166SRoman Gushchin Please note that feature set of the legacy memory controller is likely 1078e93d4166SRoman Gushchin going to shrink due to deprecation process. New deployments with v1 1079e93d4166SRoman Gushchin controller are highly discouraged. 1080e93d4166SRoman Gushchin 1081fcb4824bSValdis Kletnieks Say N if unsure. 108284c07d11SKirill Tkhai 10836bf024e6SJohannes Weinerconfig BLK_CGROUP 10846bf024e6SJohannes Weiner bool "IO controller" 10856bf024e6SJohannes Weiner depends on BLOCK 10862bc64a20SAneesh Kumar K.V default n 1087a7f7f624SMasahiro Yamada help 10886bf024e6SJohannes Weiner Generic block IO controller cgroup interface. This is the common 10896bf024e6SJohannes Weiner cgroup interface which should be used by various IO controlling 10906bf024e6SJohannes Weiner policies. 10912bc64a20SAneesh Kumar K.V 10926bf024e6SJohannes Weiner Currently, CFQ IO scheduler uses it to recognize task groups and 10936bf024e6SJohannes Weiner control disk bandwidth allocation (proportional time slice allocation) 10946bf024e6SJohannes Weiner to such task groups. It is also used by bio throttling logic in 10956bf024e6SJohannes Weiner block layer to implement upper limit in IO rates on a device. 1096e5d1367fSStephane Eranian 10976bf024e6SJohannes Weiner This option only enables generic Block IO controller infrastructure. 10986bf024e6SJohannes Weiner One needs to also enable actual IO controlling logic/policy. For 10996bf024e6SJohannes Weiner enabling proportional weight division of disk bandwidth in CFQ, set 11007baf2199SKrzysztof Kozlowski CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set 11016bf024e6SJohannes Weiner CONFIG_BLK_DEV_THROTTLING=y. 11026bf024e6SJohannes Weiner 1103da82c92fSMauro Carvalho Chehab See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 11046bf024e6SJohannes Weiner 11056bf024e6SJohannes Weinerconfig CGROUP_WRITEBACK 11066bf024e6SJohannes Weiner bool 11076bf024e6SJohannes Weiner depends on MEMCG && BLK_CGROUP 11086bf024e6SJohannes Weiner default y 1109e5d1367fSStephane Eranian 11107c941438SDhaval Gianimenuconfig CGROUP_SCHED 1111a0166ec4SJohannes Weiner bool "CPU controller" 11127c941438SDhaval Giani default n 11137c941438SDhaval Giani help 11147c941438SDhaval Giani This feature lets CPU scheduler recognize task groups and control CPU 11157c941438SDhaval Giani bandwidth allocation to such task groups. It uses cgroups to group 11167c941438SDhaval Giani tasks. 11177c941438SDhaval Giani 11187c941438SDhaval Gianiif CGROUP_SCHED 1119e179e80cSTejun Heoconfig GROUP_SCHED_WEIGHT 1120e179e80cSTejun Heo def_bool n 1121e179e80cSTejun Heo 1122ddceadceSTejun Heoconfig GROUP_SCHED_BANDWIDTH 1123ddceadceSTejun Heo def_bool n 1124ddceadceSTejun Heo 11257c941438SDhaval Gianiconfig FAIR_GROUP_SCHED 11267c941438SDhaval Giani bool "Group scheduling for SCHED_OTHER" 11277c941438SDhaval Giani depends on CGROUP_SCHED 1128e179e80cSTejun Heo select GROUP_SCHED_WEIGHT 11297c941438SDhaval Giani default CGROUP_SCHED 11307c941438SDhaval Giani 1131ab84d31eSPaul Turnerconfig CFS_BANDWIDTH 1132ab84d31eSPaul Turner bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED" 1133ab84d31eSPaul Turner depends on FAIR_GROUP_SCHED 1134ddceadceSTejun Heo select GROUP_SCHED_BANDWIDTH 1135ab84d31eSPaul Turner default n 1136ab84d31eSPaul Turner help 1137ab84d31eSPaul Turner This option allows users to define CPU bandwidth rates (limits) for 1138ab84d31eSPaul Turner tasks running within the fair group scheduler. Groups with no limit 1139ab84d31eSPaul Turner set are considered to be unconstrained and will run with no 1140ab84d31eSPaul Turner restriction. 1141d6a3b247SMauro Carvalho Chehab See Documentation/scheduler/sched-bwc.rst for more information. 1142ab84d31eSPaul Turner 11437c941438SDhaval Gianiconfig RT_GROUP_SCHED 11447c941438SDhaval Giani bool "Group scheduling for SCHED_RR/FIFO" 11457c941438SDhaval Giani depends on CGROUP_SCHED 11467c941438SDhaval Giani default n 11477c941438SDhaval Giani help 11487c941438SDhaval Giani This feature lets you explicitly allocate real CPU bandwidth 114932bd7eb5SLi Zefan to task groups. If enabled, it will also make it impossible to 11507c941438SDhaval Giani schedule realtime tasks for non-root users until you allocate 11517c941438SDhaval Giani realtime bandwidth for them. 1152d6a3b247SMauro Carvalho Chehab See Documentation/scheduler/sched-rt-group.rst for more information. 11537c941438SDhaval Giani 1154e34e0131SMichal Koutnýconfig RT_GROUP_SCHED_DEFAULT_DISABLED 1155e34e0131SMichal Koutný bool "Require boot parameter to enable group scheduling for SCHED_RR/FIFO" 1156e34e0131SMichal Koutný depends on RT_GROUP_SCHED 1157e34e0131SMichal Koutný default n 1158e34e0131SMichal Koutný help 1159e34e0131SMichal Koutný When set, the RT group scheduling is disabled by default. The option 1160e34e0131SMichal Koutný is in inverted form so that mere RT_GROUP_SCHED enables the group 1161e34e0131SMichal Koutný scheduling. 1162e34e0131SMichal Koutný 1163e34e0131SMichal Koutný Say N if unsure. 1164e34e0131SMichal Koutný 116581951366STejun Heoconfig EXT_GROUP_SCHED 116681951366STejun Heo bool 116781951366STejun Heo depends on SCHED_CLASS_EXT && CGROUP_SCHED 116881951366STejun Heo select GROUP_SCHED_WEIGHT 1169ddceadceSTejun Heo select GROUP_SCHED_BANDWIDTH 117081951366STejun Heo default y 117181951366STejun Heo 11727c941438SDhaval Gianiendif #CGROUP_SCHED 11737c941438SDhaval Giani 1174af7f588dSMathieu Desnoyersconfig SCHED_MM_CID 1175af7f588dSMathieu Desnoyers def_bool y 1176af7f588dSMathieu Desnoyers depends on SMP && RSEQ 1177af7f588dSMathieu Desnoyers 11782480c093SPatrick Bellasiconfig UCLAMP_TASK_GROUP 11792480c093SPatrick Bellasi bool "Utilization clamping per group of tasks" 11802480c093SPatrick Bellasi depends on CGROUP_SCHED 11812480c093SPatrick Bellasi depends on UCLAMP_TASK 11822480c093SPatrick Bellasi default n 11832480c093SPatrick Bellasi help 11842480c093SPatrick Bellasi This feature enables the scheduler to track the clamped utilization 11852480c093SPatrick Bellasi of each CPU based on RUNNABLE tasks currently scheduled on that CPU. 11862480c093SPatrick Bellasi 11872480c093SPatrick Bellasi When this option is enabled, the user can specify a min and max 11882480c093SPatrick Bellasi CPU bandwidth which is allowed for each single task in a group. 11892480c093SPatrick Bellasi The max bandwidth allows to clamp the maximum frequency a task 11902480c093SPatrick Bellasi can use, while the min bandwidth allows to define a minimum 11912480c093SPatrick Bellasi frequency a task will always use. 11922480c093SPatrick Bellasi 11932480c093SPatrick Bellasi When task group based utilization clamping is enabled, an eventually 11942480c093SPatrick Bellasi specified task-specific clamp value is constrained by the cgroup 11952480c093SPatrick Bellasi specified clamp value. Both minimum and maximum task clamping cannot 11962480c093SPatrick Bellasi be bigger than the corresponding clamping defined at task group level. 11972480c093SPatrick Bellasi 11982480c093SPatrick Bellasi If in doubt, say N. 11992480c093SPatrick Bellasi 12006bf024e6SJohannes Weinerconfig CGROUP_PIDS 12016bf024e6SJohannes Weiner bool "PIDs controller" 12026bf024e6SJohannes Weiner help 12036bf024e6SJohannes Weiner Provides enforcement of process number limits in the scope of a 12046bf024e6SJohannes Weiner cgroup. Any attempt to fork more processes than is allowed in the 12056bf024e6SJohannes Weiner cgroup will fail. PIDs are fundamentally a global resource because it 12066bf024e6SJohannes Weiner is fairly trivial to reach PID exhaustion before you reach even a 12076bf024e6SJohannes Weiner conservative kmemcg limit. As a result, it is possible to grind a 12086bf024e6SJohannes Weiner system to halt without being limited by other cgroup policies. The 12096cc578dfSParav Pandit PIDs controller is designed to stop this from happening. 12106bf024e6SJohannes Weiner 12116bf024e6SJohannes Weiner It should be noted that organisational operations (such as attaching 121298076833SJonathan Neuschäfer to a cgroup hierarchy) will *not* be blocked by the PIDs controller, 12136bf024e6SJohannes Weiner since the PIDs limit only affects a process's ability to fork, not to 12146bf024e6SJohannes Weiner attach to a cgroup. 12156bf024e6SJohannes Weiner 121639d3e758SParav Panditconfig CGROUP_RDMA 121739d3e758SParav Pandit bool "RDMA controller" 121839d3e758SParav Pandit help 121939d3e758SParav Pandit Provides enforcement of RDMA resources defined by IB stack. 122039d3e758SParav Pandit It is fairly easy for consumers to exhaust RDMA resources, which 122139d3e758SParav Pandit can result into resource unavailability to other consumers. 122239d3e758SParav Pandit RDMA controller is designed to stop this from happening. 122339d3e758SParav Pandit Attaching processes with active RDMA resources to the cgroup 122439d3e758SParav Pandit hierarchy is allowed even if can cross the hierarchy's limit. 122539d3e758SParav Pandit 1226b168ed45SMaarten Lankhorstconfig CGROUP_DMEM 1227b168ed45SMaarten Lankhorst bool "Device memory controller (DMEM)" 1228e33b5149SMaxime Ripard select PAGE_COUNTER 1229b168ed45SMaarten Lankhorst help 1230b168ed45SMaarten Lankhorst The DMEM controller allows compatible devices to restrict device 1231b168ed45SMaarten Lankhorst memory usage based on the cgroup hierarchy. 1232b168ed45SMaarten Lankhorst 1233b168ed45SMaarten Lankhorst As an example, it allows you to restrict VRAM usage for applications 1234b168ed45SMaarten Lankhorst in the DRM subsystem. 1235b168ed45SMaarten Lankhorst 12366bf024e6SJohannes Weinerconfig CGROUP_FREEZER 12376bf024e6SJohannes Weiner bool "Freezer controller" 12386bf024e6SJohannes Weiner help 12396bf024e6SJohannes Weiner Provides a way to freeze and unfreeze all tasks in a 12406bf024e6SJohannes Weiner cgroup. 12416bf024e6SJohannes Weiner 1242489c2a20SJohannes Weiner This option affects the ORIGINAL cgroup interface. The cgroup2 memory 1243489c2a20SJohannes Weiner controller includes important in-kernel memory consumers per default. 1244489c2a20SJohannes Weiner 1245489c2a20SJohannes Weiner If you're using cgroup2, say N. 1246489c2a20SJohannes Weiner 12476bf024e6SJohannes Weinerconfig CGROUP_HUGETLB 12486bf024e6SJohannes Weiner bool "HugeTLB controller" 12496bf024e6SJohannes Weiner depends on HUGETLB_PAGE 12506bf024e6SJohannes Weiner select PAGE_COUNTER 1251afc24d49SVivek Goyal default n 12526bf024e6SJohannes Weiner help 12536bf024e6SJohannes Weiner Provides a cgroup controller for HugeTLB pages. 12546bf024e6SJohannes Weiner When you enable this, you can put a per cgroup limit on HugeTLB usage. 12556bf024e6SJohannes Weiner The limit is enforced during page fault. Since HugeTLB doesn't 12566bf024e6SJohannes Weiner support page reclaim, enforcing the limit at page fault time implies 12576bf024e6SJohannes Weiner that, the application will get SIGBUS signal if it tries to access 12586bf024e6SJohannes Weiner HugeTLB pages beyond its limit. This requires the application to know 12596bf024e6SJohannes Weiner beforehand how much HugeTLB pages it would require for its use. The 12606bf024e6SJohannes Weiner control group is tracked in the third page lru pointer. This means 12616bf024e6SJohannes Weiner that we cannot use the controller with huge page less than 3 pages. 1262afc24d49SVivek Goyal 12636bf024e6SJohannes Weinerconfig CPUSETS 12646bf024e6SJohannes Weiner bool "Cpuset controller" 1265e1d4eeecSNicolas Pitre depends on SMP 1266bf9850f6SKuan-Wei Chiu select UNION_FIND 126723f09dccSFrederic Weisbecker select CPU_ISOLATION 12686bf024e6SJohannes Weiner help 12696bf024e6SJohannes Weiner This option will let you create and manage CPUSETs which 12706bf024e6SJohannes Weiner allow dynamically partitioning a system into sets of CPUs and 12716bf024e6SJohannes Weiner Memory Nodes and assigning tasks to run only within those sets. 12726bf024e6SJohannes Weiner This is primarily useful on large SMP or NUMA systems. 1273afc24d49SVivek Goyal 12746bf024e6SJohannes Weiner Say N if unsure. 1275afc24d49SVivek Goyal 12761abab1baSChen Ridongconfig CPUSETS_V1 12771abab1baSChen Ridong bool "Legacy cgroup v1 cpusets controller" 12781abab1baSChen Ridong depends on CPUSETS 12791abab1baSChen Ridong default n 12801abab1baSChen Ridong help 12811abab1baSChen Ridong Legacy cgroup v1 cpusets controller which has been deprecated by 12821abab1baSChen Ridong cgroup v2 implementation. The v1 is there for legacy applications 1283dae68fbaSMichal Koutný which haven't migrated to the new cgroup v2 interface yet. Legacy 1284dae68fbaSMichal Koutný interface includes cpuset filesystem and /proc/<pid>/cpuset. If you 12851abab1baSChen Ridong do not have any such application then you are completely fine leaving 12861abab1baSChen Ridong this option disabled. 12871abab1baSChen Ridong 12881abab1baSChen Ridong Say N if unsure. 12891abab1baSChen Ridong 12906bf024e6SJohannes Weinerconfig PROC_PID_CPUSET 12916bf024e6SJohannes Weiner bool "Include legacy /proc/<pid>/cpuset file" 1292dae68fbaSMichal Koutný depends on CPUSETS_V1 129389e9b9e0STejun Heo default y 129489e9b9e0STejun Heo 12956bf024e6SJohannes Weinerconfig CGROUP_DEVICE 12966bf024e6SJohannes Weiner bool "Device controller" 12976bf024e6SJohannes Weiner help 12986bf024e6SJohannes Weiner Provides a cgroup controller implementing whitelists for 12996bf024e6SJohannes Weiner devices which a process in the cgroup can mknod or open. 13006bf024e6SJohannes Weiner 13016bf024e6SJohannes Weinerconfig CGROUP_CPUACCT 13026bf024e6SJohannes Weiner bool "Simple CPU accounting controller" 13036bf024e6SJohannes Weiner help 13046bf024e6SJohannes Weiner Provides a simple controller for monitoring the 13056bf024e6SJohannes Weiner total CPU consumed by the tasks in a cgroup. 13066bf024e6SJohannes Weiner 13076bf024e6SJohannes Weinerconfig CGROUP_PERF 13086bf024e6SJohannes Weiner bool "Perf controller" 13096bf024e6SJohannes Weiner depends on PERF_EVENTS 13106bf024e6SJohannes Weiner help 13116bf024e6SJohannes Weiner This option extends the perf per-cpu mode to restrict monitoring 13126bf024e6SJohannes Weiner to threads which belong to the cgroup specified and run on the 13136546b19fSNamhyung Kim designated cpu. Or this can be used to have cgroup ID in samples 13146546b19fSNamhyung Kim so that it can monitor performance events among cgroups. 13156bf024e6SJohannes Weiner 13166bf024e6SJohannes Weiner Say N if unsure. 13176bf024e6SJohannes Weiner 131830070984SDaniel Mackconfig CGROUP_BPF 131930070984SDaniel Mack bool "Support for eBPF programs attached to cgroups" 1320483c4933SAndy Lutomirski depends on BPF_SYSCALL 1321483c4933SAndy Lutomirski select SOCK_CGROUP_DATA 132230070984SDaniel Mack help 132330070984SDaniel Mack Allow attaching eBPF programs to a cgroup using the bpf(2) 132430070984SDaniel Mack syscall command BPF_PROG_ATTACH. 132530070984SDaniel Mack 132630070984SDaniel Mack In which context these programs are accessed depends on the type 132730070984SDaniel Mack of attachment. For instance, programs that are attached using 132830070984SDaniel Mack BPF_CGROUP_INET_INGRESS will be executed on the ingress path of 132930070984SDaniel Mack inet sockets. 133030070984SDaniel Mack 1331a72232eaSVipin Sharmaconfig CGROUP_MISC 1332a72232eaSVipin Sharma bool "Misc resource controller" 1333a72232eaSVipin Sharma default n 1334a72232eaSVipin Sharma help 1335a72232eaSVipin Sharma Provides a controller for miscellaneous resources on a host. 1336a72232eaSVipin Sharma 1337a72232eaSVipin Sharma Miscellaneous scalar resources are the resources on the host system 1338a72232eaSVipin Sharma which cannot be abstracted like the other cgroups. This controller 1339a72232eaSVipin Sharma tracks and limits the miscellaneous resources used by a process 1340a72232eaSVipin Sharma attached to a cgroup hierarchy. 1341a72232eaSVipin Sharma 1342a72232eaSVipin Sharma For more information, please check misc cgroup section in 1343a72232eaSVipin Sharma /Documentation/admin-guide/cgroup-v2.rst. 1344a72232eaSVipin Sharma 13456bf024e6SJohannes Weinerconfig CGROUP_DEBUG 134623b0be48SWaiman Long bool "Debug controller" 13476bf024e6SJohannes Weiner default n 134823b0be48SWaiman Long depends on DEBUG_KERNEL 13496bf024e6SJohannes Weiner help 13506bf024e6SJohannes Weiner This option enables a simple controller that exports 135123b0be48SWaiman Long debugging information about the cgroups framework. This 135223b0be48SWaiman Long controller is for control cgroup debugging only. Its 135323b0be48SWaiman Long interfaces are not stable. 13546bf024e6SJohannes Weiner 13556bf024e6SJohannes Weiner Say N. 13566bf024e6SJohannes Weiner 135773b35147SArnd Bergmannconfig SOCK_CGROUP_DATA 135873b35147SArnd Bergmann bool 135973b35147SArnd Bergmann default n 136073b35147SArnd Bergmann 136123964d2dSLi Zefanendif # CGROUPS 1362c077719bSKAMEZAWA Hiroyuki 13638dd2a82cSDaniel Lezcanomenuconfig NAMESPACES 13646a108a14SDavid Rientjes bool "Namespaces support" if EXPERT 13652813893fSIulia Manda depends on MULTIUSER 13666a108a14SDavid Rientjes default !EXPERT 1367c5289a69SPavel Emelyanov help 1368c5289a69SPavel Emelyanov Provides the way to make tasks work with different objects using 1369c5289a69SPavel Emelyanov the same id. For example same IPC id may refer to different objects 1370c5289a69SPavel Emelyanov or same user id or pid may refer to different tasks when used in 1371c5289a69SPavel Emelyanov different namespaces. 1372c5289a69SPavel Emelyanov 13738dd2a82cSDaniel Lezcanoif NAMESPACES 13748dd2a82cSDaniel Lezcano 137558bfdd6dSPavel Emelyanovconfig UTS_NS 137658bfdd6dSPavel Emelyanov bool "UTS namespace" 137717a6d441SDaniel Lezcano default y 137858bfdd6dSPavel Emelyanov help 137958bfdd6dSPavel Emelyanov In this namespace tasks see different info provided with the 138058bfdd6dSPavel Emelyanov uname() system call 138158bfdd6dSPavel Emelyanov 1382769071acSAndrei Vaginconfig TIME_NS 1383769071acSAndrei Vagin bool "TIME namespace" 1384bad53ae2SThomas Weißschuh depends on GENERIC_GETTIMEOFDAY 1385769071acSAndrei Vagin default y 1386769071acSAndrei Vagin help 1387769071acSAndrei Vagin In this namespace boottime and monotonic clocks can be set. 1388769071acSAndrei Vagin The time will keep going with the same pace. 1389769071acSAndrei Vagin 1390ae5e1b22SPavel Emelyanovconfig IPC_NS 1391ae5e1b22SPavel Emelyanov bool "IPC namespace" 13928dd2a82cSDaniel Lezcano depends on (SYSVIPC || POSIX_MQUEUE) 139317a6d441SDaniel Lezcano default y 1394ae5e1b22SPavel Emelyanov help 1395ae5e1b22SPavel Emelyanov In this namespace tasks work with IPC ids which correspond to 1396614b84cfSSerge E. Hallyn different IPC objects in different namespaces. 1397ae5e1b22SPavel Emelyanov 1398aee16ce7SPavel Emelyanovconfig USER_NS 139919c92399SKees Cook bool "User namespace" 14005673a94cSEric W. Biederman default n 1401aee16ce7SPavel Emelyanov help 1402aee16ce7SPavel Emelyanov This allows containers, i.e. vservers, to use user namespaces 1403aee16ce7SPavel Emelyanov to provide different user info for different servers. 1404e11f0ae3SEric W. Biederman 1405e11f0ae3SEric W. Biederman When user namespaces are enabled in the kernel it is 1406d886f4e4SJohannes Weiner recommended that the MEMCG option also be enabled and that 1407d886f4e4SJohannes Weiner user-space use the memory control groups to limit the amount 1408d886f4e4SJohannes Weiner of memory a memory unprivileged users can use. 1409e11f0ae3SEric W. Biederman 1410aee16ce7SPavel Emelyanov If unsure, say N. 1411aee16ce7SPavel Emelyanov 141274bd59bbSPavel Emelyanovconfig PID_NS 14139bd38c2cSDaniel Lezcano bool "PID Namespaces" 141417a6d441SDaniel Lezcano default y 141574bd59bbSPavel Emelyanov help 141612d2b8f9SHeikki Orsila Support process id namespaces. This allows having multiple 1417692105b8SMatt LaPlante processes with the same pid as long as they are in different 141874bd59bbSPavel Emelyanov pid namespaces. This is a building block of containers. 141974bd59bbSPavel Emelyanov 1420d6eb633fSMatt Helsleyconfig NET_NS 1421d6eb633fSMatt Helsley bool "Network namespace" 14228dd2a82cSDaniel Lezcano depends on NET 142317a6d441SDaniel Lezcano default y 1424d6eb633fSMatt Helsley help 1425d6eb633fSMatt Helsley Allow user space to create what appear to be multiple instances 1426d6eb633fSMatt Helsley of the network stack. 1427d6eb633fSMatt Helsley 14288dd2a82cSDaniel Lezcanoendif # NAMESPACES 14298dd2a82cSDaniel Lezcano 14305cb366bbSAdrian Reberconfig CHECKPOINT_RESTORE 14315cb366bbSAdrian Reber bool "Checkpoint/restore support" 143230341ec9SRen Zhijie depends on PROC_FS 14335cb366bbSAdrian Reber select PROC_CHILDREN 1434bfe3911aSChris Wilson select KCMP 14355cb366bbSAdrian Reber default n 14365cb366bbSAdrian Reber help 14375cb366bbSAdrian Reber Enables additional kernel features in a sake of checkpoint/restore. 14385cb366bbSAdrian Reber In particular it adds auxiliary prctl codes to setup process text, 14395cb366bbSAdrian Reber data and heap segment sizes, and a few additional /proc filesystem 14405cb366bbSAdrian Reber entries. 14415cb366bbSAdrian Reber 14425cb366bbSAdrian Reber If unsure, say N here. 14435cb366bbSAdrian Reber 14445091faa4SMike Galbraithconfig SCHED_AUTOGROUP 14455091faa4SMike Galbraith bool "Automatic process group scheduling" 14465091faa4SMike Galbraith select CGROUPS 14475091faa4SMike Galbraith select CGROUP_SCHED 14485091faa4SMike Galbraith select FAIR_GROUP_SCHED 14495091faa4SMike Galbraith help 14505091faa4SMike Galbraith This option optimizes the scheduler for common desktop workloads by 14515091faa4SMike Galbraith automatically creating and populating task groups. This separation 14525091faa4SMike Galbraith of workloads isolates aggressive CPU burners (like build jobs) from 14535091faa4SMike Galbraith desktop applications. Task group autogeneration is currently based 14545091faa4SMike Galbraith upon task session. 14555091faa4SMike Galbraith 14567af37becSDaniel Lezcanoconfig RELAY 14577af37becSDaniel Lezcano bool "Kernel->user space relay support (formerly relayfs)" 145826b5679eSPeter Zijlstra select IRQ_WORK 14597af37becSDaniel Lezcano help 14607af37becSDaniel Lezcano This option enables support for relay interface support in 14617af37becSDaniel Lezcano certain file systems (such as debugfs). 14627af37becSDaniel Lezcano It is designed to provide an efficient mechanism for tools and 14637af37becSDaniel Lezcano facilities to relay large amounts of data from kernel space to 14647af37becSDaniel Lezcano user space. 14657af37becSDaniel Lezcano 14667af37becSDaniel Lezcano If unsure, say N. 14677af37becSDaniel Lezcano 1468f991633dSDimitri Gorokhovikconfig BLK_DEV_INITRD 1469f991633dSDimitri Gorokhovik bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 1470f991633dSDimitri Gorokhovik help 1471f991633dSDimitri Gorokhovik The initial RAM filesystem is a ramfs which is loaded by the 1472f991633dSDimitri Gorokhovik boot loader (loadlin or lilo) and that is mounted as root 1473f991633dSDimitri Gorokhovik before the normal boot procedure. It is typically used to 1474f991633dSDimitri Gorokhovik load modules needed to mount the "real" root file system, 14758c27ceffSMauro Carvalho Chehab etc. See <file:Documentation/admin-guide/initrd.rst> for details. 1476f991633dSDimitri Gorokhovik 1477f991633dSDimitri Gorokhovik If RAM disk support (BLK_DEV_RAM) is also included, this 1478f991633dSDimitri Gorokhovik also enables initial RAM disk (initrd) support and adds 1479f991633dSDimitri Gorokhovik 15 Kbytes (more on some other architectures) to the kernel size. 1480f991633dSDimitri Gorokhovik 1481f991633dSDimitri Gorokhovik If unsure say Y. 1482f991633dSDimitri Gorokhovik 1483c33df4eaSJean-Paul Samanif BLK_DEV_INITRD 1484c33df4eaSJean-Paul Saman 1485dbec4866SSam Ravnborgsource "usr/Kconfig" 1486dbec4866SSam Ravnborg 1487c33df4eaSJean-Paul Samanendif 1488c33df4eaSJean-Paul Saman 148976db5a27SMasami Hiramatsuconfig BOOT_CONFIG 149076db5a27SMasami Hiramatsu bool "Boot config support" 1491a2a9d67aSMasami Hiramatsu select BLK_DEV_INITRD if !BOOT_CONFIG_EMBED 149276db5a27SMasami Hiramatsu help 149376db5a27SMasami Hiramatsu Extra boot config allows system admin to pass a config file as 149476db5a27SMasami Hiramatsu complemental extension of kernel cmdline when booting. 14950947db01SMasami Hiramatsu The boot config file must be attached at the end of initramfs 149685c46b78SMasami Hiramatsu with checksum, size and magic word. 14970947db01SMasami Hiramatsu See <file:Documentation/admin-guide/bootconfig.rst> for details. 149876db5a27SMasami Hiramatsu 149976db5a27SMasami Hiramatsu If unsure, say Y. 150076db5a27SMasami Hiramatsu 1501b743852cSPaul E. McKenneyconfig BOOT_CONFIG_FORCE 1502b743852cSPaul E. McKenney bool "Force unconditional bootconfig processing" 1503b743852cSPaul E. McKenney depends on BOOT_CONFIG 15046ded8a28SPaul E. McKenney default y if BOOT_CONFIG_EMBED 1505b743852cSPaul E. McKenney help 1506b743852cSPaul E. McKenney With this Kconfig option set, BOOT_CONFIG processing is carried 1507b743852cSPaul E. McKenney out even when the "bootconfig" kernel-boot parameter is omitted. 1508b743852cSPaul E. McKenney In fact, with this Kconfig option set, there is no way to 1509b743852cSPaul E. McKenney make the kernel ignore the BOOT_CONFIG-supplied kernel-boot 1510b743852cSPaul E. McKenney parameters. 1511b743852cSPaul E. McKenney 1512b743852cSPaul E. McKenney If unsure, say N. 1513b743852cSPaul E. McKenney 1514a2a9d67aSMasami Hiramatsuconfig BOOT_CONFIG_EMBED 1515a2a9d67aSMasami Hiramatsu bool "Embed bootconfig file in the kernel" 1516a2a9d67aSMasami Hiramatsu depends on BOOT_CONFIG 1517a2a9d67aSMasami Hiramatsu help 1518a2a9d67aSMasami Hiramatsu Embed a bootconfig file given by BOOT_CONFIG_EMBED_FILE in the 1519a2a9d67aSMasami Hiramatsu kernel. Usually, the bootconfig file is loaded with the initrd 1520a2a9d67aSMasami Hiramatsu image. But if the system doesn't support initrd, this option will 1521a2a9d67aSMasami Hiramatsu help you by embedding a bootconfig file while building the kernel. 1522a2a9d67aSMasami Hiramatsu 1523a2a9d67aSMasami Hiramatsu If unsure, say N. 1524a2a9d67aSMasami Hiramatsu 1525a2a9d67aSMasami Hiramatsuconfig BOOT_CONFIG_EMBED_FILE 1526a2a9d67aSMasami Hiramatsu string "Embedded bootconfig file path" 1527a2a9d67aSMasami Hiramatsu depends on BOOT_CONFIG_EMBED 1528a2a9d67aSMasami Hiramatsu help 1529a2a9d67aSMasami Hiramatsu Specify a bootconfig file which will be embedded to the kernel. 1530a2a9d67aSMasami Hiramatsu This bootconfig will be used if there is no initrd or no other 1531a2a9d67aSMasami Hiramatsu bootconfig in the initrd. 1532a2a9d67aSMasami Hiramatsu 1533032a7302SDouglas Andersonconfig CMDLINE_LOG_WRAP_IDEAL_LEN 1534032a7302SDouglas Anderson int "Length to try to wrap the cmdline when logged at boot" 1535032a7302SDouglas Anderson default 1021 1536032a7302SDouglas Anderson range 0 1021 1537032a7302SDouglas Anderson help 1538032a7302SDouglas Anderson At boot time, the kernel command line is logged to the console. 1539032a7302SDouglas Anderson The log message will start with the prefix "Kernel command line: ". 1540032a7302SDouglas Anderson The log message will attempt to be wrapped (split into multiple log 1541032a7302SDouglas Anderson messages) at spaces based on CMDLINE_LOG_WRAP_IDEAL_LEN characters. 1542032a7302SDouglas Anderson If wrapping happens, each log message will start with the prefix and 1543032a7302SDouglas Anderson all but the last message will end with " \". Messages may exceed the 1544032a7302SDouglas Anderson ideal length if a place to wrap isn't found before the specified 1545032a7302SDouglas Anderson number of characters. 1546032a7302SDouglas Anderson 1547032a7302SDouglas Anderson A value of 0 disables wrapping, though be warned that the maximum 1548032a7302SDouglas Anderson length of a log message (1021 characters) may cause the cmdline to 1549032a7302SDouglas Anderson be truncated. 1550032a7302SDouglas Anderson 15511274aea1SDavid Disseldorpconfig INITRAMFS_PRESERVE_MTIME 15521274aea1SDavid Disseldorp bool "Preserve cpio archive mtimes in initramfs" 155374792608SGeert Uytterhoeven depends on BLK_DEV_INITRD 15541274aea1SDavid Disseldorp default y 15551274aea1SDavid Disseldorp help 15561274aea1SDavid Disseldorp Each entry in an initramfs cpio archive carries an mtime value. When 15571274aea1SDavid Disseldorp enabled, extracted cpio items take this mtime, with directory mtime 15581274aea1SDavid Disseldorp setting deferred until after creation of any child entries. 15591274aea1SDavid Disseldorp 15601274aea1SDavid Disseldorp If unsure, say Y. 15611274aea1SDavid Disseldorp 156283c0b272SDavid Disseldorpconfig INITRAMFS_TEST 156383c0b272SDavid Disseldorp bool "Test initramfs cpio archive extraction" if !KUNIT_ALL_TESTS 156483c0b272SDavid Disseldorp depends on BLK_DEV_INITRD && KUNIT=y 156583c0b272SDavid Disseldorp default KUNIT_ALL_TESTS 156683c0b272SDavid Disseldorp help 156783c0b272SDavid Disseldorp Build KUnit tests for initramfs. See Documentation/dev-tools/kunit 156883c0b272SDavid Disseldorp 1569877417e6SArnd Bergmannchoice 1570877417e6SArnd Bergmann prompt "Compiler optimization level" 15712cc3ce24SUlf Magnusson default CC_OPTIMIZE_FOR_PERFORMANCE 1572877417e6SArnd Bergmann 1573877417e6SArnd Bergmannconfig CC_OPTIMIZE_FOR_PERFORMANCE 157415f5db60SMasahiro Yamada bool "Optimize for performance (-O2)" 1575877417e6SArnd Bergmann help 1576877417e6SArnd Bergmann This is the default optimization level for the kernel, building 1577877417e6SArnd Bergmann with the "-O2" compiler flag for best performance and most 1578877417e6SArnd Bergmann helpful compile-time warnings. 1579877417e6SArnd Bergmann 1580c45b4f1fSLinus Torvaldsconfig CC_OPTIMIZE_FOR_SIZE 158115f5db60SMasahiro Yamada bool "Optimize for size (-Os)" 1582c45b4f1fSLinus Torvalds help 1583ce3b487fSMasahiro Yamada Choosing this option will pass "-Os" to your compiler resulting 1584ce3b487fSMasahiro Yamada in a smaller kernel. 1585c45b4f1fSLinus Torvalds 1586877417e6SArnd Bergmannendchoice 1587877417e6SArnd Bergmann 15885d20ee31SNicholas Pigginconfig HAVE_LD_DEAD_CODE_DATA_ELIMINATION 15895d20ee31SNicholas Piggin bool 15905d20ee31SNicholas Piggin help 15915d20ee31SNicholas Piggin This requires that the arch annotates or otherwise protects 15925d20ee31SNicholas Piggin its external entry points from being discarded. Linker scripts 15935d20ee31SNicholas Piggin must also merge .text.*, .data.*, and .bss.* correctly into 15945d20ee31SNicholas Piggin output sections. Care must be taken not to pull in unrelated 15955d20ee31SNicholas Piggin sections (e.g., '.text.init'). Typically '.' in section names 15965d20ee31SNicholas Piggin is used to distinguish them from label names / C identifiers. 15975d20ee31SNicholas Piggin 15985d20ee31SNicholas Pigginconfig LD_DEAD_CODE_DATA_ELIMINATION 15995d20ee31SNicholas Piggin bool "Dead code and data elimination (EXPERIMENTAL)" 16005d20ee31SNicholas Piggin depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION 16015d20ee31SNicholas Piggin depends on EXPERT 1602e85d1d65SMasahiro Yamada depends on $(cc-option,-ffunction-sections -fdata-sections) 1603e85d1d65SMasahiro Yamada depends on $(ld-option,--gc-sections) 16045d20ee31SNicholas Piggin help 16058b9d2712SMasahiro Yamada Enable this if you want to do dead code and data elimination with 16068b9d2712SMasahiro Yamada the linker by compiling with -ffunction-sections -fdata-sections, 16078b9d2712SMasahiro Yamada and linking with --gc-sections. 16085d20ee31SNicholas Piggin 16095d20ee31SNicholas Piggin This can reduce on disk and in-memory size of the kernel 16105d20ee31SNicholas Piggin code and static data, particularly for small configs and 16115d20ee31SNicholas Piggin on small systems. This has the possibility of introducing 16125d20ee31SNicholas Piggin silently broken kernel if the required annotations are not 16135d20ee31SNicholas Piggin present. This option is not well tested yet, so use at your 16145d20ee31SNicholas Piggin own risk. 16155d20ee31SNicholas Piggin 161659612b24SNathan Chancellorconfig LD_ORPHAN_WARN 161759612b24SNathan Chancellor def_bool y 161859612b24SNathan Chancellor depends on ARCH_WANT_LD_ORPHAN_WARN 161959612b24SNathan Chancellor depends on $(ld-option,--orphan-handling=warn) 1620e1789d7cSXin Li depends on $(ld-option,--orphan-handling=error) 1621e1789d7cSXin Li 1622e1789d7cSXin Liconfig LD_ORPHAN_WARN_LEVEL 1623e1789d7cSXin Li string 1624e1789d7cSXin Li depends on LD_ORPHAN_WARN 1625e1789d7cSXin Li default "error" if WERROR 1626e1789d7cSXin Li default "warn" 162759612b24SNathan Chancellor 16280847062aSRandy Dunlapconfig SYSCTL 16290847062aSRandy Dunlap bool 16300847062aSRandy Dunlap 1631657a5209SMike Frysingerconfig HAVE_UID16 1632657a5209SMike Frysinger bool 1633657a5209SMike Frysinger 1634657a5209SMike Frysingerconfig SYSCTL_EXCEPTION_TRACE 1635657a5209SMike Frysinger bool 1636657a5209SMike Frysinger help 1637657a5209SMike Frysinger Enable support for /proc/sys/debug/exception-trace. 1638657a5209SMike Frysinger 1639657a5209SMike Frysingerconfig SYSCTL_ARCH_UNALIGN_NO_WARN 1640657a5209SMike Frysinger bool 1641657a5209SMike Frysinger help 1642657a5209SMike Frysinger Enable support for /proc/sys/kernel/ignore-unaligned-usertrap 1643657a5209SMike Frysinger Allows arch to define/use @no_unaligned_warning to possibly warn 1644657a5209SMike Frysinger about unaligned access emulation going on under the hood. 1645657a5209SMike Frysinger 1646657a5209SMike Frysingerconfig SYSCTL_ARCH_UNALIGN_ALLOW 1647657a5209SMike Frysinger bool 1648657a5209SMike Frysinger help 1649657a5209SMike Frysinger Enable support for /proc/sys/kernel/unaligned-trap 1650657a5209SMike Frysinger Allows arches to define/use @unaligned_enabled to runtime toggle 1651657a5209SMike Frysinger the unaligned access emulation. 1652657a5209SMike Frysinger see arch/parisc/kernel/unaligned.c for reference 1653657a5209SMike Frysinger 1654c443279aSChristian Braunerconfig SYSFS_SYSCALL 1655c443279aSChristian Brauner bool "Sysfs syscall support" 1656c443279aSChristian Brauner default n 1657c443279aSChristian Brauner help 1658c443279aSChristian Brauner sys_sysfs is an obsolete system call no longer supported in libc. 1659c443279aSChristian Brauner Note that disabling this option is more secure but might break 1660c443279aSChristian Brauner compatibility with some systems. 1661c443279aSChristian Brauner 1662c443279aSChristian Brauner If unsure say N here. 1663c443279aSChristian Brauner 1664657a5209SMike Frysingerconfig HAVE_PCSPKR_PLATFORM 1665657a5209SMike Frysinger bool 1666657a5209SMike Frysinger 16676a108a14SDavid Rientjesmenuconfig EXPERT 16686a108a14SDavid Rientjes bool "Configure standard kernel features (expert users)" 1669f505c553SJosh Triplett # Unhide debug options, to make the on-by-default options visible 1670f505c553SJosh Triplett select DEBUG_KERNEL 16711da177e4SLinus Torvalds help 16721da177e4SLinus Torvalds This option allows certain base kernel options and settings 16731da177e4SLinus Torvalds to be disabled or tweaked. This is for specialized 16741da177e4SLinus Torvalds environments which can tolerate a "non-standard" kernel. 16751da177e4SLinus Torvalds Only use this if you really know what you are doing. 16761da177e4SLinus Torvalds 1677ae81f9e3SChuck Ebbertconfig UID16 16786a108a14SDavid Rientjes bool "Enable 16-bit UID system calls" if EXPERT 16792813893fSIulia Manda depends on HAVE_UID16 && MULTIUSER 1680ae81f9e3SChuck Ebbert default y 1681ae81f9e3SChuck Ebbert help 1682ae81f9e3SChuck Ebbert This enables the legacy 16-bit UID syscall wrappers. 1683ae81f9e3SChuck Ebbert 16842813893fSIulia Mandaconfig MULTIUSER 16852813893fSIulia Manda bool "Multiple users, groups and capabilities support" if EXPERT 16862813893fSIulia Manda default y 16872813893fSIulia Manda help 16882813893fSIulia Manda This option enables support for non-root users, groups and 16892813893fSIulia Manda capabilities. 16902813893fSIulia Manda 16912813893fSIulia Manda If you say N here, all processes will run with UID 0, GID 0, and all 16922813893fSIulia Manda possible capabilities. Saying N here also compiles out support for 16932813893fSIulia Manda system calls related to UIDs, GIDs, and capabilities, such as setuid, 16942813893fSIulia Manda setgid, and capset. 16952813893fSIulia Manda 16962813893fSIulia Manda If unsure, say Y here. 16972813893fSIulia Manda 1698f6187769SFabian Frederickconfig SGETMASK_SYSCALL 1699f6187769SFabian Frederick bool "sgetmask/ssetmask syscalls support" if EXPERT 1700cd14b018SMasahiro Yamada default PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH 1701a7f7f624SMasahiro Yamada help 1702f6187769SFabian Frederick sys_sgetmask and sys_ssetmask are obsolete system calls 1703f6187769SFabian Frederick no longer supported in libc but still enabled by default in some 1704f6187769SFabian Frederick architectures. 1705f6187769SFabian Frederick 1706f6187769SFabian Frederick If unsure, leave the default option here. 1707f6187769SFabian Frederick 1708d1b069f5SRandy Dunlapconfig FHANDLE 1709d1b069f5SRandy Dunlap bool "open by fhandle syscalls" if EXPERT 1710d1b069f5SRandy Dunlap select EXPORTFS 1711d1b069f5SRandy Dunlap default y 1712d1b069f5SRandy Dunlap help 1713d1b069f5SRandy Dunlap If you say Y here, a user level program will be able to map 1714d1b069f5SRandy Dunlap file names to handle and then later use the handle for 1715d1b069f5SRandy Dunlap different file system operations. This is useful in implementing 1716d1b069f5SRandy Dunlap userspace file servers, which now track files using handles instead 1717d1b069f5SRandy Dunlap of names. The handle would remain the same even if file names 1718d1b069f5SRandy Dunlap get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2) 1719d1b069f5SRandy Dunlap syscalls. 1720d1b069f5SRandy Dunlap 1721baa73d9eSNicolas Pitreconfig POSIX_TIMERS 1722baa73d9eSNicolas Pitre bool "Posix Clocks & timers" if EXPERT 1723baa73d9eSNicolas Pitre default y 1724baa73d9eSNicolas Pitre help 1725baa73d9eSNicolas Pitre This includes native support for POSIX timers to the kernel. 1726baa73d9eSNicolas Pitre Some embedded systems have no use for them and therefore they 1727baa73d9eSNicolas Pitre can be configured out to reduce the size of the kernel image. 1728baa73d9eSNicolas Pitre 1729baa73d9eSNicolas Pitre When this option is disabled, the following syscalls won't be 1730baa73d9eSNicolas Pitre available: timer_create, timer_gettime: timer_getoverrun, 1731baa73d9eSNicolas Pitre timer_settime, timer_delete, clock_adjtime, getitimer, 1732baa73d9eSNicolas Pitre setitimer, alarm. Furthermore, the clock_settime, clock_gettime, 1733baa73d9eSNicolas Pitre clock_getres and clock_nanosleep syscalls will be limited to 1734baa73d9eSNicolas Pitre CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only. 1735baa73d9eSNicolas Pitre 1736baa73d9eSNicolas Pitre If unsure say y. 1737baa73d9eSNicolas Pitre 1738d59745ceSMatt Mackallconfig PRINTK 1739d59745ceSMatt Mackall default y 17406a108a14SDavid Rientjes bool "Enable support for printk" if EXPERT 174174876a98SFrederic Weisbecker select IRQ_WORK 1742d59745ceSMatt Mackall help 1743d59745ceSMatt Mackall This option enables normal printk support. Removing it 1744d59745ceSMatt Mackall eliminates most of the message strings from the kernel image 1745d59745ceSMatt Mackall and makes the kernel more or less silent. As this makes it 1746d59745ceSMatt Mackall very difficult to diagnose system problems, saying N here is 1747d59745ceSMatt Mackall strongly discouraged. 1748d59745ceSMatt Mackall 17495ea2bcdfSThomas Weißschuhconfig PRINTK_RINGBUFFER_KUNIT_TEST 17505ea2bcdfSThomas Weißschuh tristate "KUnit Test for the printk ringbuffer" if !KUNIT_ALL_TESTS 17515ea2bcdfSThomas Weißschuh depends on PRINTK && KUNIT 17525ea2bcdfSThomas Weißschuh default KUNIT_ALL_TESTS 17535ea2bcdfSThomas Weißschuh help 17545ea2bcdfSThomas Weißschuh This builds the printk ringbuffer KUnit test suite. 17555ea2bcdfSThomas Weißschuh 17565ea2bcdfSThomas Weißschuh For more information on KUnit and unit tests in general, please refer 17575ea2bcdfSThomas Weißschuh to the KUnit documentation. 17585ea2bcdfSThomas Weißschuh 17595ea2bcdfSThomas Weißschuh If unsure, say N. 17605ea2bcdfSThomas Weißschuh 1761c8538a7aSMatt Mackallconfig BUG 17626a108a14SDavid Rientjes bool "BUG() support" if EXPERT 1763c8538a7aSMatt Mackall default y 1764c8538a7aSMatt Mackall help 1765c8538a7aSMatt Mackall Disabling this option eliminates support for BUG and WARN, reducing 1766c8538a7aSMatt Mackall the size of your kernel image and potentially quietly ignoring 1767c8538a7aSMatt Mackall numerous fatal conditions. You should only consider disabling this 1768c8538a7aSMatt Mackall option for embedded systems with no facilities for reporting errors. 1769c8538a7aSMatt Mackall Just say Y. 1770c8538a7aSMatt Mackall 1771708e9a79SMatt Mackallconfig ELF_CORE 1772046d662fSAlex Kelly depends on COREDUMP 1773708e9a79SMatt Mackall default y 17746a108a14SDavid Rientjes bool "Enable ELF core dumps" if EXPERT 1775708e9a79SMatt Mackall help 1776708e9a79SMatt Mackall Enable support for generating core dumps. Disabling saves about 4k. 1777708e9a79SMatt Mackall 17788761f1abSRalf Baechle 1779e5e1d3cbSStas Sergeevconfig PCSPKR_PLATFORM 17806a108a14SDavid Rientjes bool "Enable PC-Speaker support" if EXPERT 17818761f1abSRalf Baechle depends on HAVE_PCSPKR_PLATFORM 178215f304b6SRalf Baechle select I8253_LOCK 1783e5e1d3cbSStas Sergeev default y 1784e5e1d3cbSStas Sergeev help 1785e5e1d3cbSStas Sergeev This option allows to disable the internal PC-Speaker 1786e5e1d3cbSStas Sergeev support, saving some memory. 1787e5e1d3cbSStas Sergeev 178827021649SYoann Congalconfig BASE_SMALL 178927021649SYoann Congal bool "Enable smaller-sized data structures for core" if EXPERT 17901da177e4SLinus Torvalds help 179127021649SYoann Congal Enabling this option reduces the size of miscellaneous core 17921da177e4SLinus Torvalds kernel data structures. This saves memory on small machines, 17931da177e4SLinus Torvalds but may reduce performance. 17941da177e4SLinus Torvalds 17951da177e4SLinus Torvaldsconfig FUTEX 17966a108a14SDavid Rientjes bool "Enable futex support" if EXPERT 17973f2bedabSArnd Bergmann depends on !(SPARC32 && SMP) 17981da177e4SLinus Torvalds default y 1799bc2eecd7SNicolas Pitre imply RT_MUTEXES 18001da177e4SLinus Torvalds help 18011da177e4SLinus Torvalds Disabling this option will cause the kernel to be built without 18021da177e4SLinus Torvalds support for "fast userspace mutexes". The resulting kernel may not 18031da177e4SLinus Torvalds run glibc-based applications correctly. 18041da177e4SLinus Torvalds 1805bc2eecd7SNicolas Pitreconfig FUTEX_PI 1806bc2eecd7SNicolas Pitre bool 1807bc2eecd7SNicolas Pitre depends on FUTEX && RT_MUTEXES 1808bc2eecd7SNicolas Pitre default y 1809bc2eecd7SNicolas Pitre 181080367ad0SSebastian Andrzej Siewiorconfig FUTEX_PRIVATE_HASH 181180367ad0SSebastian Andrzej Siewior bool 181280367ad0SSebastian Andrzej Siewior depends on FUTEX && !BASE_SMALL && MMU 181380367ad0SSebastian Andrzej Siewior default y 181480367ad0SSebastian Andrzej Siewior 1815c042c505SPeter Zijlstraconfig FUTEX_MPOL 1816c042c505SPeter Zijlstra bool 1817c042c505SPeter Zijlstra depends on FUTEX && NUMA 1818c042c505SPeter Zijlstra default y 1819c042c505SPeter Zijlstra 18201da177e4SLinus Torvaldsconfig EPOLL 18216a108a14SDavid Rientjes bool "Enable eventpoll support" if EXPERT 18221da177e4SLinus Torvalds default y 18231da177e4SLinus Torvalds help 18241da177e4SLinus Torvalds Disabling this option will cause the kernel to be built without 18251da177e4SLinus Torvalds support for epoll family of system calls. 18261da177e4SLinus Torvalds 1827fba2afaaSDavide Libenziconfig SIGNALFD 18286a108a14SDavid Rientjes bool "Enable signalfd() system call" if EXPERT 1829fba2afaaSDavide Libenzi default y 1830fba2afaaSDavide Libenzi help 1831fba2afaaSDavide Libenzi Enable the signalfd() system call that allows to receive signals 1832fba2afaaSDavide Libenzi on a file descriptor. 1833fba2afaaSDavide Libenzi 1834fba2afaaSDavide Libenzi If unsure, say Y. 1835fba2afaaSDavide Libenzi 1836b215e283SDavide Libenziconfig TIMERFD 18376a108a14SDavid Rientjes bool "Enable timerfd() system call" if EXPERT 1838b215e283SDavide Libenzi default y 1839b215e283SDavide Libenzi help 1840b215e283SDavide Libenzi Enable the timerfd() system call that allows to receive timer 1841b215e283SDavide Libenzi events on a file descriptor. 1842b215e283SDavide Libenzi 1843b215e283SDavide Libenzi If unsure, say Y. 1844b215e283SDavide Libenzi 1845e1ad7468SDavide Libenziconfig EVENTFD 18466a108a14SDavid Rientjes bool "Enable eventfd() system call" if EXPERT 1847e1ad7468SDavide Libenzi default y 1848e1ad7468SDavide Libenzi help 1849e1ad7468SDavide Libenzi Enable the eventfd() system call that allows to receive both 1850e1ad7468SDavide Libenzi kernel notification (ie. KAIO) or userspace notifications. 1851e1ad7468SDavide Libenzi 1852e1ad7468SDavide Libenzi If unsure, say Y. 1853e1ad7468SDavide Libenzi 18541da177e4SLinus Torvaldsconfig SHMEM 18556a108a14SDavid Rientjes bool "Use full shmem filesystem" if EXPERT 18561da177e4SLinus Torvalds default y 18571da177e4SLinus Torvalds depends on MMU 18581da177e4SLinus Torvalds help 18591da177e4SLinus Torvalds The shmem is an internal filesystem used to manage shared memory. 18601da177e4SLinus Torvalds It is backed by swap and manages resource limits. It is also exported 18611da177e4SLinus Torvalds to userspace as tmpfs if TMPFS is enabled. Disabling this 18621da177e4SLinus Torvalds option replaces shmem and tmpfs with the much simpler ramfs code, 18631da177e4SLinus Torvalds which may be appropriate on small systems without swap. 18641da177e4SLinus Torvalds 1865ebf3f09cSThomas Petazzoniconfig AIO 18666a108a14SDavid Rientjes bool "Enable AIO support" if EXPERT 1867ebf3f09cSThomas Petazzoni default y 1868ebf3f09cSThomas Petazzoni help 1869ebf3f09cSThomas Petazzoni This option enables POSIX asynchronous I/O which may by used 1870ebf3f09cSThomas Petazzoni by some high performance threaded applications. Disabling 1871ebf3f09cSThomas Petazzoni this option saves about 7k. 1872ebf3f09cSThomas Petazzoni 18732b188cc1SJens Axboeconfig IO_URING 18742b188cc1SJens Axboe bool "Enable IO uring support" if EXPERT 1875561fb04aSJens Axboe select IO_WQ 18762b188cc1SJens Axboe default y 18772b188cc1SJens Axboe help 18782b188cc1SJens Axboe This option enables support for the io_uring interface, enabling 18792b188cc1SJens Axboe applications to submit and complete IO through submission and 18802b188cc1SJens Axboe completion rings that are shared between the kernel and application. 18812b188cc1SJens Axboe 18821802656eSJens Axboeconfig GCOV_PROFILE_URING 18831802656eSJens Axboe bool "Enable GCOV profiling on the io_uring subsystem" 1884d1fbe1ebSRandy Dunlap depends on IO_URING && GCOV_KERNEL 18851802656eSJens Axboe help 18861802656eSJens Axboe Enable GCOV profiling on the io_uring subsystem, to facilitate 18871802656eSJens Axboe code coverage testing. 18881802656eSJens Axboe 18891802656eSJens Axboe If unsure, say N. 18901802656eSJens Axboe 18911802656eSJens Axboe Note that this will have a negative impact on the performance of 18921802656eSJens Axboe the io_uring subsystem, hence this should only be enabled for 18931802656eSJens Axboe specific test purposes. 18941802656eSJens Axboe 18953a0ae385SPavel Begunkovconfig IO_URING_MOCK_FILE 18963a0ae385SPavel Begunkov tristate "Enable io_uring mock files (Experimental)" if EXPERT 18973a0ae385SPavel Begunkov default n 18983a0ae385SPavel Begunkov depends on IO_URING 18993a0ae385SPavel Begunkov help 1900*9e7dc228SJ. Neuschäfer Enable mock files for io_uring subsystem testing. The ABI might 19013a0ae385SPavel Begunkov still change, so it's still experimental and should only be enabled 19023a0ae385SPavel Begunkov for specific test purposes. 19033a0ae385SPavel Begunkov 19043a0ae385SPavel Begunkov If unsure, say N. 19053a0ae385SPavel Begunkov 1906d3ac21caSJosh Triplettconfig ADVISE_SYSCALLS 1907d3ac21caSJosh Triplett bool "Enable madvise/fadvise syscalls" if EXPERT 1908d3ac21caSJosh Triplett default y 1909d3ac21caSJosh Triplett help 1910d3ac21caSJosh Triplett This option enables the madvise and fadvise syscalls, used by 1911d3ac21caSJosh Triplett applications to advise the kernel about their future memory or file 1912d3ac21caSJosh Triplett usage, improving performance. If building an embedded system where no 1913d3ac21caSJosh Triplett applications use these syscalls, you can disable this option to save 1914d3ac21caSJosh Triplett space. 1915d3ac21caSJosh Triplett 19165b25b13aSMathieu Desnoyersconfig MEMBARRIER 19175b25b13aSMathieu Desnoyers bool "Enable membarrier() system call" if EXPERT 19185b25b13aSMathieu Desnoyers default y 19195b25b13aSMathieu Desnoyers help 19205b25b13aSMathieu Desnoyers Enable the membarrier() system call that allows issuing memory 19215b25b13aSMathieu Desnoyers barriers across all running threads, which can be used to distribute 19225b25b13aSMathieu Desnoyers the cost of user-space memory barriers asymmetrically by transforming 19235b25b13aSMathieu Desnoyers pairs of memory barriers into pairs consisting of membarrier() and a 19245b25b13aSMathieu Desnoyers compiler barrier. 19255b25b13aSMathieu Desnoyers 19265b25b13aSMathieu Desnoyers If unsure, say Y. 19275b25b13aSMathieu Desnoyers 1928a751ea34SRandy Dunlapconfig KCMP 1929a751ea34SRandy Dunlap bool "Enable kcmp() system call" if EXPERT 1930a751ea34SRandy Dunlap help 1931a751ea34SRandy Dunlap Enable the kernel resource comparison system call. It provides 1932a751ea34SRandy Dunlap user-space with the ability to compare two processes to see if they 1933a751ea34SRandy Dunlap share a common resource, such as a file descriptor or even virtual 1934a751ea34SRandy Dunlap memory space. 1935a751ea34SRandy Dunlap 1936a751ea34SRandy Dunlap If unsure, say N. 1937a751ea34SRandy Dunlap 1938a751ea34SRandy Dunlapconfig RSEQ 1939a751ea34SRandy Dunlap bool "Enable rseq() system call" if EXPERT 1940a751ea34SRandy Dunlap default y 1941a751ea34SRandy Dunlap depends on HAVE_RSEQ 1942a751ea34SRandy Dunlap select MEMBARRIER 1943a751ea34SRandy Dunlap help 1944a751ea34SRandy Dunlap Enable the restartable sequences system call. It provides a 1945a751ea34SRandy Dunlap user-space cache for the current CPU number value, which 1946a751ea34SRandy Dunlap speeds up getting the current CPU number from user-space, 1947a751ea34SRandy Dunlap as well as an ABI to speed up user-space operations on 1948a751ea34SRandy Dunlap per-CPU data. 1949a751ea34SRandy Dunlap 1950a751ea34SRandy Dunlap If unsure, say Y. 1951a751ea34SRandy Dunlap 1952d7a5da7aSThomas Gleixnerconfig RSEQ_SLICE_EXTENSION 1953d7a5da7aSThomas Gleixner bool "Enable rseq-based time slice extension mechanism" 1954d7a5da7aSThomas Gleixner depends on RSEQ && HIGH_RES_TIMERS && GENERIC_ENTRY && HAVE_GENERIC_TIF_BITS 1955d7a5da7aSThomas Gleixner help 1956d7a5da7aSThomas Gleixner Allows userspace to request a limited time slice extension when 1957d7a5da7aSThomas Gleixner returning from an interrupt to user space via the RSEQ shared 1958d7a5da7aSThomas Gleixner data ABI. If granted, that allows to complete a critical section, 1959d7a5da7aSThomas Gleixner so that other threads are not stuck on a conflicted resource, 1960d7a5da7aSThomas Gleixner while the task is scheduled out. 1961d7a5da7aSThomas Gleixner 1962d7a5da7aSThomas Gleixner If unsure, say N. 1963d7a5da7aSThomas Gleixner 196454129104SThomas Gleixnerconfig RSEQ_STATS 196554129104SThomas Gleixner default n 196654129104SThomas Gleixner bool "Enable lightweight statistics of restartable sequences" if EXPERT 196754129104SThomas Gleixner depends on RSEQ && DEBUG_FS 196854129104SThomas Gleixner help 196954129104SThomas Gleixner Enable lightweight counters which expose information about the 197054129104SThomas Gleixner frequency of RSEQ operations via debugfs. Mostly interesting for 197154129104SThomas Gleixner kernel debugging or performance analysis. While lightweight it's 197254129104SThomas Gleixner still adding code into the user/kernel mode transitions. 197354129104SThomas Gleixner 197454129104SThomas Gleixner If unsure, say N. 197554129104SThomas Gleixner 19769c37cb6eSThomas Gleixnerconfig RSEQ_DEBUG_DEFAULT_ENABLE 19779c37cb6eSThomas Gleixner default n 19789c37cb6eSThomas Gleixner bool "Enable restartable sequences debug mode by default" if EXPERT 19799c37cb6eSThomas Gleixner depends on RSEQ 19809c37cb6eSThomas Gleixner help 19819c37cb6eSThomas Gleixner This enables the static branch for debug mode of restartable 19829c37cb6eSThomas Gleixner sequences. 19839c37cb6eSThomas Gleixner 19849c37cb6eSThomas Gleixner This also can be controlled on the kernel command line via the 19859c37cb6eSThomas Gleixner command line parameter "rseq_debug=0/1" and through debugfs. 19869c37cb6eSThomas Gleixner 19879c37cb6eSThomas Gleixner If unsure, say N. 19889c37cb6eSThomas Gleixner 1989a751ea34SRandy Dunlapconfig DEBUG_RSEQ 1990a751ea34SRandy Dunlap default n 1991a751ea34SRandy Dunlap bool "Enable debugging of rseq() system call" if EXPERT 19923db6b38dSThomas Gleixner depends on RSEQ && DEBUG_KERNEL && !GENERIC_ENTRY 19939c37cb6eSThomas Gleixner select RSEQ_DEBUG_DEFAULT_ENABLE 1994a751ea34SRandy Dunlap help 1995a751ea34SRandy Dunlap Enable extra debugging checks for the rseq system call. 1996a751ea34SRandy Dunlap 1997a751ea34SRandy Dunlap If unsure, say N. 1998a751ea34SRandy Dunlap 1999a751ea34SRandy Dunlapconfig CACHESTAT_SYSCALL 2000a751ea34SRandy Dunlap bool "Enable cachestat() system call" if EXPERT 2001a751ea34SRandy Dunlap default y 2002a751ea34SRandy Dunlap help 2003a751ea34SRandy Dunlap Enable the cachestat system call, which queries the page cache 2004a751ea34SRandy Dunlap statistics of a file (number of cached pages, dirty pages, 2005a751ea34SRandy Dunlap pages marked for writeback, (recently) evicted pages). 2006a751ea34SRandy Dunlap 2007a751ea34SRandy Dunlap If unsure say Y here. 2008a751ea34SRandy Dunlap 2009d1b069f5SRandy Dunlapconfig KALLSYMS 2010d1b069f5SRandy Dunlap bool "Load all symbols for debugging/ksymoops" if EXPERT 2011d1b069f5SRandy Dunlap default y 2012d1b069f5SRandy Dunlap help 2013d1b069f5SRandy Dunlap Say Y here to let the kernel print out symbolic crash information and 2014d1b069f5SRandy Dunlap symbolic stack backtraces. This increases the size of the kernel 2015d1b069f5SRandy Dunlap somewhat, as all symbols have to be loaded into the kernel image. 2016d1b069f5SRandy Dunlap 201730f3bb09SZhen Leiconfig KALLSYMS_SELFTEST 201830f3bb09SZhen Lei bool "Test the basic functions and performance of kallsyms" 201930f3bb09SZhen Lei depends on KALLSYMS 202030f3bb09SZhen Lei default n 202130f3bb09SZhen Lei help 202230f3bb09SZhen Lei Test the basic functions and performance of some interfaces, such as 202330f3bb09SZhen Lei kallsyms_lookup_name. It also calculates the compression rate of the 202430f3bb09SZhen Lei kallsyms compression algorithm for the current symbol set. 202530f3bb09SZhen Lei 202630f3bb09SZhen Lei Start self-test automatically after system startup. Suggest executing 202730f3bb09SZhen Lei "dmesg | grep kallsyms_selftest" to collect test results. "finish" is 202830f3bb09SZhen Lei displayed in the last line, indicating that the test is complete. 202930f3bb09SZhen Lei 2030d1b069f5SRandy Dunlapconfig KALLSYMS_ALL 2031d1b069f5SRandy Dunlap bool "Include all symbols in kallsyms" 2032d1b069f5SRandy Dunlap depends on DEBUG_KERNEL && KALLSYMS 2033d1b069f5SRandy Dunlap help 2034d1b069f5SRandy Dunlap Normally kallsyms only contains the symbols of functions for nicer 2035d1b069f5SRandy Dunlap OOPS messages and backtraces (i.e., symbols from the text and inittext 2036bdf0fe33SBaruch Siach sections). This is sufficient for most cases. And only if you want to 2037bdf0fe33SBaruch Siach enable kernel live patching, or other less common use cases (e.g., 2038bdf0fe33SBaruch Siach when a debugger is used) all symbols are required (i.e., names of 2039bdf0fe33SBaruch Siach variables from the data sections, etc). 2040d1b069f5SRandy Dunlap 2041d1b069f5SRandy Dunlap This option makes sure that all symbols are loaded into the kernel 2042d1b069f5SRandy Dunlap image (i.e., symbols from all sections) in cost of increased kernel 2043d1b069f5SRandy Dunlap size (depending on the kernel configuration, it may be 300KiB or 2044d1b069f5SRandy Dunlap something like this). 2045d1b069f5SRandy Dunlap 2046bdf0fe33SBaruch Siach Say N unless you really need all symbols, or kernel live patching. 2047d1b069f5SRandy Dunlap 2048d1b069f5SRandy Dunlap# end of the "standard kernel features (expert users)" menu 2049d1b069f5SRandy Dunlap 20503ccfebedSMathieu Desnoyersconfig ARCH_HAS_MEMBARRIER_CALLBACKS 20513ccfebedSMathieu Desnoyers bool 20523ccfebedSMathieu Desnoyers 205370216e18SMathieu Desnoyersconfig ARCH_HAS_MEMBARRIER_SYNC_CORE 205470216e18SMathieu Desnoyers bool 205570216e18SMathieu Desnoyers 20565796d396SJeff Xuconfig ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS 20575796d396SJeff Xu bool 20585796d396SJeff Xu help 20595796d396SJeff Xu Control MSEAL_SYSTEM_MAPPINGS access based on architecture. 20605796d396SJeff Xu 20615796d396SJeff Xu A 64-bit kernel is required for the memory sealing feature. 20625796d396SJeff Xu No specific hardware features from the CPU are needed. 20635796d396SJeff Xu 20645796d396SJeff Xu To enable this feature, the architecture needs to update their 20655796d396SJeff Xu special mappings calls to include the sealing flag and confirm 20665796d396SJeff Xu that it doesn't unmap/remap system mappings during the life 20675796d396SJeff Xu time of the process. The existence of this flag for an architecture 20685796d396SJeff Xu implies that it does not require the remapping of the system 20695796d396SJeff Xu mappings during process lifetime, so sealing these mappings is safe 20705796d396SJeff Xu from a kernel perspective. 20715796d396SJeff Xu 20725796d396SJeff Xu After the architecture enables this, a distribution can set 20735796d396SJeff Xu CONFIG_MSEAL_SYSTEM_MAPPING to manage access to the feature. 20745796d396SJeff Xu 20755796d396SJeff Xu For complete descriptions of memory sealing, please see 20765796d396SJeff Xu Documentation/userspace-api/mseal.rst 20775796d396SJeff Xu 2078cdd6c482SIngo Molnarconfig HAVE_PERF_EVENTS 20790793a61dSThomas Gleixner bool 2080018df72dSMike Frysinger help 2081018df72dSMike Frysinger See tools/perf/design.txt for details. 20820793a61dSThomas Gleixner 20832aef6f30SSean Christophersonconfig GUEST_PERF_EVENTS 20842aef6f30SSean Christopherson bool 20852aef6f30SSean Christopherson depends on HAVE_PERF_EVENTS 20862aef6f30SSean Christopherson 2087eff95e17SKan Liangconfig PERF_GUEST_MEDIATED_PMU 2088eff95e17SKan Liang bool 2089eff95e17SKan Liang depends on GUEST_PERF_EVENTS 2090eff95e17SKan Liang 2091906010b2SPeter Zijlstraconfig PERF_USE_VMALLOC 2092906010b2SPeter Zijlstra bool 2093906010b2SPeter Zijlstra help 2094906010b2SPeter Zijlstra See tools/perf/design.txt for details 2095906010b2SPeter Zijlstra 209657c0c15bSIngo Molnarmenu "Kernel Performance Events And Counters" 20970793a61dSThomas Gleixner 2098cdd6c482SIngo Molnarconfig PERF_EVENTS 209957c0c15bSIngo Molnar bool "Kernel performance events and counters" 2100392d65a9SRobert Richter default y if PROFILING 2101cdd6c482SIngo Molnar depends on HAVE_PERF_EVENTS 2102e360adbeSPeter Zijlstra select IRQ_WORK 21030793a61dSThomas Gleixner help 210457c0c15bSIngo Molnar Enable kernel support for various performance events provided 210557c0c15bSIngo Molnar by software and hardware. 21060793a61dSThomas Gleixner 2107dd77038dSThadeu Lima de Souza Cascardo Software events are supported either built-in or via the 210857c0c15bSIngo Molnar use of generic tracepoints. 210957c0c15bSIngo Molnar 211057c0c15bSIngo Molnar Most modern CPUs support performance events via performance 211157c0c15bSIngo Molnar counter registers. These registers count the number of certain 21120793a61dSThomas Gleixner types of hw events: such as instructions executed, cachemisses 21130793a61dSThomas Gleixner suffered, or branches mis-predicted - without slowing down the 21140793a61dSThomas Gleixner kernel or applications. These registers can also trigger interrupts 21150793a61dSThomas Gleixner when a threshold number of events have passed - and can thus be 21160793a61dSThomas Gleixner used to profile the code that runs on that CPU. 21170793a61dSThomas Gleixner 211857c0c15bSIngo Molnar The Linux Performance Event subsystem provides an abstraction of 2119dd77038dSThadeu Lima de Souza Cascardo these software and hardware event capabilities, available via a 212057c0c15bSIngo Molnar system call and used by the "perf" utility in tools/perf/. It 21210793a61dSThomas Gleixner provides per task and per CPU counters, and it provides event 21220793a61dSThomas Gleixner capabilities on top of those. 21230793a61dSThomas Gleixner 21240793a61dSThomas Gleixner Say Y if unsure. 21250793a61dSThomas Gleixner 2126906010b2SPeter Zijlstraconfig DEBUG_PERF_USE_VMALLOC 2127906010b2SPeter Zijlstra default n 2128906010b2SPeter Zijlstra bool "Debug: use vmalloc to back perf mmap() buffers" 2129cb307113SMichael Ellerman depends on PERF_EVENTS && DEBUG_KERNEL && !PPC 2130906010b2SPeter Zijlstra select PERF_USE_VMALLOC 2131906010b2SPeter Zijlstra help 2132906010b2SPeter Zijlstra Use vmalloc memory to back perf mmap() buffers. 2133906010b2SPeter Zijlstra 2134906010b2SPeter Zijlstra Mostly useful for debugging the vmalloc code on platforms 2135906010b2SPeter Zijlstra that don't require it. 2136906010b2SPeter Zijlstra 2137906010b2SPeter Zijlstra Say N if unsure. 2138906010b2SPeter Zijlstra 21390793a61dSThomas Gleixnerendmenu 21400793a61dSThomas Gleixner 2141091f6e26SDavid Howellsconfig SYSTEM_DATA_VERIFICATION 2142091f6e26SDavid Howells def_bool n 2143091f6e26SDavid Howells select SYSTEM_TRUSTED_KEYRING 2144091f6e26SDavid Howells select KEYS 2145091f6e26SDavid Howells select CRYPTO 2146d43de6c7SDavid Howells select CRYPTO_RSA 2147091f6e26SDavid Howells select ASYMMETRIC_KEY_TYPE 2148091f6e26SDavid Howells select ASYMMETRIC_PUBLIC_KEY_SUBTYPE 2149091f6e26SDavid Howells select ASN1 2150091f6e26SDavid Howells select OID_REGISTRY 2151091f6e26SDavid Howells select X509_CERTIFICATE_PARSER 2152091f6e26SDavid Howells select PKCS7_MESSAGE_PARSER 215382c04ff8SPeter Foley help 2154091f6e26SDavid Howells Provide PKCS#7 message verification using the contents of the system 2155091f6e26SDavid Howells trusted keyring to provide public keys. This then can be used for 2156091f6e26SDavid Howells module verification, kexec image verification and firmware blob 2157091f6e26SDavid Howells verification. 215882c04ff8SPeter Foley 2159125e5645SMathieu Desnoyersconfig PROFILING 2160b309a294SRobert Richter bool "Profiling support" 2161125e5645SMathieu Desnoyers help 2162125e5645SMathieu Desnoyers Say Y here to enable the extended profiling support mechanisms used 2163f8408264SViresh Kumar by profilers. 2164125e5645SMathieu Desnoyers 21652f7ab126SMiguel Ojedaconfig RUST 21662f7ab126SMiguel Ojeda bool "Rust support" 21672f7ab126SMiguel Ojeda depends on HAVE_RUST 21682f7ab126SMiguel Ojeda depends on RUST_IS_AVAILABLE 2169ac61506bSSami Tolvanen select EXTENDED_MODVERSIONS if MODVERSIONS 2170ac61506bSSami Tolvanen depends on !MODVERSIONS || GENDWARFKSYMS 2171f1385dc6SNeal Gompa depends on !GCC_PLUGIN_RANDSTRUCT 21722f7ab126SMiguel Ojeda depends on !RANDSTRUCT 21735daa0c35SMatthew Maurer depends on !DEBUG_INFO_BTF || (PAHOLE_HAS_LANG_EXCLUDE && !LTO) 217423ef9d43SKees Cook depends on !CFI || HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC 217523ef9d43SKees Cook select CFI_ICALL_NORMALIZE_INTEGERS if CFI 2176af6017b6SMiguel Ojeda depends on !CALL_PADDING || RUSTC_VERSION >= 108100 2177f64e2f3aSMatthew Maurer depends on !KASAN_SW_TAGS 217893e34a0bSAlice Ryhl depends on !(MITIGATION_RETHUNK && KASAN) || RUSTC_VERSION >= 108300 21792f7ab126SMiguel Ojeda help 21802f7ab126SMiguel Ojeda Enables Rust support in the kernel. 21812f7ab126SMiguel Ojeda 21822f7ab126SMiguel Ojeda This allows other Rust-related options, like drivers written in Rust, 21832f7ab126SMiguel Ojeda to be selected. 21842f7ab126SMiguel Ojeda 21852f7ab126SMiguel Ojeda It is also required to be able to load external kernel modules 21862f7ab126SMiguel Ojeda written in Rust. 21872f7ab126SMiguel Ojeda 21882f7ab126SMiguel Ojeda See Documentation/rust/ for more information. 21892f7ab126SMiguel Ojeda 21902f7ab126SMiguel Ojeda If unsure, say N. 21912f7ab126SMiguel Ojeda 21922f7ab126SMiguel Ojedaconfig RUSTC_VERSION_TEXT 21932f7ab126SMiguel Ojeda string 21942f7ab126SMiguel Ojeda depends on RUST 21955134a335SMiguel Ojeda default "$(RUSTC_VERSION_TEXT)" 21965134a335SMiguel Ojeda help 21975134a335SMiguel Ojeda See `CC_VERSION_TEXT`. 21982f7ab126SMiguel Ojeda 21992f7ab126SMiguel Ojedaconfig BINDGEN_VERSION_TEXT 22002f7ab126SMiguel Ojeda string 22012f7ab126SMiguel Ojeda depends on RUST 22029e98db17SMiguel Ojeda # The dummy parameter `workaround-for-0.69.0` is required to support 0.69.0 2203c23d1f7eSMiguel Ojeda # (https://github.com/rust-lang/rust-bindgen/pull/2678) and 0.71.0 2204c23d1f7eSMiguel Ojeda # (https://github.com/rust-lang/rust-bindgen/pull/3040). It can be removed 2205c23d1f7eSMiguel Ojeda # when the minimum version is upgraded past the latter (0.69.1 and 0.71.1 2206c23d1f7eSMiguel Ojeda # both fixed the issue). 2207aacf93e8SMasahiro Yamada default "$(shell,$(BINDGEN) --version workaround-for-0.69.0 2>/dev/null)" 22082f7ab126SMiguel Ojeda 22095f87f112SIngo Molnar# 22105f87f112SIngo Molnar# Place an empty function call at each tracepoint site. Can be 22115f87f112SIngo Molnar# dynamically changed for a probe function. 22125f87f112SIngo Molnar# 221397e1c18eSMathieu Desnoyersconfig TRACEPOINTS 22145f87f112SIngo Molnar bool 2215a363d27cSMathieu Desnoyers select TASKS_TRACE_RCU 221697e1c18eSMathieu Desnoyers 221789cde455SEric DeVoldersource "kernel/Kconfig.kexec" 221889cde455SEric DeVolder 221948a1b232SPasha Tatashinsource "kernel/liveupdate/Kconfig" 222048a1b232SPasha Tatashin 22211da177e4SLinus Torvaldsendmenu # General setup 22221da177e4SLinus Torvalds 22231572497cSChristoph Hellwigsource "arch/Kconfig" 22241572497cSChristoph Hellwig 2225ae81f9e3SChuck Ebbertconfig RT_MUTEXES 22266341e62bSChristoph Jaeger bool 22271c6f9ec0SSebastian Andrzej Siewior default y if PREEMPT_RT 2228ae81f9e3SChuck Ebbert 2229c8424e77SThiago Jung Bauermannconfig MODULE_SIG_FORMAT 2230c8424e77SThiago Jung Bauermann def_bool n 2231c8424e77SThiago Jung Bauermann select SYSTEM_DATA_VERIFICATION 2232c8424e77SThiago Jung Bauermann 223373b4fc92SChristophe Leroysource "kernel/module/Kconfig" 22346c9692e2SPeter Zijlstra 223598a79d6aSRusty Russellconfig INIT_ALL_POSSIBLE 223698a79d6aSRusty Russell bool 223798a79d6aSRusty Russell help 22385f054e31SRusty Russell Back when each arch used to define their own cpu_online_mask and 22395f054e31SRusty Russell cpu_possible_mask, some of them chose to initialize cpu_possible_mask 224098a79d6aSRusty Russell with all 1s, and others with all 0s. When they were centralised, 224198a79d6aSRusty Russell it was better to provide this option than to break all the archs 2242692105b8SMatt LaPlante and have several arch maintainers pursuing me down dark alleys. 224398a79d6aSRusty Russell 22443a65dfe8SJens Axboesource "block/Kconfig" 2245e98c3202SAvi Kivity 2246e98c3202SAvi Kivityconfig PREEMPT_NOTIFIERS 2247e98c3202SAvi Kivity bool 2248e260be67SPaul E. McKenney 224916295becSSteffen Klassertconfig PADATA 225016295becSSteffen Klassert depends on SMP 225116295becSSteffen Klassert bool 225216295becSSteffen Klassert 22534520c6a4SDavid Howellsconfig ASN1 22544520c6a4SDavid Howells tristate 22554520c6a4SDavid Howells help 22564520c6a4SDavid Howells Build a simple ASN.1 grammar compiler that produces a bytecode output 22574520c6a4SDavid Howells that can be interpreted by the ASN.1 stream decoder and used to 22584520c6a4SDavid Howells inform it as to what tags are to be expected in a stream and what 22594520c6a4SDavid Howells functions to call on what tags. 22604520c6a4SDavid Howells 22616beb0009SThomas Gleixnersource "kernel/Kconfig.locks" 2262e61938a9SMathieu Desnoyers 22630ebeea8cSDaniel Borkmannconfig ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 22640ebeea8cSDaniel Borkmann bool 22650ebeea8cSDaniel Borkmann 22664ff4c745SAndrea Parriconfig ARCH_HAS_PREPARE_SYNC_CORE_CMD 22674ff4c745SAndrea Parri bool 22684ff4c745SAndrea Parri 2269e61938a9SMathieu Desnoyersconfig ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 2270e61938a9SMathieu Desnoyers bool 22711bd21c6cSDominik Brodowski 22721bd21c6cSDominik Brodowski# It may be useful for an architecture to override the definitions of the 22737303e30eSDominik Brodowski# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h> 22747303e30eSDominik Brodowski# and the COMPAT_ variants in <linux/compat.h>, in particular to use a 22757303e30eSDominik Brodowski# different calling convention for syscalls. They can also override the 22767303e30eSDominik Brodowski# macros for not-implemented syscalls in kernel/sys_ni.c and 22777303e30eSDominik Brodowski# kernel/time/posix-stubs.c. All these overrides need to be available in 22787303e30eSDominik Brodowski# <asm/syscall_wrapper.h>. 22791bd21c6cSDominik Brodowskiconfig ARCH_HAS_SYSCALL_WRAPPER 22801bd21c6cSDominik Brodowski def_bool n 2281