162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ciconfig CC_VERSION_TEXT 362306a36Sopenharmony_ci string 462306a36Sopenharmony_ci default "$(CC_VERSION_TEXT)" 562306a36Sopenharmony_ci help 662306a36Sopenharmony_ci This is used in unclear ways: 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci - Re-run Kconfig when the compiler is updated 962306a36Sopenharmony_ci The 'default' property references the environment variable, 1062306a36Sopenharmony_ci CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd. 1162306a36Sopenharmony_ci When the compiler is updated, Kconfig will be invoked. 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci - Ensure full rebuild when the compiler is updated 1462306a36Sopenharmony_ci include/linux/compiler-version.h contains this option in the comment 1562306a36Sopenharmony_ci line so fixdep adds include/config/CC_VERSION_TEXT into the 1662306a36Sopenharmony_ci auto-generated dependency. When the compiler is updated, syncconfig 1762306a36Sopenharmony_ci will touch it and then every file will be rebuilt. 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ciconfig CC_IS_GCC 2062306a36Sopenharmony_ci def_bool $(success,test "$(cc-name)" = GCC) 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ciconfig GCC_VERSION 2362306a36Sopenharmony_ci int 2462306a36Sopenharmony_ci default $(cc-version) if CC_IS_GCC 2562306a36Sopenharmony_ci default 0 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ciconfig CC_IS_CLANG 2862306a36Sopenharmony_ci def_bool $(success,test "$(cc-name)" = Clang) 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciconfig CLANG_VERSION 3162306a36Sopenharmony_ci int 3262306a36Sopenharmony_ci default $(cc-version) if CC_IS_CLANG 3362306a36Sopenharmony_ci default 0 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciconfig AS_IS_GNU 3662306a36Sopenharmony_ci def_bool $(success,test "$(as-name)" = GNU) 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ciconfig AS_IS_LLVM 3962306a36Sopenharmony_ci def_bool $(success,test "$(as-name)" = LLVM) 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ciconfig AS_VERSION 4262306a36Sopenharmony_ci int 4362306a36Sopenharmony_ci # Use clang version if this is the integrated assembler 4462306a36Sopenharmony_ci default CLANG_VERSION if AS_IS_LLVM 4562306a36Sopenharmony_ci default $(as-version) 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciconfig LD_IS_BFD 4862306a36Sopenharmony_ci def_bool $(success,test "$(ld-name)" = BFD) 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ciconfig LD_VERSION 5162306a36Sopenharmony_ci int 5262306a36Sopenharmony_ci default $(ld-version) if LD_IS_BFD 5362306a36Sopenharmony_ci default 0 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciconfig LD_IS_LLD 5662306a36Sopenharmony_ci def_bool $(success,test "$(ld-name)" = LLD) 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ciconfig LLD_VERSION 5962306a36Sopenharmony_ci int 6062306a36Sopenharmony_ci default $(ld-version) if LD_IS_LLD 6162306a36Sopenharmony_ci default 0 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ciconfig RUST_IS_AVAILABLE 6462306a36Sopenharmony_ci def_bool $(success,$(srctree)/scripts/rust_is_available.sh) 6562306a36Sopenharmony_ci help 6662306a36Sopenharmony_ci This shows whether a suitable Rust toolchain is available (found). 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci Please see Documentation/rust/quick-start.rst for instructions on how 6962306a36Sopenharmony_ci to satisfy the build requirements of Rust support. 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci In particular, the Makefile target 'rustavailable' is useful to check 7262306a36Sopenharmony_ci why the Rust toolchain is not being detected. 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ciconfig CC_CAN_LINK 7562306a36Sopenharmony_ci bool 7662306a36Sopenharmony_ci default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag)) if 64BIT 7762306a36Sopenharmony_ci default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag)) 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ciconfig CC_CAN_LINK_STATIC 8062306a36Sopenharmony_ci bool 8162306a36Sopenharmony_ci default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag) -static) if 64BIT 8262306a36Sopenharmony_ci default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag) -static) 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ciconfig CC_HAS_ASM_GOTO_OUTPUT 8562306a36Sopenharmony_ci def_bool $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null) 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ciconfig CC_HAS_ASM_GOTO_TIED_OUTPUT 8862306a36Sopenharmony_ci depends on CC_HAS_ASM_GOTO_OUTPUT 8962306a36Sopenharmony_ci # Detect buggy gcc and clang, fixed in gcc-11 clang-14. 9062306a36Sopenharmony_ci 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) 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ciconfig GCC_ASM_GOTO_OUTPUT_WORKAROUND 9362306a36Sopenharmony_ci bool 9462306a36Sopenharmony_ci depends on CC_IS_GCC && CC_HAS_ASM_GOTO_OUTPUT 9562306a36Sopenharmony_ci # Fixed in GCC 14, 13.3, 12.4 and 11.5 9662306a36Sopenharmony_ci # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113921 9762306a36Sopenharmony_ci default y if GCC_VERSION < 110500 9862306a36Sopenharmony_ci default y if GCC_VERSION >= 120000 && GCC_VERSION < 120400 9962306a36Sopenharmony_ci default y if GCC_VERSION >= 130000 && GCC_VERSION < 130300 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ciconfig TOOLS_SUPPORT_RELR 10262306a36Sopenharmony_ci def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ciconfig CC_HAS_ASM_INLINE 10562306a36Sopenharmony_ci def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ciconfig CC_HAS_NO_PROFILE_FN_ATTR 10862306a36Sopenharmony_ci def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror) 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ciconfig PAHOLE_VERSION 11162306a36Sopenharmony_ci int 11262306a36Sopenharmony_ci default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE)) 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ciconfig CONSTRUCTORS 11562306a36Sopenharmony_ci bool 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ciconfig IRQ_WORK 11862306a36Sopenharmony_ci bool 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ciconfig BUILDTIME_TABLE_SORT 12162306a36Sopenharmony_ci bool 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ciconfig THREAD_INFO_IN_TASK 12462306a36Sopenharmony_ci bool 12562306a36Sopenharmony_ci help 12662306a36Sopenharmony_ci Select this to move thread_info off the stack into task_struct. To 12762306a36Sopenharmony_ci make this work, an arch will need to remove all thread_info fields 12862306a36Sopenharmony_ci except flags and fix any runtime bugs. 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci One subtle change that will be needed is to use try_get_task_stack() 13162306a36Sopenharmony_ci and put_task_stack() in save_thread_stack_tsk() and get_wchan(). 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_cimenu "General setup" 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ciconfig BROKEN 13662306a36Sopenharmony_ci bool 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ciconfig BROKEN_ON_SMP 13962306a36Sopenharmony_ci bool 14062306a36Sopenharmony_ci depends on BROKEN || !SMP 14162306a36Sopenharmony_ci default y 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ciconfig INIT_ENV_ARG_LIMIT 14462306a36Sopenharmony_ci int 14562306a36Sopenharmony_ci default 32 if !UML 14662306a36Sopenharmony_ci default 128 if UML 14762306a36Sopenharmony_ci help 14862306a36Sopenharmony_ci Maximum of each of the number of arguments and environment 14962306a36Sopenharmony_ci variables passed to init from the kernel command line. 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ciconfig COMPILE_TEST 15262306a36Sopenharmony_ci bool "Compile also drivers which will not load" 15362306a36Sopenharmony_ci depends on HAS_IOMEM 15462306a36Sopenharmony_ci help 15562306a36Sopenharmony_ci Some drivers can be compiled on a different platform than they are 15662306a36Sopenharmony_ci intended to be run on. Despite they cannot be loaded there (or even 15762306a36Sopenharmony_ci when they load they cannot be used due to missing HW support), 15862306a36Sopenharmony_ci developers still, opposing to distributors, might want to build such 15962306a36Sopenharmony_ci drivers to compile-test them. 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ci If you are a developer and want to build everything available, say Y 16262306a36Sopenharmony_ci here. If you are a user/distributor, say N here to exclude useless 16362306a36Sopenharmony_ci drivers to be distributed. 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ciconfig WERROR 16662306a36Sopenharmony_ci bool "Compile the kernel with warnings as errors" 16762306a36Sopenharmony_ci default COMPILE_TEST 16862306a36Sopenharmony_ci help 16962306a36Sopenharmony_ci A kernel build should not cause any compiler warnings, and this 17062306a36Sopenharmony_ci enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags 17162306a36Sopenharmony_ci to enforce that rule by default. Certain warnings from other tools 17262306a36Sopenharmony_ci such as the linker may be upgraded to errors with this option as 17362306a36Sopenharmony_ci well. 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci However, if you have a new (or very old) compiler or linker with odd 17662306a36Sopenharmony_ci and unusual warnings, or you have some architecture with problems, 17762306a36Sopenharmony_ci you may need to disable this config option in order to 17862306a36Sopenharmony_ci successfully build the kernel. 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci If in doubt, say Y. 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ciconfig UAPI_HEADER_TEST 18362306a36Sopenharmony_ci bool "Compile test UAPI headers" 18462306a36Sopenharmony_ci depends on HEADERS_INSTALL && CC_CAN_LINK 18562306a36Sopenharmony_ci help 18662306a36Sopenharmony_ci Compile test headers exported to user-space to ensure they are 18762306a36Sopenharmony_ci self-contained, i.e. compilable as standalone units. 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci If you are a developer or tester and want to ensure the exported 19062306a36Sopenharmony_ci headers are self-contained, say Y here. Otherwise, choose N. 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ciconfig LOCALVERSION 19362306a36Sopenharmony_ci string "Local version - append to kernel release" 19462306a36Sopenharmony_ci help 19562306a36Sopenharmony_ci Append an extra string to the end of your kernel version. 19662306a36Sopenharmony_ci This will show up when you type uname, for example. 19762306a36Sopenharmony_ci The string you set here will be appended after the contents of 19862306a36Sopenharmony_ci any files with a filename matching localversion* in your 19962306a36Sopenharmony_ci object and source tree, in that order. Your total string can 20062306a36Sopenharmony_ci be a maximum of 64 characters. 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ciconfig LOCALVERSION_AUTO 20362306a36Sopenharmony_ci bool "Automatically append version information to the version string" 20462306a36Sopenharmony_ci default y 20562306a36Sopenharmony_ci depends on !COMPILE_TEST 20662306a36Sopenharmony_ci help 20762306a36Sopenharmony_ci This will try to automatically determine if the current tree is a 20862306a36Sopenharmony_ci release tree by looking for git tags that belong to the current 20962306a36Sopenharmony_ci top of tree revision. 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci A string of the format -gxxxxxxxx will be added to the localversion 21262306a36Sopenharmony_ci if a git-based tree is found. The string generated by this will be 21362306a36Sopenharmony_ci appended after any matching localversion* files, and after the value 21462306a36Sopenharmony_ci set in CONFIG_LOCALVERSION. 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci (The actual string used here is the first 12 characters produced 21762306a36Sopenharmony_ci by running the command: 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ci $ git rev-parse --verify HEAD 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci which is done within the script "scripts/setlocalversion".) 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ciconfig BUILD_SALT 22462306a36Sopenharmony_ci string "Build ID Salt" 22562306a36Sopenharmony_ci default "" 22662306a36Sopenharmony_ci help 22762306a36Sopenharmony_ci The build ID is used to link binaries and their debug info. Setting 22862306a36Sopenharmony_ci this option will use the value in the calculation of the build id. 22962306a36Sopenharmony_ci This is mostly useful for distributions which want to ensure the 23062306a36Sopenharmony_ci build is unique between builds. It's safe to leave the default. 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ciconfig HAVE_KERNEL_GZIP 23362306a36Sopenharmony_ci bool 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ciconfig HAVE_KERNEL_BZIP2 23662306a36Sopenharmony_ci bool 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ciconfig HAVE_KERNEL_LZMA 23962306a36Sopenharmony_ci bool 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ciconfig HAVE_KERNEL_XZ 24262306a36Sopenharmony_ci bool 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ciconfig HAVE_KERNEL_LZO 24562306a36Sopenharmony_ci bool 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ciconfig HAVE_KERNEL_LZ4 24862306a36Sopenharmony_ci bool 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_ciconfig HAVE_KERNEL_ZSTD 25162306a36Sopenharmony_ci bool 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ciconfig HAVE_KERNEL_UNCOMPRESSED 25462306a36Sopenharmony_ci bool 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_cichoice 25762306a36Sopenharmony_ci prompt "Kernel compression mode" 25862306a36Sopenharmony_ci default KERNEL_GZIP 25962306a36Sopenharmony_ci 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 26062306a36Sopenharmony_ci help 26162306a36Sopenharmony_ci The linux kernel is a kind of self-extracting executable. 26262306a36Sopenharmony_ci Several compression algorithms are available, which differ 26362306a36Sopenharmony_ci in efficiency, compression and decompression speed. 26462306a36Sopenharmony_ci Compression speed is only relevant when building a kernel. 26562306a36Sopenharmony_ci Decompression speed is relevant at each boot. 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci If you have any problems with bzip2 or lzma compressed 26862306a36Sopenharmony_ci kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 26962306a36Sopenharmony_ci version of this functionality (bzip2 only), for 2.4, was 27062306a36Sopenharmony_ci supplied by Christian Ludwig) 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci High compression options are mostly useful for users, who 27362306a36Sopenharmony_ci are low on disk space (embedded systems), but for whom ram 27462306a36Sopenharmony_ci size matters less. 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci If in doubt, select 'gzip' 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ciconfig KERNEL_GZIP 27962306a36Sopenharmony_ci bool "Gzip" 28062306a36Sopenharmony_ci depends on HAVE_KERNEL_GZIP 28162306a36Sopenharmony_ci help 28262306a36Sopenharmony_ci The old and tried gzip compression. It provides a good balance 28362306a36Sopenharmony_ci between compression ratio and decompression speed. 28462306a36Sopenharmony_ci 28562306a36Sopenharmony_ciconfig KERNEL_BZIP2 28662306a36Sopenharmony_ci bool "Bzip2" 28762306a36Sopenharmony_ci depends on HAVE_KERNEL_BZIP2 28862306a36Sopenharmony_ci help 28962306a36Sopenharmony_ci Its compression ratio and speed is intermediate. 29062306a36Sopenharmony_ci Decompression speed is slowest among the choices. The kernel 29162306a36Sopenharmony_ci size is about 10% smaller with bzip2, in comparison to gzip. 29262306a36Sopenharmony_ci Bzip2 uses a large amount of memory. For modern kernels you 29362306a36Sopenharmony_ci will need at least 8MB RAM or more for booting. 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_ciconfig KERNEL_LZMA 29662306a36Sopenharmony_ci bool "LZMA" 29762306a36Sopenharmony_ci depends on HAVE_KERNEL_LZMA 29862306a36Sopenharmony_ci help 29962306a36Sopenharmony_ci This compression algorithm's ratio is best. Decompression speed 30062306a36Sopenharmony_ci is between gzip and bzip2. Compression is slowest. 30162306a36Sopenharmony_ci The kernel size is about 33% smaller with LZMA in comparison to gzip. 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ciconfig KERNEL_XZ 30462306a36Sopenharmony_ci bool "XZ" 30562306a36Sopenharmony_ci depends on HAVE_KERNEL_XZ 30662306a36Sopenharmony_ci help 30762306a36Sopenharmony_ci XZ uses the LZMA2 algorithm and instruction set specific 30862306a36Sopenharmony_ci BCJ filters which can improve compression ratio of executable 30962306a36Sopenharmony_ci code. The size of the kernel is about 30% smaller with XZ in 31062306a36Sopenharmony_ci comparison to gzip. On architectures for which there is a BCJ 31162306a36Sopenharmony_ci filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ 31262306a36Sopenharmony_ci will create a few percent smaller kernel than plain LZMA. 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci The speed is about the same as with LZMA: The decompression 31562306a36Sopenharmony_ci speed of XZ is better than that of bzip2 but worse than gzip 31662306a36Sopenharmony_ci and LZO. Compression is slow. 31762306a36Sopenharmony_ci 31862306a36Sopenharmony_ciconfig KERNEL_LZO 31962306a36Sopenharmony_ci bool "LZO" 32062306a36Sopenharmony_ci depends on HAVE_KERNEL_LZO 32162306a36Sopenharmony_ci help 32262306a36Sopenharmony_ci Its compression ratio is the poorest among the choices. The kernel 32362306a36Sopenharmony_ci size is about 10% bigger than gzip; however its speed 32462306a36Sopenharmony_ci (both compression and decompression) is the fastest. 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ciconfig KERNEL_LZ4 32762306a36Sopenharmony_ci bool "LZ4" 32862306a36Sopenharmony_ci depends on HAVE_KERNEL_LZ4 32962306a36Sopenharmony_ci help 33062306a36Sopenharmony_ci LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. 33162306a36Sopenharmony_ci A preliminary version of LZ4 de/compression tool is available at 33262306a36Sopenharmony_ci <https://code.google.com/p/lz4/>. 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_ci Its compression ratio is worse than LZO. The size of the kernel 33562306a36Sopenharmony_ci is about 8% bigger than LZO. But the decompression speed is 33662306a36Sopenharmony_ci faster than LZO. 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ciconfig KERNEL_ZSTD 33962306a36Sopenharmony_ci bool "ZSTD" 34062306a36Sopenharmony_ci depends on HAVE_KERNEL_ZSTD 34162306a36Sopenharmony_ci help 34262306a36Sopenharmony_ci ZSTD is a compression algorithm targeting intermediate compression 34362306a36Sopenharmony_ci with fast decompression speed. It will compress better than GZIP and 34462306a36Sopenharmony_ci decompress around the same speed as LZO, but slower than LZ4. You 34562306a36Sopenharmony_ci will need at least 192 KB RAM or more for booting. The zstd command 34662306a36Sopenharmony_ci line tool is required for compression. 34762306a36Sopenharmony_ci 34862306a36Sopenharmony_ciconfig KERNEL_UNCOMPRESSED 34962306a36Sopenharmony_ci bool "None" 35062306a36Sopenharmony_ci depends on HAVE_KERNEL_UNCOMPRESSED 35162306a36Sopenharmony_ci help 35262306a36Sopenharmony_ci Produce uncompressed kernel image. This option is usually not what 35362306a36Sopenharmony_ci you want. It is useful for debugging the kernel in slow simulation 35462306a36Sopenharmony_ci environments, where decompressing and moving the kernel is awfully 35562306a36Sopenharmony_ci slow. This option allows early boot code to skip the decompressor 35662306a36Sopenharmony_ci and jump right at uncompressed kernel image. 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_ciendchoice 35962306a36Sopenharmony_ci 36062306a36Sopenharmony_ciconfig DEFAULT_INIT 36162306a36Sopenharmony_ci string "Default init path" 36262306a36Sopenharmony_ci default "" 36362306a36Sopenharmony_ci help 36462306a36Sopenharmony_ci This option determines the default init for the system if no init= 36562306a36Sopenharmony_ci option is passed on the kernel command line. If the requested path is 36662306a36Sopenharmony_ci not present, we will still then move on to attempting further 36762306a36Sopenharmony_ci locations (e.g. /sbin/init, etc). If this is empty, we will just use 36862306a36Sopenharmony_ci the fallback list when init= is not passed. 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ciconfig DEFAULT_HOSTNAME 37162306a36Sopenharmony_ci string "Default hostname" 37262306a36Sopenharmony_ci default "(none)" 37362306a36Sopenharmony_ci help 37462306a36Sopenharmony_ci This option determines the default system hostname before userspace 37562306a36Sopenharmony_ci calls sethostname(2). The kernel traditionally uses "(none)" here, 37662306a36Sopenharmony_ci but you may wish to use a different default here to make a minimal 37762306a36Sopenharmony_ci system more usable with less configuration. 37862306a36Sopenharmony_ci 37962306a36Sopenharmony_ciconfig SYSVIPC 38062306a36Sopenharmony_ci bool "System V IPC" 38162306a36Sopenharmony_ci help 38262306a36Sopenharmony_ci Inter Process Communication is a suite of library functions and 38362306a36Sopenharmony_ci system calls which let processes (running programs) synchronize and 38462306a36Sopenharmony_ci exchange information. It is generally considered to be a good thing, 38562306a36Sopenharmony_ci and some programs won't run unless you say Y here. In particular, if 38662306a36Sopenharmony_ci you want to run the DOS emulator dosemu under Linux (read the 38762306a36Sopenharmony_ci DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 38862306a36Sopenharmony_ci you'll need to say Y here. 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ci You can find documentation about IPC with "info ipc" and also in 39162306a36Sopenharmony_ci section 6.4 of the Linux Programmer's Guide, available from 39262306a36Sopenharmony_ci <http://www.tldp.org/guides.html>. 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_ciconfig SYSVIPC_SYSCTL 39562306a36Sopenharmony_ci bool 39662306a36Sopenharmony_ci depends on SYSVIPC 39762306a36Sopenharmony_ci depends on SYSCTL 39862306a36Sopenharmony_ci default y 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ciconfig SYSVIPC_COMPAT 40162306a36Sopenharmony_ci def_bool y 40262306a36Sopenharmony_ci depends on COMPAT && SYSVIPC 40362306a36Sopenharmony_ci 40462306a36Sopenharmony_ciconfig POSIX_MQUEUE 40562306a36Sopenharmony_ci bool "POSIX Message Queues" 40662306a36Sopenharmony_ci depends on NET 40762306a36Sopenharmony_ci help 40862306a36Sopenharmony_ci POSIX variant of message queues is a part of IPC. In POSIX message 40962306a36Sopenharmony_ci queues every message has a priority which decides about succession 41062306a36Sopenharmony_ci of receiving it by a process. If you want to compile and run 41162306a36Sopenharmony_ci programs written e.g. for Solaris with use of its POSIX message 41262306a36Sopenharmony_ci queues (functions mq_*) say Y here. 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ci POSIX message queues are visible as a filesystem called 'mqueue' 41562306a36Sopenharmony_ci and can be mounted somewhere if you want to do filesystem 41662306a36Sopenharmony_ci operations on message queues. 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_ci If unsure, say Y. 41962306a36Sopenharmony_ci 42062306a36Sopenharmony_ciconfig POSIX_MQUEUE_SYSCTL 42162306a36Sopenharmony_ci bool 42262306a36Sopenharmony_ci depends on POSIX_MQUEUE 42362306a36Sopenharmony_ci depends on SYSCTL 42462306a36Sopenharmony_ci default y 42562306a36Sopenharmony_ci 42662306a36Sopenharmony_ciconfig WATCH_QUEUE 42762306a36Sopenharmony_ci bool "General notification queue" 42862306a36Sopenharmony_ci default n 42962306a36Sopenharmony_ci help 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ci This is a general notification queue for the kernel to pass events to 43262306a36Sopenharmony_ci userspace by splicing them into pipes. It can be used in conjunction 43362306a36Sopenharmony_ci with watches for key/keyring change notifications and device 43462306a36Sopenharmony_ci notifications. 43562306a36Sopenharmony_ci 43662306a36Sopenharmony_ci See Documentation/core-api/watch_queue.rst 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_ciconfig CROSS_MEMORY_ATTACH 43962306a36Sopenharmony_ci bool "Enable process_vm_readv/writev syscalls" 44062306a36Sopenharmony_ci depends on MMU 44162306a36Sopenharmony_ci default y 44262306a36Sopenharmony_ci help 44362306a36Sopenharmony_ci Enabling this option adds the system calls process_vm_readv and 44462306a36Sopenharmony_ci process_vm_writev which allow a process with the correct privileges 44562306a36Sopenharmony_ci to directly read from or write to another process' address space. 44662306a36Sopenharmony_ci See the man page for more details. 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_ciconfig USELIB 44962306a36Sopenharmony_ci bool "uselib syscall (for libc5 and earlier)" 45062306a36Sopenharmony_ci default ALPHA || M68K || SPARC 45162306a36Sopenharmony_ci help 45262306a36Sopenharmony_ci This option enables the uselib syscall, a system call used in the 45362306a36Sopenharmony_ci dynamic linker from libc5 and earlier. glibc does not use this 45462306a36Sopenharmony_ci system call. If you intend to run programs built on libc5 or 45562306a36Sopenharmony_ci earlier, you may need to enable this syscall. Current systems 45662306a36Sopenharmony_ci running glibc can safely disable this. 45762306a36Sopenharmony_ci 45862306a36Sopenharmony_ciconfig AUDIT 45962306a36Sopenharmony_ci bool "Auditing support" 46062306a36Sopenharmony_ci depends on NET 46162306a36Sopenharmony_ci help 46262306a36Sopenharmony_ci Enable auditing infrastructure that can be used with another 46362306a36Sopenharmony_ci kernel subsystem, such as SELinux (which requires this for 46462306a36Sopenharmony_ci logging of avc messages output). System call auditing is included 46562306a36Sopenharmony_ci on architectures which support it. 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_ciconfig HAVE_ARCH_AUDITSYSCALL 46862306a36Sopenharmony_ci bool 46962306a36Sopenharmony_ci 47062306a36Sopenharmony_ciconfig AUDITSYSCALL 47162306a36Sopenharmony_ci def_bool y 47262306a36Sopenharmony_ci depends on AUDIT && HAVE_ARCH_AUDITSYSCALL 47362306a36Sopenharmony_ci select FSNOTIFY 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_cisource "kernel/irq/Kconfig" 47662306a36Sopenharmony_cisource "kernel/time/Kconfig" 47762306a36Sopenharmony_cisource "kernel/bpf/Kconfig" 47862306a36Sopenharmony_cisource "kernel/Kconfig.preempt" 47962306a36Sopenharmony_cisource "kernel/sched/rtg/Kconfig" 48062306a36Sopenharmony_ci 48162306a36Sopenharmony_cimenu "CPU/Task time and stats accounting" 48262306a36Sopenharmony_ci 48362306a36Sopenharmony_ciconfig VIRT_CPU_ACCOUNTING 48462306a36Sopenharmony_ci bool 48562306a36Sopenharmony_ci 48662306a36Sopenharmony_cichoice 48762306a36Sopenharmony_ci prompt "Cputime accounting" 48862306a36Sopenharmony_ci default TICK_CPU_ACCOUNTING 48962306a36Sopenharmony_ci 49062306a36Sopenharmony_ci# Kind of a stub config for the pure tick based cputime accounting 49162306a36Sopenharmony_ciconfig TICK_CPU_ACCOUNTING 49262306a36Sopenharmony_ci bool "Simple tick based cputime accounting" 49362306a36Sopenharmony_ci depends on !S390 && !NO_HZ_FULL 49462306a36Sopenharmony_ci help 49562306a36Sopenharmony_ci This is the basic tick based cputime accounting that maintains 49662306a36Sopenharmony_ci statistics about user, system and idle time spent on per jiffies 49762306a36Sopenharmony_ci granularity. 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_ci If unsure, say Y. 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ciconfig VIRT_CPU_ACCOUNTING_NATIVE 50262306a36Sopenharmony_ci bool "Deterministic task and CPU time accounting" 50362306a36Sopenharmony_ci depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL 50462306a36Sopenharmony_ci select VIRT_CPU_ACCOUNTING 50562306a36Sopenharmony_ci help 50662306a36Sopenharmony_ci Select this option to enable more accurate task and CPU time 50762306a36Sopenharmony_ci accounting. This is done by reading a CPU counter on each 50862306a36Sopenharmony_ci kernel entry and exit and on transitions within the kernel 50962306a36Sopenharmony_ci between system, softirq and hardirq state, so there is a 51062306a36Sopenharmony_ci small performance impact. In the case of s390 or IBM POWER > 5, 51162306a36Sopenharmony_ci this also enables accounting of stolen time on logically-partitioned 51262306a36Sopenharmony_ci systems. 51362306a36Sopenharmony_ci 51462306a36Sopenharmony_ciconfig VIRT_CPU_ACCOUNTING_GEN 51562306a36Sopenharmony_ci bool "Full dynticks CPU time accounting" 51662306a36Sopenharmony_ci depends on HAVE_CONTEXT_TRACKING_USER 51762306a36Sopenharmony_ci depends on HAVE_VIRT_CPU_ACCOUNTING_GEN 51862306a36Sopenharmony_ci depends on GENERIC_CLOCKEVENTS 51962306a36Sopenharmony_ci select VIRT_CPU_ACCOUNTING 52062306a36Sopenharmony_ci select CONTEXT_TRACKING_USER 52162306a36Sopenharmony_ci help 52262306a36Sopenharmony_ci Select this option to enable task and CPU time accounting on full 52362306a36Sopenharmony_ci dynticks systems. This accounting is implemented by watching every 52462306a36Sopenharmony_ci kernel-user boundaries using the context tracking subsystem. 52562306a36Sopenharmony_ci The accounting is thus performed at the expense of some significant 52662306a36Sopenharmony_ci overhead. 52762306a36Sopenharmony_ci 52862306a36Sopenharmony_ci For now this is only useful if you are working on the full 52962306a36Sopenharmony_ci dynticks subsystem development. 53062306a36Sopenharmony_ci 53162306a36Sopenharmony_ci If unsure, say N. 53262306a36Sopenharmony_ci 53362306a36Sopenharmony_ciendchoice 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_ciconfig IRQ_TIME_ACCOUNTING 53662306a36Sopenharmony_ci bool "Fine granularity task level IRQ time accounting" 53762306a36Sopenharmony_ci depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE 53862306a36Sopenharmony_ci help 53962306a36Sopenharmony_ci Select this option to enable fine granularity task irq time 54062306a36Sopenharmony_ci accounting. This is done by reading a timestamp on each 54162306a36Sopenharmony_ci transitions between softirq and hardirq state, so there can be a 54262306a36Sopenharmony_ci small performance impact. 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci If in doubt, say N here. 54562306a36Sopenharmony_ci 54662306a36Sopenharmony_ciconfig HAVE_SCHED_AVG_IRQ 54762306a36Sopenharmony_ci def_bool y 54862306a36Sopenharmony_ci depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING 54962306a36Sopenharmony_ci depends on SMP 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ciconfig SCHED_THERMAL_PRESSURE 55262306a36Sopenharmony_ci bool 55362306a36Sopenharmony_ci default y if ARM && ARM_CPU_TOPOLOGY 55462306a36Sopenharmony_ci default y if ARM64 55562306a36Sopenharmony_ci depends on SMP 55662306a36Sopenharmony_ci depends on CPU_FREQ_THERMAL 55762306a36Sopenharmony_ci help 55862306a36Sopenharmony_ci Select this option to enable thermal pressure accounting in the 55962306a36Sopenharmony_ci scheduler. Thermal pressure is the value conveyed to the scheduler 56062306a36Sopenharmony_ci that reflects the reduction in CPU compute capacity resulted from 56162306a36Sopenharmony_ci thermal throttling. Thermal throttling occurs when the performance of 56262306a36Sopenharmony_ci a CPU is capped due to high operating temperatures. 56362306a36Sopenharmony_ci 56462306a36Sopenharmony_ci If selected, the scheduler will be able to balance tasks accordingly, 56562306a36Sopenharmony_ci i.e. put less load on throttled CPUs than on non/less throttled ones. 56662306a36Sopenharmony_ci 56762306a36Sopenharmony_ci This requires the architecture to implement 56862306a36Sopenharmony_ci arch_update_thermal_pressure() and arch_scale_thermal_pressure(). 56962306a36Sopenharmony_ciconfig SCHED_WALT 57062306a36Sopenharmony_ci bool "Support window based load tracking" 57162306a36Sopenharmony_ci depends on SMP 57262306a36Sopenharmony_ci help 57362306a36Sopenharmony_ci This feature will allow the scheduler to maintain a tunable window 57462306a36Sopenharmony_ci based set of metrics for tasks and runqueues. These metrics can be 57562306a36Sopenharmony_ci used to guide task placement as well as task frequency requirements 57662306a36Sopenharmony_ci for cpufreq governors. 57762306a36Sopenharmony_ci 57862306a36Sopenharmony_ciconfig BSD_PROCESS_ACCT 57962306a36Sopenharmony_ci bool "BSD Process Accounting" 58062306a36Sopenharmony_ci depends on MULTIUSER 58162306a36Sopenharmony_ci help 58262306a36Sopenharmony_ci If you say Y here, a user level program will be able to instruct the 58362306a36Sopenharmony_ci kernel (via a special system call) to write process accounting 58462306a36Sopenharmony_ci information to a file: whenever a process exits, information about 58562306a36Sopenharmony_ci that process will be appended to the file by the kernel. The 58662306a36Sopenharmony_ci information includes things such as creation time, owning user, 58762306a36Sopenharmony_ci command name, memory usage, controlling terminal etc. (the complete 58862306a36Sopenharmony_ci list is in the struct acct in <file:include/linux/acct.h>). It is 58962306a36Sopenharmony_ci up to the user level program to do useful things with this 59062306a36Sopenharmony_ci information. This is generally a good idea, so say Y. 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ciconfig BSD_PROCESS_ACCT_V3 59362306a36Sopenharmony_ci bool "BSD Process Accounting version 3 file format" 59462306a36Sopenharmony_ci depends on BSD_PROCESS_ACCT 59562306a36Sopenharmony_ci default n 59662306a36Sopenharmony_ci help 59762306a36Sopenharmony_ci If you say Y here, the process accounting information is written 59862306a36Sopenharmony_ci in a new file format that also logs the process IDs of each 59962306a36Sopenharmony_ci process and its parent. Note that this file format is incompatible 60062306a36Sopenharmony_ci with previous v0/v1/v2 file formats, so you will need updated tools 60162306a36Sopenharmony_ci for processing it. A preliminary version of these tools is available 60262306a36Sopenharmony_ci at <http://www.gnu.org/software/acct/>. 60362306a36Sopenharmony_ci 60462306a36Sopenharmony_ciconfig TASKSTATS 60562306a36Sopenharmony_ci bool "Export task/process statistics through netlink" 60662306a36Sopenharmony_ci depends on NET 60762306a36Sopenharmony_ci depends on MULTIUSER 60862306a36Sopenharmony_ci default n 60962306a36Sopenharmony_ci help 61062306a36Sopenharmony_ci Export selected statistics for tasks/processes through the 61162306a36Sopenharmony_ci generic netlink interface. Unlike BSD process accounting, the 61262306a36Sopenharmony_ci statistics are available during the lifetime of tasks/processes as 61362306a36Sopenharmony_ci responses to commands. Like BSD accounting, they are sent to user 61462306a36Sopenharmony_ci space on task exit. 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_ci Say N if unsure. 61762306a36Sopenharmony_ci 61862306a36Sopenharmony_ciconfig TASK_DELAY_ACCT 61962306a36Sopenharmony_ci bool "Enable per-task delay accounting" 62062306a36Sopenharmony_ci depends on TASKSTATS 62162306a36Sopenharmony_ci select SCHED_INFO 62262306a36Sopenharmony_ci help 62362306a36Sopenharmony_ci Collect information on time spent by a task waiting for system 62462306a36Sopenharmony_ci resources like cpu, synchronous block I/O completion and swapping 62562306a36Sopenharmony_ci in pages. Such statistics can help in setting a task's priorities 62662306a36Sopenharmony_ci relative to other tasks for cpu, io, rss limits etc. 62762306a36Sopenharmony_ci 62862306a36Sopenharmony_ci Say N if unsure. 62962306a36Sopenharmony_ci 63062306a36Sopenharmony_ciconfig TASK_XACCT 63162306a36Sopenharmony_ci bool "Enable extended accounting over taskstats" 63262306a36Sopenharmony_ci depends on TASKSTATS 63362306a36Sopenharmony_ci help 63462306a36Sopenharmony_ci Collect extended task accounting data and send the data 63562306a36Sopenharmony_ci to userland for processing over the taskstats interface. 63662306a36Sopenharmony_ci 63762306a36Sopenharmony_ci Say N if unsure. 63862306a36Sopenharmony_ci 63962306a36Sopenharmony_ciconfig TASK_IO_ACCOUNTING 64062306a36Sopenharmony_ci bool "Enable per-task storage I/O accounting" 64162306a36Sopenharmony_ci depends on TASK_XACCT 64262306a36Sopenharmony_ci help 64362306a36Sopenharmony_ci Collect information on the number of bytes of storage I/O which this 64462306a36Sopenharmony_ci task has caused. 64562306a36Sopenharmony_ci 64662306a36Sopenharmony_ci Say N if unsure. 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_ciconfig PSI 64962306a36Sopenharmony_ci bool "Pressure stall information tracking" 65062306a36Sopenharmony_ci select KERNFS 65162306a36Sopenharmony_ci help 65262306a36Sopenharmony_ci Collect metrics that indicate how overcommitted the CPU, memory, 65362306a36Sopenharmony_ci and IO capacity are in the system. 65462306a36Sopenharmony_ci 65562306a36Sopenharmony_ci If you say Y here, the kernel will create /proc/pressure/ with the 65662306a36Sopenharmony_ci pressure statistics files cpu, memory, and io. These will indicate 65762306a36Sopenharmony_ci the share of walltime in which some or all tasks in the system are 65862306a36Sopenharmony_ci delayed due to contention of the respective resource. 65962306a36Sopenharmony_ci 66062306a36Sopenharmony_ci In kernels with cgroup support, cgroups (cgroup2 only) will 66162306a36Sopenharmony_ci have cpu.pressure, memory.pressure, and io.pressure files, 66262306a36Sopenharmony_ci which aggregate pressure stalls for the grouped tasks only. 66362306a36Sopenharmony_ci 66462306a36Sopenharmony_ci For more details see Documentation/accounting/psi.rst. 66562306a36Sopenharmony_ci 66662306a36Sopenharmony_ci Say N if unsure. 66762306a36Sopenharmony_ci 66862306a36Sopenharmony_ciconfig PSI_DEFAULT_DISABLED 66962306a36Sopenharmony_ci bool "Require boot parameter to enable pressure stall information tracking" 67062306a36Sopenharmony_ci default n 67162306a36Sopenharmony_ci depends on PSI 67262306a36Sopenharmony_ci help 67362306a36Sopenharmony_ci If set, pressure stall information tracking will be disabled 67462306a36Sopenharmony_ci per default but can be enabled through passing psi=1 on the 67562306a36Sopenharmony_ci kernel commandline during boot. 67662306a36Sopenharmony_ci 67762306a36Sopenharmony_ci This feature adds some code to the task wakeup and sleep 67862306a36Sopenharmony_ci paths of the scheduler. The overhead is too low to affect 67962306a36Sopenharmony_ci common scheduling-intense workloads in practice (such as 68062306a36Sopenharmony_ci webservers, memcache), but it does show up in artificial 68162306a36Sopenharmony_ci scheduler stress tests, such as hackbench. 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ci If you are paranoid and not sure what the kernel will be 68462306a36Sopenharmony_ci used for, say Y. 68562306a36Sopenharmony_ci 68662306a36Sopenharmony_ci Say N if unsure. 68762306a36Sopenharmony_ci 68862306a36Sopenharmony_ciendmenu # "CPU/Task time and stats accounting" 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ciconfig CPU_ISOLATION 69162306a36Sopenharmony_ci bool "CPU isolation" 69262306a36Sopenharmony_ci depends on SMP || COMPILE_TEST 69362306a36Sopenharmony_ci default y 69462306a36Sopenharmony_ci help 69562306a36Sopenharmony_ci Make sure that CPUs running critical tasks are not disturbed by 69662306a36Sopenharmony_ci any source of "noise" such as unbound workqueues, timers, kthreads... 69762306a36Sopenharmony_ci Unbound jobs get offloaded to housekeeping CPUs. This is driven by 69862306a36Sopenharmony_ci the "isolcpus=" boot parameter. 69962306a36Sopenharmony_ci 70062306a36Sopenharmony_ci Say Y if unsure. 70162306a36Sopenharmony_ci 70262306a36Sopenharmony_ciconfig SCHED_RUNNING_AVG 70362306a36Sopenharmony_ci bool "per-rq and per-cluster running average statistics" 70462306a36Sopenharmony_ci default n 70562306a36Sopenharmony_ci 70662306a36Sopenharmony_ciconfig CPU_ISOLATION_OPT 70762306a36Sopenharmony_ci bool "CPU isolation optimization" 70862306a36Sopenharmony_ci depends on SMP 70962306a36Sopenharmony_ci default n 71062306a36Sopenharmony_ci help 71162306a36Sopenharmony_ci This option enables cpu isolation optimization, which allows 71262306a36Sopenharmony_ci to isolate cpu dynamically. The isolated cpu will be unavailable 71362306a36Sopenharmony_ci to scheduler and load balancer, and all its non-pinned timers, 71462306a36Sopenharmony_ci IRQs and tasks will be migrated to other cpus, only pinned 71562306a36Sopenharmony_ci kthread and IRQS are still allowed to run, this achieves 71662306a36Sopenharmony_ci similar effect as hotplug but at lower latency cost. 71762306a36Sopenharmony_ci 71862306a36Sopenharmony_ciconfig SCHED_CORE_CTRL 71962306a36Sopenharmony_ci bool "Core control" 72062306a36Sopenharmony_ci depends on CPU_ISOLATION_OPT 72162306a36Sopenharmony_ci select SCHED_RUNNING_AVG 72262306a36Sopenharmony_ci default n 72362306a36Sopenharmony_ci help 72462306a36Sopenharmony_ci This option enables the core control functionality in 72562306a36Sopenharmony_ci the scheduler. Core control automatically isolate and 72662306a36Sopenharmony_ci unisolate cores based on cpu load and utilization. 72762306a36Sopenharmony_ci 72862306a36Sopenharmony_cisource "kernel/rcu/Kconfig" 72962306a36Sopenharmony_ci 73062306a36Sopenharmony_ciconfig IKCONFIG 73162306a36Sopenharmony_ci tristate "Kernel .config support" 73262306a36Sopenharmony_ci help 73362306a36Sopenharmony_ci This option enables the complete Linux kernel ".config" file 73462306a36Sopenharmony_ci contents to be saved in the kernel. It provides documentation 73562306a36Sopenharmony_ci of which kernel options are used in a running kernel or in an 73662306a36Sopenharmony_ci on-disk kernel. This information can be extracted from the kernel 73762306a36Sopenharmony_ci image file with the script scripts/extract-ikconfig and used as 73862306a36Sopenharmony_ci input to rebuild the current kernel or to build another kernel. 73962306a36Sopenharmony_ci It can also be extracted from a running kernel by reading 74062306a36Sopenharmony_ci /proc/config.gz if enabled (below). 74162306a36Sopenharmony_ci 74262306a36Sopenharmony_ciconfig IKCONFIG_PROC 74362306a36Sopenharmony_ci bool "Enable access to .config through /proc/config.gz" 74462306a36Sopenharmony_ci depends on IKCONFIG && PROC_FS 74562306a36Sopenharmony_ci help 74662306a36Sopenharmony_ci This option enables access to the kernel configuration file 74762306a36Sopenharmony_ci through /proc/config.gz. 74862306a36Sopenharmony_ci 74962306a36Sopenharmony_ciconfig IKHEADERS 75062306a36Sopenharmony_ci tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz" 75162306a36Sopenharmony_ci depends on SYSFS 75262306a36Sopenharmony_ci help 75362306a36Sopenharmony_ci This option enables access to the in-kernel headers that are generated during 75462306a36Sopenharmony_ci the build process. These can be used to build eBPF tracing programs, 75562306a36Sopenharmony_ci or similar programs. If you build the headers as a module, a module called 75662306a36Sopenharmony_ci kheaders.ko is built which can be loaded on-demand to get access to headers. 75762306a36Sopenharmony_ci 75862306a36Sopenharmony_ciconfig LOG_BUF_SHIFT 75962306a36Sopenharmony_ci int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 76062306a36Sopenharmony_ci range 12 25 76162306a36Sopenharmony_ci default 17 76262306a36Sopenharmony_ci depends on PRINTK 76362306a36Sopenharmony_ci help 76462306a36Sopenharmony_ci Select the minimal kernel log buffer size as a power of 2. 76562306a36Sopenharmony_ci The final size is affected by LOG_CPU_MAX_BUF_SHIFT config 76662306a36Sopenharmony_ci parameter, see below. Any higher size also might be forced 76762306a36Sopenharmony_ci by "log_buf_len" boot parameter. 76862306a36Sopenharmony_ci 76962306a36Sopenharmony_ci Examples: 77062306a36Sopenharmony_ci 17 => 128 KB 77162306a36Sopenharmony_ci 16 => 64 KB 77262306a36Sopenharmony_ci 15 => 32 KB 77362306a36Sopenharmony_ci 14 => 16 KB 77462306a36Sopenharmony_ci 13 => 8 KB 77562306a36Sopenharmony_ci 12 => 4 KB 77662306a36Sopenharmony_ci 77762306a36Sopenharmony_ciconfig LOG_CPU_MAX_BUF_SHIFT 77862306a36Sopenharmony_ci int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)" 77962306a36Sopenharmony_ci depends on SMP 78062306a36Sopenharmony_ci range 0 21 78162306a36Sopenharmony_ci default 12 if !BASE_SMALL 78262306a36Sopenharmony_ci default 0 if BASE_SMALL 78362306a36Sopenharmony_ci depends on PRINTK 78462306a36Sopenharmony_ci help 78562306a36Sopenharmony_ci This option allows to increase the default ring buffer size 78662306a36Sopenharmony_ci according to the number of CPUs. The value defines the contribution 78762306a36Sopenharmony_ci of each CPU as a power of 2. The used space is typically only few 78862306a36Sopenharmony_ci lines however it might be much more when problems are reported, 78962306a36Sopenharmony_ci e.g. backtraces. 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ci The increased size means that a new buffer has to be allocated and 79262306a36Sopenharmony_ci the original static one is unused. It makes sense only on systems 79362306a36Sopenharmony_ci with more CPUs. Therefore this value is used only when the sum of 79462306a36Sopenharmony_ci contributions is greater than the half of the default kernel ring 79562306a36Sopenharmony_ci buffer as defined by LOG_BUF_SHIFT. The default values are set 79662306a36Sopenharmony_ci so that more than 16 CPUs are needed to trigger the allocation. 79762306a36Sopenharmony_ci 79862306a36Sopenharmony_ci Also this option is ignored when "log_buf_len" kernel parameter is 79962306a36Sopenharmony_ci used as it forces an exact (power of two) size of the ring buffer. 80062306a36Sopenharmony_ci 80162306a36Sopenharmony_ci The number of possible CPUs is used for this computation ignoring 80262306a36Sopenharmony_ci hotplugging making the computation optimal for the worst case 80362306a36Sopenharmony_ci scenario while allowing a simple algorithm to be used from bootup. 80462306a36Sopenharmony_ci 80562306a36Sopenharmony_ci Examples shift values and their meaning: 80662306a36Sopenharmony_ci 17 => 128 KB for each CPU 80762306a36Sopenharmony_ci 16 => 64 KB for each CPU 80862306a36Sopenharmony_ci 15 => 32 KB for each CPU 80962306a36Sopenharmony_ci 14 => 16 KB for each CPU 81062306a36Sopenharmony_ci 13 => 8 KB for each CPU 81162306a36Sopenharmony_ci 12 => 4 KB for each CPU 81262306a36Sopenharmony_ci 81362306a36Sopenharmony_ciconfig PRINTK_INDEX 81462306a36Sopenharmony_ci bool "Printk indexing debugfs interface" 81562306a36Sopenharmony_ci depends on PRINTK && DEBUG_FS 81662306a36Sopenharmony_ci help 81762306a36Sopenharmony_ci Add support for indexing of all printk formats known at compile time 81862306a36Sopenharmony_ci at <debugfs>/printk/index/<module>. 81962306a36Sopenharmony_ci 82062306a36Sopenharmony_ci This can be used as part of maintaining daemons which monitor 82162306a36Sopenharmony_ci /dev/kmsg, as it permits auditing the printk formats present in a 82262306a36Sopenharmony_ci kernel, allowing detection of cases where monitored printks are 82362306a36Sopenharmony_ci changed or no longer present. 82462306a36Sopenharmony_ci 82562306a36Sopenharmony_ci There is no additional runtime cost to printk with this enabled. 82662306a36Sopenharmony_ci 82762306a36Sopenharmony_ci# 82862306a36Sopenharmony_ci# Architectures with an unreliable sched_clock() should select this: 82962306a36Sopenharmony_ci# 83062306a36Sopenharmony_ciconfig HAVE_UNSTABLE_SCHED_CLOCK 83162306a36Sopenharmony_ci bool 83262306a36Sopenharmony_ci 83362306a36Sopenharmony_ciconfig GENERIC_SCHED_CLOCK 83462306a36Sopenharmony_ci bool 83562306a36Sopenharmony_ci 83662306a36Sopenharmony_cimenu "Scheduler features" 83762306a36Sopenharmony_ci 83862306a36Sopenharmony_ciconfig UCLAMP_TASK 83962306a36Sopenharmony_ci bool "Enable utilization clamping for RT/FAIR tasks" 84062306a36Sopenharmony_ci depends on CPU_FREQ_GOV_SCHEDUTIL 84162306a36Sopenharmony_ci help 84262306a36Sopenharmony_ci This feature enables the scheduler to track the clamped utilization 84362306a36Sopenharmony_ci of each CPU based on RUNNABLE tasks scheduled on that CPU. 84462306a36Sopenharmony_ci 84562306a36Sopenharmony_ci With this option, the user can specify the min and max CPU 84662306a36Sopenharmony_ci utilization allowed for RUNNABLE tasks. The max utilization defines 84762306a36Sopenharmony_ci the maximum frequency a task should use while the min utilization 84862306a36Sopenharmony_ci defines the minimum frequency it should use. 84962306a36Sopenharmony_ci 85062306a36Sopenharmony_ci Both min and max utilization clamp values are hints to the scheduler, 85162306a36Sopenharmony_ci aiming at improving its frequency selection policy, but they do not 85262306a36Sopenharmony_ci enforce or grant any specific bandwidth for tasks. 85362306a36Sopenharmony_ci 85462306a36Sopenharmony_ci If in doubt, say N. 85562306a36Sopenharmony_ci 85662306a36Sopenharmony_ciconfig UCLAMP_BUCKETS_COUNT 85762306a36Sopenharmony_ci int "Number of supported utilization clamp buckets" 85862306a36Sopenharmony_ci range 5 20 85962306a36Sopenharmony_ci default 5 86062306a36Sopenharmony_ci depends on UCLAMP_TASK 86162306a36Sopenharmony_ci help 86262306a36Sopenharmony_ci Defines the number of clamp buckets to use. The range of each bucket 86362306a36Sopenharmony_ci will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the 86462306a36Sopenharmony_ci number of clamp buckets the finer their granularity and the higher 86562306a36Sopenharmony_ci the precision of clamping aggregation and tracking at run-time. 86662306a36Sopenharmony_ci 86762306a36Sopenharmony_ci For example, with the minimum configuration value we will have 5 86862306a36Sopenharmony_ci clamp buckets tracking 20% utilization each. A 25% boosted tasks will 86962306a36Sopenharmony_ci be refcounted in the [20..39]% bucket and will set the bucket clamp 87062306a36Sopenharmony_ci effective value to 25%. 87162306a36Sopenharmony_ci If a second 30% boosted task should be co-scheduled on the same CPU, 87262306a36Sopenharmony_ci that task will be refcounted in the same bucket of the first task and 87362306a36Sopenharmony_ci it will boost the bucket clamp effective value to 30%. 87462306a36Sopenharmony_ci The clamp effective value of a bucket is reset to its nominal value 87562306a36Sopenharmony_ci (20% in the example above) when there are no more tasks refcounted in 87662306a36Sopenharmony_ci that bucket. 87762306a36Sopenharmony_ci 87862306a36Sopenharmony_ci An additional boost/capping margin can be added to some tasks. In the 87962306a36Sopenharmony_ci example above the 25% task will be boosted to 30% until it exits the 88062306a36Sopenharmony_ci CPU. If that should be considered not acceptable on certain systems, 88162306a36Sopenharmony_ci it's always possible to reduce the margin by increasing the number of 88262306a36Sopenharmony_ci clamp buckets to trade off used memory for run-time tracking 88362306a36Sopenharmony_ci precision. 88462306a36Sopenharmony_ci 88562306a36Sopenharmony_ci If in doubt, use the default value. 88662306a36Sopenharmony_ci 88762306a36Sopenharmony_ciconfig SCHED_LATENCY_NICE 88862306a36Sopenharmony_ci bool "Enable latency feature for FAIR tasks" 88962306a36Sopenharmony_ci default n 89062306a36Sopenharmony_ci help 89162306a36Sopenharmony_ci This feature use latency nice priority to decide if a cfs task can 89262306a36Sopenharmony_ci preempt the current running task. 89362306a36Sopenharmony_ci 89462306a36Sopenharmony_ci 89562306a36Sopenharmony_ciconfig SCHED_EAS 89662306a36Sopenharmony_ci bool "EAS scheduler optimization" 89762306a36Sopenharmony_ci default n 89862306a36Sopenharmony_ci help 89962306a36Sopenharmony_ci Check and migrate the CFS process to a more suitable CPU in the tick. 90062306a36Sopenharmony_ci 90162306a36Sopenharmony_ciconfig SCHED_RT_CAS 90262306a36Sopenharmony_ci bool "rt-cas optimization" 90362306a36Sopenharmony_ci depends on SCHED_EAS 90462306a36Sopenharmony_ci default n 90562306a36Sopenharmony_ci help 90662306a36Sopenharmony_ci RT task detects capacity during CPU selection 90762306a36Sopenharmony_ci 90862306a36Sopenharmony_ciconfig SCHED_RT_ACTIVE_LB 90962306a36Sopenharmony_ci bool "RT Capacity Aware Misfit Task" 91062306a36Sopenharmony_ci depends on SCHED_EAS 91162306a36Sopenharmony_ci default n 91262306a36Sopenharmony_ci help 91362306a36Sopenharmony_ci Check and migrate the RT process to a more suitable CPU in the tick. 91462306a36Sopenharmony_ci 91562306a36Sopenharmony_ciendmenu 91662306a36Sopenharmony_ci 91762306a36Sopenharmony_ci# 91862306a36Sopenharmony_ci# For architectures that want to enable the support for NUMA-affine scheduler 91962306a36Sopenharmony_ci# balancing logic: 92062306a36Sopenharmony_ci# 92162306a36Sopenharmony_ciconfig ARCH_SUPPORTS_NUMA_BALANCING 92262306a36Sopenharmony_ci bool 92362306a36Sopenharmony_ci 92462306a36Sopenharmony_ci# 92562306a36Sopenharmony_ci# For architectures that prefer to flush all TLBs after a number of pages 92662306a36Sopenharmony_ci# are unmapped instead of sending one IPI per page to flush. The architecture 92762306a36Sopenharmony_ci# must provide guarantees on what happens if a clean TLB cache entry is 92862306a36Sopenharmony_ci# written after the unmap. Details are in mm/rmap.c near the check for 92962306a36Sopenharmony_ci# should_defer_flush. The architecture should also consider if the full flush 93062306a36Sopenharmony_ci# and the refill costs are offset by the savings of sending fewer IPIs. 93162306a36Sopenharmony_ciconfig ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 93262306a36Sopenharmony_ci bool 93362306a36Sopenharmony_ci 93462306a36Sopenharmony_ciconfig CC_HAS_INT128 93562306a36Sopenharmony_ci def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT 93662306a36Sopenharmony_ci 93762306a36Sopenharmony_ciconfig CC_IMPLICIT_FALLTHROUGH 93862306a36Sopenharmony_ci string 93962306a36Sopenharmony_ci default "-Wimplicit-fallthrough=5" if CC_IS_GCC && $(cc-option,-Wimplicit-fallthrough=5) 94062306a36Sopenharmony_ci default "-Wimplicit-fallthrough" if CC_IS_CLANG && $(cc-option,-Wunreachable-code-fallthrough) 94162306a36Sopenharmony_ci 94262306a36Sopenharmony_ci# Currently, disable gcc-11+ array-bounds globally. 94362306a36Sopenharmony_ci# It's still broken in gcc-13, so no upper bound yet. 94462306a36Sopenharmony_ciconfig GCC11_NO_ARRAY_BOUNDS 94562306a36Sopenharmony_ci def_bool y 94662306a36Sopenharmony_ci 94762306a36Sopenharmony_ciconfig CC_NO_ARRAY_BOUNDS 94862306a36Sopenharmony_ci bool 94962306a36Sopenharmony_ci default y if CC_IS_GCC && GCC_VERSION >= 110000 && GCC11_NO_ARRAY_BOUNDS 95062306a36Sopenharmony_ci 95162306a36Sopenharmony_ci# 95262306a36Sopenharmony_ci# For architectures that know their GCC __int128 support is sound 95362306a36Sopenharmony_ci# 95462306a36Sopenharmony_ciconfig ARCH_SUPPORTS_INT128 95562306a36Sopenharmony_ci bool 95662306a36Sopenharmony_ci 95762306a36Sopenharmony_ci# For architectures that (ab)use NUMA to represent different memory regions 95862306a36Sopenharmony_ci# all cpu-local but of different latencies, such as SuperH. 95962306a36Sopenharmony_ci# 96062306a36Sopenharmony_ciconfig ARCH_WANT_NUMA_VARIABLE_LOCALITY 96162306a36Sopenharmony_ci bool 96262306a36Sopenharmony_ci 96362306a36Sopenharmony_ciconfig NUMA_BALANCING 96462306a36Sopenharmony_ci bool "Memory placement aware NUMA scheduler" 96562306a36Sopenharmony_ci depends on ARCH_SUPPORTS_NUMA_BALANCING 96662306a36Sopenharmony_ci depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY 96762306a36Sopenharmony_ci depends on SMP && NUMA && MIGRATION && !PREEMPT_RT 96862306a36Sopenharmony_ci help 96962306a36Sopenharmony_ci This option adds support for automatic NUMA aware memory/task placement. 97062306a36Sopenharmony_ci The mechanism is quite primitive and is based on migrating memory when 97162306a36Sopenharmony_ci it has references to the node the task is running on. 97262306a36Sopenharmony_ci 97362306a36Sopenharmony_ci This system will be inactive on UMA systems. 97462306a36Sopenharmony_ci 97562306a36Sopenharmony_ciconfig NUMA_BALANCING_DEFAULT_ENABLED 97662306a36Sopenharmony_ci bool "Automatically enable NUMA aware memory/task placement" 97762306a36Sopenharmony_ci default y 97862306a36Sopenharmony_ci depends on NUMA_BALANCING 97962306a36Sopenharmony_ci help 98062306a36Sopenharmony_ci If set, automatic NUMA balancing will be enabled if running on a NUMA 98162306a36Sopenharmony_ci machine. 98262306a36Sopenharmony_ci 98362306a36Sopenharmony_cimenuconfig CGROUPS 98462306a36Sopenharmony_ci bool "Control Group support" 98562306a36Sopenharmony_ci select KERNFS 98662306a36Sopenharmony_ci help 98762306a36Sopenharmony_ci This option adds support for grouping sets of processes together, for 98862306a36Sopenharmony_ci use with process control subsystems such as Cpusets, CFS, memory 98962306a36Sopenharmony_ci controls or device isolation. 99062306a36Sopenharmony_ci See 99162306a36Sopenharmony_ci - Documentation/scheduler/sched-design-CFS.rst (CFS) 99262306a36Sopenharmony_ci - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation 99362306a36Sopenharmony_ci and resource control) 99462306a36Sopenharmony_ci 99562306a36Sopenharmony_ci Say N if unsure. 99662306a36Sopenharmony_ci 99762306a36Sopenharmony_ciif CGROUPS 99862306a36Sopenharmony_ci 99962306a36Sopenharmony_ciconfig PAGE_COUNTER 100062306a36Sopenharmony_ci bool 100162306a36Sopenharmony_ci 100262306a36Sopenharmony_ciconfig CGROUP_FAVOR_DYNMODS 100362306a36Sopenharmony_ci bool "Favor dynamic modification latency reduction by default" 100462306a36Sopenharmony_ci help 100562306a36Sopenharmony_ci This option enables the "favordynmods" mount option by default 100662306a36Sopenharmony_ci which reduces the latencies of dynamic cgroup modifications such 100762306a36Sopenharmony_ci as task migrations and controller on/offs at the cost of making 100862306a36Sopenharmony_ci hot path operations such as forks and exits more expensive. 100962306a36Sopenharmony_ci 101062306a36Sopenharmony_ci Say N if unsure. 101162306a36Sopenharmony_ci 101262306a36Sopenharmony_ciconfig MEMCG 101362306a36Sopenharmony_ci bool "Memory controller" 101462306a36Sopenharmony_ci select PAGE_COUNTER 101562306a36Sopenharmony_ci select EVENTFD 101662306a36Sopenharmony_ci help 101762306a36Sopenharmony_ci Provides control over the memory footprint of tasks in a cgroup. 101862306a36Sopenharmony_ci 101962306a36Sopenharmony_ciconfig MEMCG_KMEM 102062306a36Sopenharmony_ci bool 102162306a36Sopenharmony_ci depends on MEMCG 102262306a36Sopenharmony_ci default y 102362306a36Sopenharmony_ci 102462306a36Sopenharmony_ciconfig BLK_CGROUP 102562306a36Sopenharmony_ci bool "IO controller" 102662306a36Sopenharmony_ci depends on BLOCK 102762306a36Sopenharmony_ci default n 102862306a36Sopenharmony_ci help 102962306a36Sopenharmony_ci Generic block IO controller cgroup interface. This is the common 103062306a36Sopenharmony_ci cgroup interface which should be used by various IO controlling 103162306a36Sopenharmony_ci policies. 103262306a36Sopenharmony_ci 103362306a36Sopenharmony_ci Currently, CFQ IO scheduler uses it to recognize task groups and 103462306a36Sopenharmony_ci control disk bandwidth allocation (proportional time slice allocation) 103562306a36Sopenharmony_ci to such task groups. It is also used by bio throttling logic in 103662306a36Sopenharmony_ci block layer to implement upper limit in IO rates on a device. 103762306a36Sopenharmony_ci 103862306a36Sopenharmony_ci This option only enables generic Block IO controller infrastructure. 103962306a36Sopenharmony_ci One needs to also enable actual IO controlling logic/policy. For 104062306a36Sopenharmony_ci enabling proportional weight division of disk bandwidth in CFQ, set 104162306a36Sopenharmony_ci CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set 104262306a36Sopenharmony_ci CONFIG_BLK_DEV_THROTTLING=y. 104362306a36Sopenharmony_ci 104462306a36Sopenharmony_ci See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 104562306a36Sopenharmony_ci 104662306a36Sopenharmony_ciconfig CGROUP_WRITEBACK 104762306a36Sopenharmony_ci bool 104862306a36Sopenharmony_ci depends on MEMCG && BLK_CGROUP 104962306a36Sopenharmony_ci default y 105062306a36Sopenharmony_ci 105162306a36Sopenharmony_cimenuconfig CGROUP_SCHED 105262306a36Sopenharmony_ci bool "CPU controller" 105362306a36Sopenharmony_ci default n 105462306a36Sopenharmony_ci help 105562306a36Sopenharmony_ci This feature lets CPU scheduler recognize task groups and control CPU 105662306a36Sopenharmony_ci bandwidth allocation to such task groups. It uses cgroups to group 105762306a36Sopenharmony_ci tasks. 105862306a36Sopenharmony_ci 105962306a36Sopenharmony_ciif CGROUP_SCHED 106062306a36Sopenharmony_ciconfig FAIR_GROUP_SCHED 106162306a36Sopenharmony_ci bool "Group scheduling for SCHED_OTHER" 106262306a36Sopenharmony_ci depends on CGROUP_SCHED 106362306a36Sopenharmony_ci default CGROUP_SCHED 106462306a36Sopenharmony_ci 106562306a36Sopenharmony_ciconfig CFS_BANDWIDTH 106662306a36Sopenharmony_ci bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED" 106762306a36Sopenharmony_ci depends on FAIR_GROUP_SCHED 106862306a36Sopenharmony_ci default n 106962306a36Sopenharmony_ci help 107062306a36Sopenharmony_ci This option allows users to define CPU bandwidth rates (limits) for 107162306a36Sopenharmony_ci tasks running within the fair group scheduler. Groups with no limit 107262306a36Sopenharmony_ci set are considered to be unconstrained and will run with no 107362306a36Sopenharmony_ci restriction. 107462306a36Sopenharmony_ci See Documentation/scheduler/sched-bwc.rst for more information. 107562306a36Sopenharmony_ci 107662306a36Sopenharmony_ciconfig RT_GROUP_SCHED 107762306a36Sopenharmony_ci bool "Group scheduling for SCHED_RR/FIFO" 107862306a36Sopenharmony_ci depends on CGROUP_SCHED 107962306a36Sopenharmony_ci default n 108062306a36Sopenharmony_ci help 108162306a36Sopenharmony_ci This feature lets you explicitly allocate real CPU bandwidth 108262306a36Sopenharmony_ci to task groups. If enabled, it will also make it impossible to 108362306a36Sopenharmony_ci schedule realtime tasks for non-root users until you allocate 108462306a36Sopenharmony_ci realtime bandwidth for them. 108562306a36Sopenharmony_ci See Documentation/scheduler/sched-rt-group.rst for more information. 108662306a36Sopenharmony_ci 108762306a36Sopenharmony_ciendif #CGROUP_SCHED 108862306a36Sopenharmony_ci 108962306a36Sopenharmony_ciconfig SCHED_MM_CID 109062306a36Sopenharmony_ci def_bool y 109162306a36Sopenharmony_ci depends on SMP && RSEQ 109262306a36Sopenharmony_ci 109362306a36Sopenharmony_ciconfig UCLAMP_TASK_GROUP 109462306a36Sopenharmony_ci bool "Utilization clamping per group of tasks" 109562306a36Sopenharmony_ci depends on CGROUP_SCHED 109662306a36Sopenharmony_ci depends on UCLAMP_TASK 109762306a36Sopenharmony_ci default n 109862306a36Sopenharmony_ci help 109962306a36Sopenharmony_ci This feature enables the scheduler to track the clamped utilization 110062306a36Sopenharmony_ci of each CPU based on RUNNABLE tasks currently scheduled on that CPU. 110162306a36Sopenharmony_ci 110262306a36Sopenharmony_ci When this option is enabled, the user can specify a min and max 110362306a36Sopenharmony_ci CPU bandwidth which is allowed for each single task in a group. 110462306a36Sopenharmony_ci The max bandwidth allows to clamp the maximum frequency a task 110562306a36Sopenharmony_ci can use, while the min bandwidth allows to define a minimum 110662306a36Sopenharmony_ci frequency a task will always use. 110762306a36Sopenharmony_ci 110862306a36Sopenharmony_ci When task group based utilization clamping is enabled, an eventually 110962306a36Sopenharmony_ci specified task-specific clamp value is constrained by the cgroup 111062306a36Sopenharmony_ci specified clamp value. Both minimum and maximum task clamping cannot 111162306a36Sopenharmony_ci be bigger than the corresponding clamping defined at task group level. 111262306a36Sopenharmony_ci 111362306a36Sopenharmony_ci If in doubt, say N. 111462306a36Sopenharmony_ci 111562306a36Sopenharmony_ciconfig CGROUP_PIDS 111662306a36Sopenharmony_ci bool "PIDs controller" 111762306a36Sopenharmony_ci help 111862306a36Sopenharmony_ci Provides enforcement of process number limits in the scope of a 111962306a36Sopenharmony_ci cgroup. Any attempt to fork more processes than is allowed in the 112062306a36Sopenharmony_ci cgroup will fail. PIDs are fundamentally a global resource because it 112162306a36Sopenharmony_ci is fairly trivial to reach PID exhaustion before you reach even a 112262306a36Sopenharmony_ci conservative kmemcg limit. As a result, it is possible to grind a 112362306a36Sopenharmony_ci system to halt without being limited by other cgroup policies. The 112462306a36Sopenharmony_ci PIDs controller is designed to stop this from happening. 112562306a36Sopenharmony_ci 112662306a36Sopenharmony_ci It should be noted that organisational operations (such as attaching 112762306a36Sopenharmony_ci to a cgroup hierarchy) will *not* be blocked by the PIDs controller, 112862306a36Sopenharmony_ci since the PIDs limit only affects a process's ability to fork, not to 112962306a36Sopenharmony_ci attach to a cgroup. 113062306a36Sopenharmony_ci 113162306a36Sopenharmony_ciconfig CGROUP_RDMA 113262306a36Sopenharmony_ci bool "RDMA controller" 113362306a36Sopenharmony_ci help 113462306a36Sopenharmony_ci Provides enforcement of RDMA resources defined by IB stack. 113562306a36Sopenharmony_ci It is fairly easy for consumers to exhaust RDMA resources, which 113662306a36Sopenharmony_ci can result into resource unavailability to other consumers. 113762306a36Sopenharmony_ci RDMA controller is designed to stop this from happening. 113862306a36Sopenharmony_ci Attaching processes with active RDMA resources to the cgroup 113962306a36Sopenharmony_ci hierarchy is allowed even if can cross the hierarchy's limit. 114062306a36Sopenharmony_ci 114162306a36Sopenharmony_ciconfig CGROUP_FREEZER 114262306a36Sopenharmony_ci bool "Freezer controller" 114362306a36Sopenharmony_ci help 114462306a36Sopenharmony_ci Provides a way to freeze and unfreeze all tasks in a 114562306a36Sopenharmony_ci cgroup. 114662306a36Sopenharmony_ci 114762306a36Sopenharmony_ci This option affects the ORIGINAL cgroup interface. The cgroup2 memory 114862306a36Sopenharmony_ci controller includes important in-kernel memory consumers per default. 114962306a36Sopenharmony_ci 115062306a36Sopenharmony_ci If you're using cgroup2, say N. 115162306a36Sopenharmony_ci 115262306a36Sopenharmony_ciconfig CGROUP_HUGETLB 115362306a36Sopenharmony_ci bool "HugeTLB controller" 115462306a36Sopenharmony_ci depends on HUGETLB_PAGE 115562306a36Sopenharmony_ci select PAGE_COUNTER 115662306a36Sopenharmony_ci default n 115762306a36Sopenharmony_ci help 115862306a36Sopenharmony_ci Provides a cgroup controller for HugeTLB pages. 115962306a36Sopenharmony_ci When you enable this, you can put a per cgroup limit on HugeTLB usage. 116062306a36Sopenharmony_ci The limit is enforced during page fault. Since HugeTLB doesn't 116162306a36Sopenharmony_ci support page reclaim, enforcing the limit at page fault time implies 116262306a36Sopenharmony_ci that, the application will get SIGBUS signal if it tries to access 116362306a36Sopenharmony_ci HugeTLB pages beyond its limit. This requires the application to know 116462306a36Sopenharmony_ci beforehand how much HugeTLB pages it would require for its use. The 116562306a36Sopenharmony_ci control group is tracked in the third page lru pointer. This means 116662306a36Sopenharmony_ci that we cannot use the controller with huge page less than 3 pages. 116762306a36Sopenharmony_ci 116862306a36Sopenharmony_ciconfig CPUSETS 116962306a36Sopenharmony_ci bool "Cpuset controller" 117062306a36Sopenharmony_ci depends on SMP 117162306a36Sopenharmony_ci help 117262306a36Sopenharmony_ci This option will let you create and manage CPUSETs which 117362306a36Sopenharmony_ci allow dynamically partitioning a system into sets of CPUs and 117462306a36Sopenharmony_ci Memory Nodes and assigning tasks to run only within those sets. 117562306a36Sopenharmony_ci This is primarily useful on large SMP or NUMA systems. 117662306a36Sopenharmony_ci 117762306a36Sopenharmony_ci Say N if unsure. 117862306a36Sopenharmony_ci 117962306a36Sopenharmony_ciconfig PROC_PID_CPUSET 118062306a36Sopenharmony_ci bool "Include legacy /proc/<pid>/cpuset file" 118162306a36Sopenharmony_ci depends on CPUSETS 118262306a36Sopenharmony_ci default y 118362306a36Sopenharmony_ci 118462306a36Sopenharmony_ciconfig CGROUP_DEVICE 118562306a36Sopenharmony_ci bool "Device controller" 118662306a36Sopenharmony_ci help 118762306a36Sopenharmony_ci Provides a cgroup controller implementing whitelists for 118862306a36Sopenharmony_ci devices which a process in the cgroup can mknod or open. 118962306a36Sopenharmony_ci 119062306a36Sopenharmony_ciconfig CGROUP_CPUACCT 119162306a36Sopenharmony_ci bool "Simple CPU accounting controller" 119262306a36Sopenharmony_ci help 119362306a36Sopenharmony_ci Provides a simple controller for monitoring the 119462306a36Sopenharmony_ci total CPU consumed by the tasks in a cgroup. 119562306a36Sopenharmony_ci 119662306a36Sopenharmony_ciconfig CGROUP_PERF 119762306a36Sopenharmony_ci bool "Perf controller" 119862306a36Sopenharmony_ci depends on PERF_EVENTS 119962306a36Sopenharmony_ci help 120062306a36Sopenharmony_ci This option extends the perf per-cpu mode to restrict monitoring 120162306a36Sopenharmony_ci to threads which belong to the cgroup specified and run on the 120262306a36Sopenharmony_ci designated cpu. Or this can be used to have cgroup ID in samples 120362306a36Sopenharmony_ci so that it can monitor performance events among cgroups. 120462306a36Sopenharmony_ci 120562306a36Sopenharmony_ci Say N if unsure. 120662306a36Sopenharmony_ci 120762306a36Sopenharmony_ciconfig CGROUP_BPF 120862306a36Sopenharmony_ci bool "Support for eBPF programs attached to cgroups" 120962306a36Sopenharmony_ci depends on BPF_SYSCALL 121062306a36Sopenharmony_ci select SOCK_CGROUP_DATA 121162306a36Sopenharmony_ci help 121262306a36Sopenharmony_ci Allow attaching eBPF programs to a cgroup using the bpf(2) 121362306a36Sopenharmony_ci syscall command BPF_PROG_ATTACH. 121462306a36Sopenharmony_ci 121562306a36Sopenharmony_ci In which context these programs are accessed depends on the type 121662306a36Sopenharmony_ci of attachment. For instance, programs that are attached using 121762306a36Sopenharmony_ci BPF_CGROUP_INET_INGRESS will be executed on the ingress path of 121862306a36Sopenharmony_ci inet sockets. 121962306a36Sopenharmony_ci 122062306a36Sopenharmony_ciconfig CGROUP_MISC 122162306a36Sopenharmony_ci bool "Misc resource controller" 122262306a36Sopenharmony_ci default n 122362306a36Sopenharmony_ci help 122462306a36Sopenharmony_ci Provides a controller for miscellaneous resources on a host. 122562306a36Sopenharmony_ci 122662306a36Sopenharmony_ci Miscellaneous scalar resources are the resources on the host system 122762306a36Sopenharmony_ci which cannot be abstracted like the other cgroups. This controller 122862306a36Sopenharmony_ci tracks and limits the miscellaneous resources used by a process 122962306a36Sopenharmony_ci attached to a cgroup hierarchy. 123062306a36Sopenharmony_ci 123162306a36Sopenharmony_ci For more information, please check misc cgroup section in 123262306a36Sopenharmony_ci /Documentation/admin-guide/cgroup-v2.rst. 123362306a36Sopenharmony_ci 123462306a36Sopenharmony_ciconfig CGROUP_DEBUG 123562306a36Sopenharmony_ci bool "Debug controller" 123662306a36Sopenharmony_ci default n 123762306a36Sopenharmony_ci depends on DEBUG_KERNEL 123862306a36Sopenharmony_ci help 123962306a36Sopenharmony_ci This option enables a simple controller that exports 124062306a36Sopenharmony_ci debugging information about the cgroups framework. This 124162306a36Sopenharmony_ci controller is for control cgroup debugging only. Its 124262306a36Sopenharmony_ci interfaces are not stable. 124362306a36Sopenharmony_ci 124462306a36Sopenharmony_ci Say N. 124562306a36Sopenharmony_ci 124662306a36Sopenharmony_ciconfig SOCK_CGROUP_DATA 124762306a36Sopenharmony_ci bool 124862306a36Sopenharmony_ci default n 124962306a36Sopenharmony_ci 125062306a36Sopenharmony_ciendif # CGROUPS 125162306a36Sopenharmony_ci 125262306a36Sopenharmony_cimenuconfig NAMESPACES 125362306a36Sopenharmony_ci bool "Namespaces support" if EXPERT 125462306a36Sopenharmony_ci depends on MULTIUSER 125562306a36Sopenharmony_ci default !EXPERT 125662306a36Sopenharmony_ci help 125762306a36Sopenharmony_ci Provides the way to make tasks work with different objects using 125862306a36Sopenharmony_ci the same id. For example same IPC id may refer to different objects 125962306a36Sopenharmony_ci or same user id or pid may refer to different tasks when used in 126062306a36Sopenharmony_ci different namespaces. 126162306a36Sopenharmony_ci 126262306a36Sopenharmony_ciif NAMESPACES 126362306a36Sopenharmony_ci 126462306a36Sopenharmony_ciconfig UTS_NS 126562306a36Sopenharmony_ci bool "UTS namespace" 126662306a36Sopenharmony_ci default y 126762306a36Sopenharmony_ci help 126862306a36Sopenharmony_ci In this namespace tasks see different info provided with the 126962306a36Sopenharmony_ci uname() system call 127062306a36Sopenharmony_ci 127162306a36Sopenharmony_ciconfig TIME_NS 127262306a36Sopenharmony_ci bool "TIME namespace" 127362306a36Sopenharmony_ci depends on GENERIC_VDSO_TIME_NS 127462306a36Sopenharmony_ci default y 127562306a36Sopenharmony_ci help 127662306a36Sopenharmony_ci In this namespace boottime and monotonic clocks can be set. 127762306a36Sopenharmony_ci The time will keep going with the same pace. 127862306a36Sopenharmony_ci 127962306a36Sopenharmony_ciconfig IPC_NS 128062306a36Sopenharmony_ci bool "IPC namespace" 128162306a36Sopenharmony_ci depends on (SYSVIPC || POSIX_MQUEUE) 128262306a36Sopenharmony_ci default y 128362306a36Sopenharmony_ci help 128462306a36Sopenharmony_ci In this namespace tasks work with IPC ids which correspond to 128562306a36Sopenharmony_ci different IPC objects in different namespaces. 128662306a36Sopenharmony_ci 128762306a36Sopenharmony_ciconfig USER_NS 128862306a36Sopenharmony_ci bool "User namespace" 128962306a36Sopenharmony_ci default n 129062306a36Sopenharmony_ci help 129162306a36Sopenharmony_ci This allows containers, i.e. vservers, to use user namespaces 129262306a36Sopenharmony_ci to provide different user info for different servers. 129362306a36Sopenharmony_ci 129462306a36Sopenharmony_ci When user namespaces are enabled in the kernel it is 129562306a36Sopenharmony_ci recommended that the MEMCG option also be enabled and that 129662306a36Sopenharmony_ci user-space use the memory control groups to limit the amount 129762306a36Sopenharmony_ci of memory a memory unprivileged users can use. 129862306a36Sopenharmony_ci 129962306a36Sopenharmony_ci If unsure, say N. 130062306a36Sopenharmony_ci 130162306a36Sopenharmony_ciconfig PID_NS 130262306a36Sopenharmony_ci bool "PID Namespaces" 130362306a36Sopenharmony_ci default y 130462306a36Sopenharmony_ci help 130562306a36Sopenharmony_ci Support process id namespaces. This allows having multiple 130662306a36Sopenharmony_ci processes with the same pid as long as they are in different 130762306a36Sopenharmony_ci pid namespaces. This is a building block of containers. 130862306a36Sopenharmony_ci 130962306a36Sopenharmony_ciconfig NET_NS 131062306a36Sopenharmony_ci bool "Network namespace" 131162306a36Sopenharmony_ci depends on NET 131262306a36Sopenharmony_ci default y 131362306a36Sopenharmony_ci help 131462306a36Sopenharmony_ci Allow user space to create what appear to be multiple instances 131562306a36Sopenharmony_ci of the network stack. 131662306a36Sopenharmony_ci 131762306a36Sopenharmony_ciendif # NAMESPACES 131862306a36Sopenharmony_ci 131962306a36Sopenharmony_ciconfig CHECKPOINT_RESTORE 132062306a36Sopenharmony_ci bool "Checkpoint/restore support" 132162306a36Sopenharmony_ci depends on PROC_FS 132262306a36Sopenharmony_ci select PROC_CHILDREN 132362306a36Sopenharmony_ci select KCMP 132462306a36Sopenharmony_ci default n 132562306a36Sopenharmony_ci help 132662306a36Sopenharmony_ci Enables additional kernel features in a sake of checkpoint/restore. 132762306a36Sopenharmony_ci In particular it adds auxiliary prctl codes to setup process text, 132862306a36Sopenharmony_ci data and heap segment sizes, and a few additional /proc filesystem 132962306a36Sopenharmony_ci entries. 133062306a36Sopenharmony_ci 133162306a36Sopenharmony_ci If unsure, say N here. 133262306a36Sopenharmony_ci 133362306a36Sopenharmony_ciconfig SCHED_AUTOGROUP 133462306a36Sopenharmony_ci bool "Automatic process group scheduling" 133562306a36Sopenharmony_ci select CGROUPS 133662306a36Sopenharmony_ci select CGROUP_SCHED 133762306a36Sopenharmony_ci select FAIR_GROUP_SCHED 133862306a36Sopenharmony_ci help 133962306a36Sopenharmony_ci This option optimizes the scheduler for common desktop workloads by 134062306a36Sopenharmony_ci automatically creating and populating task groups. This separation 134162306a36Sopenharmony_ci of workloads isolates aggressive CPU burners (like build jobs) from 134262306a36Sopenharmony_ci desktop applications. Task group autogeneration is currently based 134362306a36Sopenharmony_ci upon task session. 134462306a36Sopenharmony_ci 134562306a36Sopenharmony_ciconfig RELAY 134662306a36Sopenharmony_ci bool "Kernel->user space relay support (formerly relayfs)" 134762306a36Sopenharmony_ci select IRQ_WORK 134862306a36Sopenharmony_ci help 134962306a36Sopenharmony_ci This option enables support for relay interface support in 135062306a36Sopenharmony_ci certain file systems (such as debugfs). 135162306a36Sopenharmony_ci It is designed to provide an efficient mechanism for tools and 135262306a36Sopenharmony_ci facilities to relay large amounts of data from kernel space to 135362306a36Sopenharmony_ci user space. 135462306a36Sopenharmony_ci 135562306a36Sopenharmony_ci If unsure, say N. 135662306a36Sopenharmony_ci 135762306a36Sopenharmony_ciconfig BLK_DEV_INITRD 135862306a36Sopenharmony_ci bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 135962306a36Sopenharmony_ci help 136062306a36Sopenharmony_ci The initial RAM filesystem is a ramfs which is loaded by the 136162306a36Sopenharmony_ci boot loader (loadlin or lilo) and that is mounted as root 136262306a36Sopenharmony_ci before the normal boot procedure. It is typically used to 136362306a36Sopenharmony_ci load modules needed to mount the "real" root file system, 136462306a36Sopenharmony_ci etc. See <file:Documentation/admin-guide/initrd.rst> for details. 136562306a36Sopenharmony_ci 136662306a36Sopenharmony_ci If RAM disk support (BLK_DEV_RAM) is also included, this 136762306a36Sopenharmony_ci also enables initial RAM disk (initrd) support and adds 136862306a36Sopenharmony_ci 15 Kbytes (more on some other architectures) to the kernel size. 136962306a36Sopenharmony_ci 137062306a36Sopenharmony_ci If unsure say Y. 137162306a36Sopenharmony_ci 137262306a36Sopenharmony_ciif BLK_DEV_INITRD 137362306a36Sopenharmony_ci 137462306a36Sopenharmony_cisource "usr/Kconfig" 137562306a36Sopenharmony_ci 137662306a36Sopenharmony_ciendif 137762306a36Sopenharmony_ci 137862306a36Sopenharmony_ciconfig BOOT_CONFIG 137962306a36Sopenharmony_ci bool "Boot config support" 138062306a36Sopenharmony_ci select BLK_DEV_INITRD if !BOOT_CONFIG_EMBED 138162306a36Sopenharmony_ci help 138262306a36Sopenharmony_ci Extra boot config allows system admin to pass a config file as 138362306a36Sopenharmony_ci complemental extension of kernel cmdline when booting. 138462306a36Sopenharmony_ci The boot config file must be attached at the end of initramfs 138562306a36Sopenharmony_ci with checksum, size and magic word. 138662306a36Sopenharmony_ci See <file:Documentation/admin-guide/bootconfig.rst> for details. 138762306a36Sopenharmony_ci 138862306a36Sopenharmony_ci If unsure, say Y. 138962306a36Sopenharmony_ci 139062306a36Sopenharmony_ciconfig BOOT_CONFIG_FORCE 139162306a36Sopenharmony_ci bool "Force unconditional bootconfig processing" 139262306a36Sopenharmony_ci depends on BOOT_CONFIG 139362306a36Sopenharmony_ci default y if BOOT_CONFIG_EMBED 139462306a36Sopenharmony_ci help 139562306a36Sopenharmony_ci With this Kconfig option set, BOOT_CONFIG processing is carried 139662306a36Sopenharmony_ci out even when the "bootconfig" kernel-boot parameter is omitted. 139762306a36Sopenharmony_ci In fact, with this Kconfig option set, there is no way to 139862306a36Sopenharmony_ci make the kernel ignore the BOOT_CONFIG-supplied kernel-boot 139962306a36Sopenharmony_ci parameters. 140062306a36Sopenharmony_ci 140162306a36Sopenharmony_ci If unsure, say N. 140262306a36Sopenharmony_ci 140362306a36Sopenharmony_ciconfig BOOT_CONFIG_EMBED 140462306a36Sopenharmony_ci bool "Embed bootconfig file in the kernel" 140562306a36Sopenharmony_ci depends on BOOT_CONFIG 140662306a36Sopenharmony_ci help 140762306a36Sopenharmony_ci Embed a bootconfig file given by BOOT_CONFIG_EMBED_FILE in the 140862306a36Sopenharmony_ci kernel. Usually, the bootconfig file is loaded with the initrd 140962306a36Sopenharmony_ci image. But if the system doesn't support initrd, this option will 141062306a36Sopenharmony_ci help you by embedding a bootconfig file while building the kernel. 141162306a36Sopenharmony_ci 141262306a36Sopenharmony_ci If unsure, say N. 141362306a36Sopenharmony_ci 141462306a36Sopenharmony_ciconfig BOOT_CONFIG_EMBED_FILE 141562306a36Sopenharmony_ci string "Embedded bootconfig file path" 141662306a36Sopenharmony_ci depends on BOOT_CONFIG_EMBED 141762306a36Sopenharmony_ci help 141862306a36Sopenharmony_ci Specify a bootconfig file which will be embedded to the kernel. 141962306a36Sopenharmony_ci This bootconfig will be used if there is no initrd or no other 142062306a36Sopenharmony_ci bootconfig in the initrd. 142162306a36Sopenharmony_ci 142262306a36Sopenharmony_ciconfig INITRAMFS_PRESERVE_MTIME 142362306a36Sopenharmony_ci bool "Preserve cpio archive mtimes in initramfs" 142462306a36Sopenharmony_ci default y 142562306a36Sopenharmony_ci help 142662306a36Sopenharmony_ci Each entry in an initramfs cpio archive carries an mtime value. When 142762306a36Sopenharmony_ci enabled, extracted cpio items take this mtime, with directory mtime 142862306a36Sopenharmony_ci setting deferred until after creation of any child entries. 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_ci If unsure, say Y. 143162306a36Sopenharmony_ci 143262306a36Sopenharmony_cichoice 143362306a36Sopenharmony_ci prompt "Compiler optimization level" 143462306a36Sopenharmony_ci default CC_OPTIMIZE_FOR_PERFORMANCE 143562306a36Sopenharmony_ci 143662306a36Sopenharmony_ciconfig CC_OPTIMIZE_FOR_PERFORMANCE 143762306a36Sopenharmony_ci bool "Optimize for performance (-O2)" 143862306a36Sopenharmony_ci help 143962306a36Sopenharmony_ci This is the default optimization level for the kernel, building 144062306a36Sopenharmony_ci with the "-O2" compiler flag for best performance and most 144162306a36Sopenharmony_ci helpful compile-time warnings. 144262306a36Sopenharmony_ci 144362306a36Sopenharmony_ciconfig CC_OPTIMIZE_FOR_SIZE 144462306a36Sopenharmony_ci bool "Optimize for size (-Os)" 144562306a36Sopenharmony_ci help 144662306a36Sopenharmony_ci Choosing this option will pass "-Os" to your compiler resulting 144762306a36Sopenharmony_ci in a smaller kernel. 144862306a36Sopenharmony_ci 144962306a36Sopenharmony_ciendchoice 145062306a36Sopenharmony_ci 145162306a36Sopenharmony_ciconfig HAVE_LD_DEAD_CODE_DATA_ELIMINATION 145262306a36Sopenharmony_ci bool 145362306a36Sopenharmony_ci help 145462306a36Sopenharmony_ci This requires that the arch annotates or otherwise protects 145562306a36Sopenharmony_ci its external entry points from being discarded. Linker scripts 145662306a36Sopenharmony_ci must also merge .text.*, .data.*, and .bss.* correctly into 145762306a36Sopenharmony_ci output sections. Care must be taken not to pull in unrelated 145862306a36Sopenharmony_ci sections (e.g., '.text.init'). Typically '.' in section names 145962306a36Sopenharmony_ci is used to distinguish them from label names / C identifiers. 146062306a36Sopenharmony_ci 146162306a36Sopenharmony_ciconfig LD_DEAD_CODE_DATA_ELIMINATION 146262306a36Sopenharmony_ci bool "Dead code and data elimination (EXPERIMENTAL)" 146362306a36Sopenharmony_ci depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION 146462306a36Sopenharmony_ci depends on EXPERT 146562306a36Sopenharmony_ci depends on $(cc-option,-ffunction-sections -fdata-sections) 146662306a36Sopenharmony_ci depends on $(ld-option,--gc-sections) 146762306a36Sopenharmony_ci help 146862306a36Sopenharmony_ci Enable this if you want to do dead code and data elimination with 146962306a36Sopenharmony_ci the linker by compiling with -ffunction-sections -fdata-sections, 147062306a36Sopenharmony_ci and linking with --gc-sections. 147162306a36Sopenharmony_ci 147262306a36Sopenharmony_ci This can reduce on disk and in-memory size of the kernel 147362306a36Sopenharmony_ci code and static data, particularly for small configs and 147462306a36Sopenharmony_ci on small systems. This has the possibility of introducing 147562306a36Sopenharmony_ci silently broken kernel if the required annotations are not 147662306a36Sopenharmony_ci present. This option is not well tested yet, so use at your 147762306a36Sopenharmony_ci own risk. 147862306a36Sopenharmony_ci 147962306a36Sopenharmony_ciconfig LD_ORPHAN_WARN 148062306a36Sopenharmony_ci def_bool y 148162306a36Sopenharmony_ci depends on ARCH_WANT_LD_ORPHAN_WARN 148262306a36Sopenharmony_ci depends on $(ld-option,--orphan-handling=warn) 148362306a36Sopenharmony_ci depends on $(ld-option,--orphan-handling=error) 148462306a36Sopenharmony_ci 148562306a36Sopenharmony_ciconfig LD_ORPHAN_WARN_LEVEL 148662306a36Sopenharmony_ci string 148762306a36Sopenharmony_ci depends on LD_ORPHAN_WARN 148862306a36Sopenharmony_ci default "error" if WERROR 148962306a36Sopenharmony_ci default "warn" 149062306a36Sopenharmony_ci 149162306a36Sopenharmony_ciconfig SYSCTL 149262306a36Sopenharmony_ci bool 149362306a36Sopenharmony_ci 149462306a36Sopenharmony_ciconfig HAVE_UID16 149562306a36Sopenharmony_ci bool 149662306a36Sopenharmony_ci 149762306a36Sopenharmony_ciconfig SYSCTL_EXCEPTION_TRACE 149862306a36Sopenharmony_ci bool 149962306a36Sopenharmony_ci help 150062306a36Sopenharmony_ci Enable support for /proc/sys/debug/exception-trace. 150162306a36Sopenharmony_ci 150262306a36Sopenharmony_ciconfig SYSCTL_ARCH_UNALIGN_NO_WARN 150362306a36Sopenharmony_ci bool 150462306a36Sopenharmony_ci help 150562306a36Sopenharmony_ci Enable support for /proc/sys/kernel/ignore-unaligned-usertrap 150662306a36Sopenharmony_ci Allows arch to define/use @no_unaligned_warning to possibly warn 150762306a36Sopenharmony_ci about unaligned access emulation going on under the hood. 150862306a36Sopenharmony_ci 150962306a36Sopenharmony_ciconfig SYSCTL_ARCH_UNALIGN_ALLOW 151062306a36Sopenharmony_ci bool 151162306a36Sopenharmony_ci help 151262306a36Sopenharmony_ci Enable support for /proc/sys/kernel/unaligned-trap 151362306a36Sopenharmony_ci Allows arches to define/use @unaligned_enabled to runtime toggle 151462306a36Sopenharmony_ci the unaligned access emulation. 151562306a36Sopenharmony_ci see arch/parisc/kernel/unaligned.c for reference 151662306a36Sopenharmony_ci 151762306a36Sopenharmony_ciconfig HAVE_PCSPKR_PLATFORM 151862306a36Sopenharmony_ci bool 151962306a36Sopenharmony_ci 152062306a36Sopenharmony_ci# interpreter that classic socket filters depend on 152162306a36Sopenharmony_ciconfig BPF 152262306a36Sopenharmony_ci bool 152362306a36Sopenharmony_ci select CRYPTO_LIB_SHA1 152462306a36Sopenharmony_ci 152562306a36Sopenharmony_cimenuconfig EXPERT 152662306a36Sopenharmony_ci bool "Configure standard kernel features (expert users)" 152762306a36Sopenharmony_ci # Unhide debug options, to make the on-by-default options visible 152862306a36Sopenharmony_ci select DEBUG_KERNEL 152962306a36Sopenharmony_ci help 153062306a36Sopenharmony_ci This option allows certain base kernel options and settings 153162306a36Sopenharmony_ci to be disabled or tweaked. This is for specialized 153262306a36Sopenharmony_ci environments which can tolerate a "non-standard" kernel. 153362306a36Sopenharmony_ci Only use this if you really know what you are doing. 153462306a36Sopenharmony_ci 153562306a36Sopenharmony_ciconfig UID16 153662306a36Sopenharmony_ci bool "Enable 16-bit UID system calls" if EXPERT 153762306a36Sopenharmony_ci depends on HAVE_UID16 && MULTIUSER 153862306a36Sopenharmony_ci default y 153962306a36Sopenharmony_ci help 154062306a36Sopenharmony_ci This enables the legacy 16-bit UID syscall wrappers. 154162306a36Sopenharmony_ci 154262306a36Sopenharmony_ciconfig MULTIUSER 154362306a36Sopenharmony_ci bool "Multiple users, groups and capabilities support" if EXPERT 154462306a36Sopenharmony_ci default y 154562306a36Sopenharmony_ci help 154662306a36Sopenharmony_ci This option enables support for non-root users, groups and 154762306a36Sopenharmony_ci capabilities. 154862306a36Sopenharmony_ci 154962306a36Sopenharmony_ci If you say N here, all processes will run with UID 0, GID 0, and all 155062306a36Sopenharmony_ci possible capabilities. Saying N here also compiles out support for 155162306a36Sopenharmony_ci system calls related to UIDs, GIDs, and capabilities, such as setuid, 155262306a36Sopenharmony_ci setgid, and capset. 155362306a36Sopenharmony_ci 155462306a36Sopenharmony_ci If unsure, say Y here. 155562306a36Sopenharmony_ci 155662306a36Sopenharmony_ciconfig SGETMASK_SYSCALL 155762306a36Sopenharmony_ci bool "sgetmask/ssetmask syscalls support" if EXPERT 155862306a36Sopenharmony_ci def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH 155962306a36Sopenharmony_ci help 156062306a36Sopenharmony_ci sys_sgetmask and sys_ssetmask are obsolete system calls 156162306a36Sopenharmony_ci no longer supported in libc but still enabled by default in some 156262306a36Sopenharmony_ci architectures. 156362306a36Sopenharmony_ci 156462306a36Sopenharmony_ci If unsure, leave the default option here. 156562306a36Sopenharmony_ci 156662306a36Sopenharmony_ciconfig SYSFS_SYSCALL 156762306a36Sopenharmony_ci bool "Sysfs syscall support" if EXPERT 156862306a36Sopenharmony_ci default y 156962306a36Sopenharmony_ci help 157062306a36Sopenharmony_ci sys_sysfs is an obsolete system call no longer supported in libc. 157162306a36Sopenharmony_ci Note that disabling this option is more secure but might break 157262306a36Sopenharmony_ci compatibility with some systems. 157362306a36Sopenharmony_ci 157462306a36Sopenharmony_ci If unsure say Y here. 157562306a36Sopenharmony_ci 157662306a36Sopenharmony_ciconfig FHANDLE 157762306a36Sopenharmony_ci bool "open by fhandle syscalls" if EXPERT 157862306a36Sopenharmony_ci select EXPORTFS 157962306a36Sopenharmony_ci default y 158062306a36Sopenharmony_ci help 158162306a36Sopenharmony_ci If you say Y here, a user level program will be able to map 158262306a36Sopenharmony_ci file names to handle and then later use the handle for 158362306a36Sopenharmony_ci different file system operations. This is useful in implementing 158462306a36Sopenharmony_ci userspace file servers, which now track files using handles instead 158562306a36Sopenharmony_ci of names. The handle would remain the same even if file names 158662306a36Sopenharmony_ci get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2) 158762306a36Sopenharmony_ci syscalls. 158862306a36Sopenharmony_ci 158962306a36Sopenharmony_ciconfig POSIX_TIMERS 159062306a36Sopenharmony_ci bool "Posix Clocks & timers" if EXPERT 159162306a36Sopenharmony_ci default y 159262306a36Sopenharmony_ci help 159362306a36Sopenharmony_ci This includes native support for POSIX timers to the kernel. 159462306a36Sopenharmony_ci Some embedded systems have no use for them and therefore they 159562306a36Sopenharmony_ci can be configured out to reduce the size of the kernel image. 159662306a36Sopenharmony_ci 159762306a36Sopenharmony_ci When this option is disabled, the following syscalls won't be 159862306a36Sopenharmony_ci available: timer_create, timer_gettime: timer_getoverrun, 159962306a36Sopenharmony_ci timer_settime, timer_delete, clock_adjtime, getitimer, 160062306a36Sopenharmony_ci setitimer, alarm. Furthermore, the clock_settime, clock_gettime, 160162306a36Sopenharmony_ci clock_getres and clock_nanosleep syscalls will be limited to 160262306a36Sopenharmony_ci CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only. 160362306a36Sopenharmony_ci 160462306a36Sopenharmony_ci If unsure say y. 160562306a36Sopenharmony_ci 160662306a36Sopenharmony_ciconfig PRINTK 160762306a36Sopenharmony_ci default y 160862306a36Sopenharmony_ci bool "Enable support for printk" if EXPERT 160962306a36Sopenharmony_ci select IRQ_WORK 161062306a36Sopenharmony_ci help 161162306a36Sopenharmony_ci This option enables normal printk support. Removing it 161262306a36Sopenharmony_ci eliminates most of the message strings from the kernel image 161362306a36Sopenharmony_ci and makes the kernel more or less silent. As this makes it 161462306a36Sopenharmony_ci very difficult to diagnose system problems, saying N here is 161562306a36Sopenharmony_ci strongly discouraged. 161662306a36Sopenharmony_ci 161762306a36Sopenharmony_ciconfig BUG 161862306a36Sopenharmony_ci bool "BUG() support" if EXPERT 161962306a36Sopenharmony_ci default y 162062306a36Sopenharmony_ci help 162162306a36Sopenharmony_ci Disabling this option eliminates support for BUG and WARN, reducing 162262306a36Sopenharmony_ci the size of your kernel image and potentially quietly ignoring 162362306a36Sopenharmony_ci numerous fatal conditions. You should only consider disabling this 162462306a36Sopenharmony_ci option for embedded systems with no facilities for reporting errors. 162562306a36Sopenharmony_ci Just say Y. 162662306a36Sopenharmony_ci 162762306a36Sopenharmony_ciconfig ELF_CORE 162862306a36Sopenharmony_ci depends on COREDUMP 162962306a36Sopenharmony_ci default y 163062306a36Sopenharmony_ci bool "Enable ELF core dumps" if EXPERT 163162306a36Sopenharmony_ci help 163262306a36Sopenharmony_ci Enable support for generating core dumps. Disabling saves about 4k. 163362306a36Sopenharmony_ci 163462306a36Sopenharmony_ci 163562306a36Sopenharmony_ciconfig PCSPKR_PLATFORM 163662306a36Sopenharmony_ci bool "Enable PC-Speaker support" if EXPERT 163762306a36Sopenharmony_ci depends on HAVE_PCSPKR_PLATFORM 163862306a36Sopenharmony_ci select I8253_LOCK 163962306a36Sopenharmony_ci default y 164062306a36Sopenharmony_ci help 164162306a36Sopenharmony_ci This option allows to disable the internal PC-Speaker 164262306a36Sopenharmony_ci support, saving some memory. 164362306a36Sopenharmony_ci 164462306a36Sopenharmony_ciconfig BASE_FULL 164562306a36Sopenharmony_ci default y 164662306a36Sopenharmony_ci bool "Enable full-sized data structures for core" if EXPERT 164762306a36Sopenharmony_ci help 164862306a36Sopenharmony_ci Disabling this option reduces the size of miscellaneous core 164962306a36Sopenharmony_ci kernel data structures. This saves memory on small machines, 165062306a36Sopenharmony_ci but may reduce performance. 165162306a36Sopenharmony_ci 165262306a36Sopenharmony_ciconfig FUTEX 165362306a36Sopenharmony_ci bool "Enable futex support" if EXPERT 165462306a36Sopenharmony_ci depends on !(SPARC32 && SMP) 165562306a36Sopenharmony_ci default y 165662306a36Sopenharmony_ci imply RT_MUTEXES 165762306a36Sopenharmony_ci help 165862306a36Sopenharmony_ci Disabling this option will cause the kernel to be built without 165962306a36Sopenharmony_ci support for "fast userspace mutexes". The resulting kernel may not 166062306a36Sopenharmony_ci run glibc-based applications correctly. 166162306a36Sopenharmony_ci 166262306a36Sopenharmony_ciconfig FUTEX_PI 166362306a36Sopenharmony_ci bool 166462306a36Sopenharmony_ci depends on FUTEX && RT_MUTEXES 166562306a36Sopenharmony_ci default y 166662306a36Sopenharmony_ci 166762306a36Sopenharmony_ciconfig EPOLL 166862306a36Sopenharmony_ci bool "Enable eventpoll support" if EXPERT 166962306a36Sopenharmony_ci default y 167062306a36Sopenharmony_ci help 167162306a36Sopenharmony_ci Disabling this option will cause the kernel to be built without 167262306a36Sopenharmony_ci support for epoll family of system calls. 167362306a36Sopenharmony_ci 167462306a36Sopenharmony_ciconfig SIGNALFD 167562306a36Sopenharmony_ci bool "Enable signalfd() system call" if EXPERT 167662306a36Sopenharmony_ci default y 167762306a36Sopenharmony_ci help 167862306a36Sopenharmony_ci Enable the signalfd() system call that allows to receive signals 167962306a36Sopenharmony_ci on a file descriptor. 168062306a36Sopenharmony_ci 168162306a36Sopenharmony_ci If unsure, say Y. 168262306a36Sopenharmony_ci 168362306a36Sopenharmony_ciconfig TIMERFD 168462306a36Sopenharmony_ci bool "Enable timerfd() system call" if EXPERT 168562306a36Sopenharmony_ci default y 168662306a36Sopenharmony_ci help 168762306a36Sopenharmony_ci Enable the timerfd() system call that allows to receive timer 168862306a36Sopenharmony_ci events on a file descriptor. 168962306a36Sopenharmony_ci 169062306a36Sopenharmony_ci If unsure, say Y. 169162306a36Sopenharmony_ci 169262306a36Sopenharmony_ciconfig EVENTFD 169362306a36Sopenharmony_ci bool "Enable eventfd() system call" if EXPERT 169462306a36Sopenharmony_ci default y 169562306a36Sopenharmony_ci help 169662306a36Sopenharmony_ci Enable the eventfd() system call that allows to receive both 169762306a36Sopenharmony_ci kernel notification (ie. KAIO) or userspace notifications. 169862306a36Sopenharmony_ci 169962306a36Sopenharmony_ci If unsure, say Y. 170062306a36Sopenharmony_ci 170162306a36Sopenharmony_ciconfig SHMEM 170262306a36Sopenharmony_ci bool "Use full shmem filesystem" if EXPERT 170362306a36Sopenharmony_ci default y 170462306a36Sopenharmony_ci depends on MMU 170562306a36Sopenharmony_ci help 170662306a36Sopenharmony_ci The shmem is an internal filesystem used to manage shared memory. 170762306a36Sopenharmony_ci It is backed by swap and manages resource limits. It is also exported 170862306a36Sopenharmony_ci to userspace as tmpfs if TMPFS is enabled. Disabling this 170962306a36Sopenharmony_ci option replaces shmem and tmpfs with the much simpler ramfs code, 171062306a36Sopenharmony_ci which may be appropriate on small systems without swap. 171162306a36Sopenharmony_ci 171262306a36Sopenharmony_ciconfig AIO 171362306a36Sopenharmony_ci bool "Enable AIO support" if EXPERT 171462306a36Sopenharmony_ci default y 171562306a36Sopenharmony_ci help 171662306a36Sopenharmony_ci This option enables POSIX asynchronous I/O which may by used 171762306a36Sopenharmony_ci by some high performance threaded applications. Disabling 171862306a36Sopenharmony_ci this option saves about 7k. 171962306a36Sopenharmony_ci 172062306a36Sopenharmony_ciconfig IO_URING 172162306a36Sopenharmony_ci bool "Enable IO uring support" if EXPERT 172262306a36Sopenharmony_ci select IO_WQ 172362306a36Sopenharmony_ci default y 172462306a36Sopenharmony_ci help 172562306a36Sopenharmony_ci This option enables support for the io_uring interface, enabling 172662306a36Sopenharmony_ci applications to submit and complete IO through submission and 172762306a36Sopenharmony_ci completion rings that are shared between the kernel and application. 172862306a36Sopenharmony_ci 172962306a36Sopenharmony_ciconfig ADVISE_SYSCALLS 173062306a36Sopenharmony_ci bool "Enable madvise/fadvise syscalls" if EXPERT 173162306a36Sopenharmony_ci default y 173262306a36Sopenharmony_ci help 173362306a36Sopenharmony_ci This option enables the madvise and fadvise syscalls, used by 173462306a36Sopenharmony_ci applications to advise the kernel about their future memory or file 173562306a36Sopenharmony_ci usage, improving performance. If building an embedded system where no 173662306a36Sopenharmony_ci applications use these syscalls, you can disable this option to save 173762306a36Sopenharmony_ci space. 173862306a36Sopenharmony_ci 173962306a36Sopenharmony_ciconfig MEMBARRIER 174062306a36Sopenharmony_ci bool "Enable membarrier() system call" if EXPERT 174162306a36Sopenharmony_ci default y 174262306a36Sopenharmony_ci help 174362306a36Sopenharmony_ci Enable the membarrier() system call that allows issuing memory 174462306a36Sopenharmony_ci barriers across all running threads, which can be used to distribute 174562306a36Sopenharmony_ci the cost of user-space memory barriers asymmetrically by transforming 174662306a36Sopenharmony_ci pairs of memory barriers into pairs consisting of membarrier() and a 174762306a36Sopenharmony_ci compiler barrier. 174862306a36Sopenharmony_ci 174962306a36Sopenharmony_ci If unsure, say Y. 175062306a36Sopenharmony_ci 175162306a36Sopenharmony_ciconfig KALLSYMS 175262306a36Sopenharmony_ci bool "Load all symbols for debugging/ksymoops" if EXPERT 175362306a36Sopenharmony_ci default y 175462306a36Sopenharmony_ci help 175562306a36Sopenharmony_ci Say Y here to let the kernel print out symbolic crash information and 175662306a36Sopenharmony_ci symbolic stack backtraces. This increases the size of the kernel 175762306a36Sopenharmony_ci somewhat, as all symbols have to be loaded into the kernel image. 175862306a36Sopenharmony_ci 175962306a36Sopenharmony_ciconfig KALLSYMS_SELFTEST 176062306a36Sopenharmony_ci bool "Test the basic functions and performance of kallsyms" 176162306a36Sopenharmony_ci depends on KALLSYMS 176262306a36Sopenharmony_ci default n 176362306a36Sopenharmony_ci help 176462306a36Sopenharmony_ci Test the basic functions and performance of some interfaces, such as 176562306a36Sopenharmony_ci kallsyms_lookup_name. It also calculates the compression rate of the 176662306a36Sopenharmony_ci kallsyms compression algorithm for the current symbol set. 176762306a36Sopenharmony_ci 176862306a36Sopenharmony_ci Start self-test automatically after system startup. Suggest executing 176962306a36Sopenharmony_ci "dmesg | grep kallsyms_selftest" to collect test results. "finish" is 177062306a36Sopenharmony_ci displayed in the last line, indicating that the test is complete. 177162306a36Sopenharmony_ci 177262306a36Sopenharmony_ciconfig KALLSYMS_ALL 177362306a36Sopenharmony_ci bool "Include all symbols in kallsyms" 177462306a36Sopenharmony_ci depends on DEBUG_KERNEL && KALLSYMS 177562306a36Sopenharmony_ci help 177662306a36Sopenharmony_ci Normally kallsyms only contains the symbols of functions for nicer 177762306a36Sopenharmony_ci OOPS messages and backtraces (i.e., symbols from the text and inittext 177862306a36Sopenharmony_ci sections). This is sufficient for most cases. And only if you want to 177962306a36Sopenharmony_ci enable kernel live patching, or other less common use cases (e.g., 178062306a36Sopenharmony_ci when a debugger is used) all symbols are required (i.e., names of 178162306a36Sopenharmony_ci variables from the data sections, etc). 178262306a36Sopenharmony_ci 178362306a36Sopenharmony_ci This option makes sure that all symbols are loaded into the kernel 178462306a36Sopenharmony_ci image (i.e., symbols from all sections) in cost of increased kernel 178562306a36Sopenharmony_ci size (depending on the kernel configuration, it may be 300KiB or 178662306a36Sopenharmony_ci something like this). 178762306a36Sopenharmony_ci 178862306a36Sopenharmony_ci Say N unless you really need all symbols, or kernel live patching. 178962306a36Sopenharmony_ci 179062306a36Sopenharmony_ciconfig KALLSYMS_ABSOLUTE_PERCPU 179162306a36Sopenharmony_ci bool 179262306a36Sopenharmony_ci depends on KALLSYMS 179362306a36Sopenharmony_ci default X86_64 && SMP 179462306a36Sopenharmony_ci 179562306a36Sopenharmony_ciconfig KALLSYMS_BASE_RELATIVE 179662306a36Sopenharmony_ci bool 179762306a36Sopenharmony_ci depends on KALLSYMS 179862306a36Sopenharmony_ci default !IA64 179962306a36Sopenharmony_ci help 180062306a36Sopenharmony_ci Instead of emitting them as absolute values in the native word size, 180162306a36Sopenharmony_ci emit the symbol references in the kallsyms table as 32-bit entries, 180262306a36Sopenharmony_ci each containing a relative value in the range [base, base + U32_MAX] 180362306a36Sopenharmony_ci or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either 180462306a36Sopenharmony_ci an absolute value in the range [0, S32_MAX] or a relative value in the 180562306a36Sopenharmony_ci range [base, base + S32_MAX], where base is the lowest relative symbol 180662306a36Sopenharmony_ci address encountered in the image. 180762306a36Sopenharmony_ci 180862306a36Sopenharmony_ci On 64-bit builds, this reduces the size of the address table by 50%, 180962306a36Sopenharmony_ci but more importantly, it results in entries whose values are build 181062306a36Sopenharmony_ci time constants, and no relocation pass is required at runtime to fix 181162306a36Sopenharmony_ci up the entries based on the runtime load address of the kernel. 181262306a36Sopenharmony_ci 181362306a36Sopenharmony_ci# end of the "standard kernel features (expert users)" menu 181462306a36Sopenharmony_ci 181562306a36Sopenharmony_ci# syscall, maps, verifier 181662306a36Sopenharmony_ci 181762306a36Sopenharmony_ciconfig ARCH_HAS_MEMBARRIER_CALLBACKS 181862306a36Sopenharmony_ci bool 181962306a36Sopenharmony_ci 182062306a36Sopenharmony_ciconfig ARCH_HAS_MEMBARRIER_SYNC_CORE 182162306a36Sopenharmony_ci bool 182262306a36Sopenharmony_ci 182362306a36Sopenharmony_ciconfig KCMP 182462306a36Sopenharmony_ci bool "Enable kcmp() system call" if EXPERT 182562306a36Sopenharmony_ci help 182662306a36Sopenharmony_ci Enable the kernel resource comparison system call. It provides 182762306a36Sopenharmony_ci user-space with the ability to compare two processes to see if they 182862306a36Sopenharmony_ci share a common resource, such as a file descriptor or even virtual 182962306a36Sopenharmony_ci memory space. 183062306a36Sopenharmony_ci 183162306a36Sopenharmony_ci If unsure, say N. 183262306a36Sopenharmony_ci 183362306a36Sopenharmony_ciconfig RSEQ 183462306a36Sopenharmony_ci bool "Enable rseq() system call" if EXPERT 183562306a36Sopenharmony_ci default y 183662306a36Sopenharmony_ci depends on HAVE_RSEQ 183762306a36Sopenharmony_ci select MEMBARRIER 183862306a36Sopenharmony_ci help 183962306a36Sopenharmony_ci Enable the restartable sequences system call. It provides a 184062306a36Sopenharmony_ci user-space cache for the current CPU number value, which 184162306a36Sopenharmony_ci speeds up getting the current CPU number from user-space, 184262306a36Sopenharmony_ci as well as an ABI to speed up user-space operations on 184362306a36Sopenharmony_ci per-CPU data. 184462306a36Sopenharmony_ci 184562306a36Sopenharmony_ci If unsure, say Y. 184662306a36Sopenharmony_ci 184762306a36Sopenharmony_ciconfig CACHESTAT_SYSCALL 184862306a36Sopenharmony_ci bool "Enable cachestat() system call" if EXPERT 184962306a36Sopenharmony_ci default y 185062306a36Sopenharmony_ci help 185162306a36Sopenharmony_ci Enable the cachestat system call, which queries the page cache 185262306a36Sopenharmony_ci statistics of a file (number of cached pages, dirty pages, 185362306a36Sopenharmony_ci pages marked for writeback, (recently) evicted pages). 185462306a36Sopenharmony_ci 185562306a36Sopenharmony_ci If unsure say Y here. 185662306a36Sopenharmony_ci 185762306a36Sopenharmony_ciconfig DEBUG_RSEQ 185862306a36Sopenharmony_ci default n 185962306a36Sopenharmony_ci bool "Enabled debugging of rseq() system call" if EXPERT 186062306a36Sopenharmony_ci depends on RSEQ && DEBUG_KERNEL 186162306a36Sopenharmony_ci help 186262306a36Sopenharmony_ci Enable extra debugging checks for the rseq system call. 186362306a36Sopenharmony_ci 186462306a36Sopenharmony_ci If unsure, say N. 186562306a36Sopenharmony_ci 186662306a36Sopenharmony_ciconfig HAVE_PERF_EVENTS 186762306a36Sopenharmony_ci bool 186862306a36Sopenharmony_ci help 186962306a36Sopenharmony_ci See tools/perf/design.txt for details. 187062306a36Sopenharmony_ci 187162306a36Sopenharmony_ciconfig GUEST_PERF_EVENTS 187262306a36Sopenharmony_ci bool 187362306a36Sopenharmony_ci depends on HAVE_PERF_EVENTS 187462306a36Sopenharmony_ci 187562306a36Sopenharmony_ciconfig PERF_USE_VMALLOC 187662306a36Sopenharmony_ci bool 187762306a36Sopenharmony_ci help 187862306a36Sopenharmony_ci See tools/perf/design.txt for details 187962306a36Sopenharmony_ci 188062306a36Sopenharmony_ciconfig PC104 188162306a36Sopenharmony_ci bool "PC/104 support" if EXPERT 188262306a36Sopenharmony_ci help 188362306a36Sopenharmony_ci Expose PC/104 form factor device drivers and options available for 188462306a36Sopenharmony_ci selection and configuration. Enable this option if your target 188562306a36Sopenharmony_ci machine has a PC/104 bus. 188662306a36Sopenharmony_ci 188762306a36Sopenharmony_cimenu "Kernel Performance Events And Counters" 188862306a36Sopenharmony_ci 188962306a36Sopenharmony_ciconfig PERF_EVENTS 189062306a36Sopenharmony_ci bool "Kernel performance events and counters" 189162306a36Sopenharmony_ci default y if PROFILING 189262306a36Sopenharmony_ci depends on HAVE_PERF_EVENTS 189362306a36Sopenharmony_ci select IRQ_WORK 189462306a36Sopenharmony_ci help 189562306a36Sopenharmony_ci Enable kernel support for various performance events provided 189662306a36Sopenharmony_ci by software and hardware. 189762306a36Sopenharmony_ci 189862306a36Sopenharmony_ci Software events are supported either built-in or via the 189962306a36Sopenharmony_ci use of generic tracepoints. 190062306a36Sopenharmony_ci 190162306a36Sopenharmony_ci Most modern CPUs support performance events via performance 190262306a36Sopenharmony_ci counter registers. These registers count the number of certain 190362306a36Sopenharmony_ci types of hw events: such as instructions executed, cachemisses 190462306a36Sopenharmony_ci suffered, or branches mis-predicted - without slowing down the 190562306a36Sopenharmony_ci kernel or applications. These registers can also trigger interrupts 190662306a36Sopenharmony_ci when a threshold number of events have passed - and can thus be 190762306a36Sopenharmony_ci used to profile the code that runs on that CPU. 190862306a36Sopenharmony_ci 190962306a36Sopenharmony_ci The Linux Performance Event subsystem provides an abstraction of 191062306a36Sopenharmony_ci these software and hardware event capabilities, available via a 191162306a36Sopenharmony_ci system call and used by the "perf" utility in tools/perf/. It 191262306a36Sopenharmony_ci provides per task and per CPU counters, and it provides event 191362306a36Sopenharmony_ci capabilities on top of those. 191462306a36Sopenharmony_ci 191562306a36Sopenharmony_ci Say Y if unsure. 191662306a36Sopenharmony_ci 191762306a36Sopenharmony_ciconfig DEBUG_PERF_USE_VMALLOC 191862306a36Sopenharmony_ci default n 191962306a36Sopenharmony_ci bool "Debug: use vmalloc to back perf mmap() buffers" 192062306a36Sopenharmony_ci depends on PERF_EVENTS && DEBUG_KERNEL && !PPC 192162306a36Sopenharmony_ci select PERF_USE_VMALLOC 192262306a36Sopenharmony_ci help 192362306a36Sopenharmony_ci Use vmalloc memory to back perf mmap() buffers. 192462306a36Sopenharmony_ci 192562306a36Sopenharmony_ci Mostly useful for debugging the vmalloc code on platforms 192662306a36Sopenharmony_ci that don't require it. 192762306a36Sopenharmony_ci 192862306a36Sopenharmony_ci Say N if unsure. 192962306a36Sopenharmony_ci 193062306a36Sopenharmony_ciendmenu 193162306a36Sopenharmony_ci 193262306a36Sopenharmony_ciconfig SYSTEM_DATA_VERIFICATION 193362306a36Sopenharmony_ci def_bool n 193462306a36Sopenharmony_ci select SYSTEM_TRUSTED_KEYRING 193562306a36Sopenharmony_ci select KEYS 193662306a36Sopenharmony_ci select CRYPTO 193762306a36Sopenharmony_ci select CRYPTO_RSA 193862306a36Sopenharmony_ci select ASYMMETRIC_KEY_TYPE 193962306a36Sopenharmony_ci select ASYMMETRIC_PUBLIC_KEY_SUBTYPE 194062306a36Sopenharmony_ci select ASN1 194162306a36Sopenharmony_ci select OID_REGISTRY 194262306a36Sopenharmony_ci select X509_CERTIFICATE_PARSER 194362306a36Sopenharmony_ci select PKCS7_MESSAGE_PARSER 194462306a36Sopenharmony_ci help 194562306a36Sopenharmony_ci Provide PKCS#7 message verification using the contents of the system 194662306a36Sopenharmony_ci trusted keyring to provide public keys. This then can be used for 194762306a36Sopenharmony_ci module verification, kexec image verification and firmware blob 194862306a36Sopenharmony_ci verification. 194962306a36Sopenharmony_ci 195062306a36Sopenharmony_ciconfig PROFILING 195162306a36Sopenharmony_ci bool "Profiling support" 195262306a36Sopenharmony_ci help 195362306a36Sopenharmony_ci Say Y here to enable the extended profiling support mechanisms used 195462306a36Sopenharmony_ci by profilers. 195562306a36Sopenharmony_ci 195662306a36Sopenharmony_ciconfig RUST 195762306a36Sopenharmony_ci bool "Rust support" 195862306a36Sopenharmony_ci depends on HAVE_RUST 195962306a36Sopenharmony_ci depends on RUST_IS_AVAILABLE 196062306a36Sopenharmony_ci depends on !MODVERSIONS 196162306a36Sopenharmony_ci depends on !GCC_PLUGINS 196262306a36Sopenharmony_ci depends on !RANDSTRUCT 196362306a36Sopenharmony_ci depends on !DEBUG_INFO_BTF || PAHOLE_HAS_LANG_EXCLUDE 196462306a36Sopenharmony_ci select CONSTRUCTORS 196562306a36Sopenharmony_ci help 196662306a36Sopenharmony_ci Enables Rust support in the kernel. 196762306a36Sopenharmony_ci 196862306a36Sopenharmony_ci This allows other Rust-related options, like drivers written in Rust, 196962306a36Sopenharmony_ci to be selected. 197062306a36Sopenharmony_ci 197162306a36Sopenharmony_ci It is also required to be able to load external kernel modules 197262306a36Sopenharmony_ci written in Rust. 197362306a36Sopenharmony_ci 197462306a36Sopenharmony_ci See Documentation/rust/ for more information. 197562306a36Sopenharmony_ci 197662306a36Sopenharmony_ci If unsure, say N. 197762306a36Sopenharmony_ci 197862306a36Sopenharmony_ciconfig RUSTC_VERSION_TEXT 197962306a36Sopenharmony_ci string 198062306a36Sopenharmony_ci depends on RUST 198162306a36Sopenharmony_ci default $(shell,command -v $(RUSTC) >/dev/null 2>&1 && $(RUSTC) --version || echo n) 198262306a36Sopenharmony_ci 198362306a36Sopenharmony_ciconfig BINDGEN_VERSION_TEXT 198462306a36Sopenharmony_ci string 198562306a36Sopenharmony_ci depends on RUST 198662306a36Sopenharmony_ci default $(shell,command -v $(BINDGEN) >/dev/null 2>&1 && $(BINDGEN) --version || echo n) 198762306a36Sopenharmony_ci 198862306a36Sopenharmony_ci# 198962306a36Sopenharmony_ci# Place an empty function call at each tracepoint site. Can be 199062306a36Sopenharmony_ci# dynamically changed for a probe function. 199162306a36Sopenharmony_ci# 199262306a36Sopenharmony_ciconfig TRACEPOINTS 199362306a36Sopenharmony_ci bool 199462306a36Sopenharmony_ci 199562306a36Sopenharmony_cisource "kernel/Kconfig.kexec" 199662306a36Sopenharmony_ci 199762306a36Sopenharmony_ciendmenu # General setup 199862306a36Sopenharmony_ci 199962306a36Sopenharmony_cisource "arch/Kconfig" 200062306a36Sopenharmony_ci 200162306a36Sopenharmony_ciconfig RT_MUTEXES 200262306a36Sopenharmony_ci bool 200362306a36Sopenharmony_ci default y if PREEMPT_RT 200462306a36Sopenharmony_ci 200562306a36Sopenharmony_ciconfig BASE_SMALL 200662306a36Sopenharmony_ci int 200762306a36Sopenharmony_ci default 0 if BASE_FULL 200862306a36Sopenharmony_ci default 1 if !BASE_FULL 200962306a36Sopenharmony_ci 201062306a36Sopenharmony_ciconfig MODULE_SIG_FORMAT 201162306a36Sopenharmony_ci def_bool n 201262306a36Sopenharmony_ci select SYSTEM_DATA_VERIFICATION 201362306a36Sopenharmony_ci 201462306a36Sopenharmony_cisource "kernel/module/Kconfig" 201562306a36Sopenharmony_ci 201662306a36Sopenharmony_ciconfig INIT_ALL_POSSIBLE 201762306a36Sopenharmony_ci bool 201862306a36Sopenharmony_ci help 201962306a36Sopenharmony_ci Back when each arch used to define their own cpu_online_mask and 202062306a36Sopenharmony_ci cpu_possible_mask, some of them chose to initialize cpu_possible_mask 202162306a36Sopenharmony_ci with all 1s, and others with all 0s. When they were centralised, 202262306a36Sopenharmony_ci it was better to provide this option than to break all the archs 202362306a36Sopenharmony_ci and have several arch maintainers pursuing me down dark alleys. 202462306a36Sopenharmony_ci 202562306a36Sopenharmony_cisource "block/Kconfig" 202662306a36Sopenharmony_ci 202762306a36Sopenharmony_ciconfig PREEMPT_NOTIFIERS 202862306a36Sopenharmony_ci bool 202962306a36Sopenharmony_ci 203062306a36Sopenharmony_ciconfig PADATA 203162306a36Sopenharmony_ci depends on SMP 203262306a36Sopenharmony_ci bool 203362306a36Sopenharmony_ci 203462306a36Sopenharmony_ciconfig ASN1 203562306a36Sopenharmony_ci tristate 203662306a36Sopenharmony_ci help 203762306a36Sopenharmony_ci Build a simple ASN.1 grammar compiler that produces a bytecode output 203862306a36Sopenharmony_ci that can be interpreted by the ASN.1 stream decoder and used to 203962306a36Sopenharmony_ci inform it as to what tags are to be expected in a stream and what 204062306a36Sopenharmony_ci functions to call on what tags. 204162306a36Sopenharmony_ci 204262306a36Sopenharmony_cisource "kernel/Kconfig.locks" 204362306a36Sopenharmony_ci 204462306a36Sopenharmony_ciconfig ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 204562306a36Sopenharmony_ci bool 204662306a36Sopenharmony_ci 204762306a36Sopenharmony_ciconfig ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 204862306a36Sopenharmony_ci bool 204962306a36Sopenharmony_ci 205062306a36Sopenharmony_ci# It may be useful for an architecture to override the definitions of the 205162306a36Sopenharmony_ci# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h> 205262306a36Sopenharmony_ci# and the COMPAT_ variants in <linux/compat.h>, in particular to use a 205362306a36Sopenharmony_ci# different calling convention for syscalls. They can also override the 205462306a36Sopenharmony_ci# macros for not-implemented syscalls in kernel/sys_ni.c and 205562306a36Sopenharmony_ci# kernel/time/posix-stubs.c. All these overrides need to be available in 205662306a36Sopenharmony_ci# <asm/syscall_wrapper.h>. 205762306a36Sopenharmony_ciconfig ARCH_HAS_SYSCALL_WRAPPER 205862306a36Sopenharmony_ci def_bool n 2059