18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ciconfig DEFCONFIG_LIST 38c2ecf20Sopenharmony_ci string 48c2ecf20Sopenharmony_ci depends on !UML 58c2ecf20Sopenharmony_ci option defconfig_list 68c2ecf20Sopenharmony_ci default "/lib/modules/$(shell,uname -r)/.config" 78c2ecf20Sopenharmony_ci default "/etc/kernel-config" 88c2ecf20Sopenharmony_ci default "/boot/config-$(shell,uname -r)" 98c2ecf20Sopenharmony_ci default "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)" 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciconfig CC_VERSION_TEXT 128c2ecf20Sopenharmony_ci string 138c2ecf20Sopenharmony_ci default "$(CC_VERSION_TEXT)" 148c2ecf20Sopenharmony_ci help 158c2ecf20Sopenharmony_ci This is used in unclear ways: 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci - Re-run Kconfig when the compiler is updated 188c2ecf20Sopenharmony_ci The 'default' property references the environment variable, 198c2ecf20Sopenharmony_ci CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd. 208c2ecf20Sopenharmony_ci When the compiler is updated, Kconfig will be invoked. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci - Ensure full rebuild when the compier is updated 238c2ecf20Sopenharmony_ci include/linux/kconfig.h contains this option in the comment line so 248c2ecf20Sopenharmony_ci fixdep adds include/config/cc/version/text.h into the auto-generated 258c2ecf20Sopenharmony_ci dependency. When the compiler is updated, syncconfig will touch it 268c2ecf20Sopenharmony_ci and then every file will be rebuilt. 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ciconfig CC_IS_GCC 298c2ecf20Sopenharmony_ci def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc) 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ciconfig GCC_VERSION 328c2ecf20Sopenharmony_ci int 338c2ecf20Sopenharmony_ci default $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) if CC_IS_GCC 348c2ecf20Sopenharmony_ci default 0 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciconfig LD_VERSION 378c2ecf20Sopenharmony_ci int 388c2ecf20Sopenharmony_ci default $(shell,$(LD) --version | $(srctree)/scripts/ld-version.sh) 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciconfig CC_IS_CLANG 418c2ecf20Sopenharmony_ci def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q clang) 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciconfig LD_IS_LLD 448c2ecf20Sopenharmony_ci def_bool $(success,$(LD) -v | head -n 1 | grep -q LLD) 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ciconfig CLANG_VERSION 478c2ecf20Sopenharmony_ci int 488c2ecf20Sopenharmony_ci default $(shell,$(srctree)/scripts/clang-version.sh $(CC)) 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciconfig AS_IS_GNU 518c2ecf20Sopenharmony_ci def_bool $(success,test "$(as-name)" = GNU) 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ciconfig AS_IS_LLVM 548c2ecf20Sopenharmony_ci def_bool $(success,test "$(as-name)" = LLVM) 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ciconfig AS_VERSION 578c2ecf20Sopenharmony_ci int 588c2ecf20Sopenharmony_ci # Use clang version if this is the integrated assembler 598c2ecf20Sopenharmony_ci default CLANG_VERSION if AS_IS_LLVM 608c2ecf20Sopenharmony_ci default $(as-version) 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ciconfig LLD_VERSION 638c2ecf20Sopenharmony_ci int 648c2ecf20Sopenharmony_ci default $(shell,$(srctree)/scripts/lld-version.sh $(LD)) 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ciconfig CC_CAN_LINK 678c2ecf20Sopenharmony_ci bool 688c2ecf20Sopenharmony_ci default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag)) if 64BIT 698c2ecf20Sopenharmony_ci default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag)) 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ciconfig CC_CAN_LINK_STATIC 728c2ecf20Sopenharmony_ci bool 738c2ecf20Sopenharmony_ci default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag) -static) if 64BIT 748c2ecf20Sopenharmony_ci default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag) -static) 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ciconfig CC_HAS_ASM_GOTO 778c2ecf20Sopenharmony_ci def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC)) 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ciconfig CC_HAS_ASM_GOTO_OUTPUT 808c2ecf20Sopenharmony_ci depends on CC_HAS_ASM_GOTO 818c2ecf20Sopenharmony_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) 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ciconfig CC_HAS_ASM_GOTO_TIED_OUTPUT 848c2ecf20Sopenharmony_ci depends on CC_HAS_ASM_GOTO_OUTPUT 858c2ecf20Sopenharmony_ci # Detect buggy gcc and clang, fixed in gcc-11 clang-14. 868c2ecf20Sopenharmony_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) 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ciconfig TOOLS_SUPPORT_RELR 898c2ecf20Sopenharmony_ci def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciconfig CC_HAS_ASM_INLINE 928c2ecf20Sopenharmony_ci def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ciconfig CONSTRUCTORS 958c2ecf20Sopenharmony_ci bool 968c2ecf20Sopenharmony_ci depends on !UML 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ciconfig IRQ_WORK 998c2ecf20Sopenharmony_ci bool 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ciconfig BUILDTIME_TABLE_SORT 1028c2ecf20Sopenharmony_ci bool 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ciconfig THREAD_INFO_IN_TASK 1058c2ecf20Sopenharmony_ci bool 1068c2ecf20Sopenharmony_ci help 1078c2ecf20Sopenharmony_ci Select this to move thread_info off the stack into task_struct. To 1088c2ecf20Sopenharmony_ci make this work, an arch will need to remove all thread_info fields 1098c2ecf20Sopenharmony_ci except flags and fix any runtime bugs. 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci One subtle change that will be needed is to use try_get_task_stack() 1128c2ecf20Sopenharmony_ci and put_task_stack() in save_thread_stack_tsk() and get_wchan(). 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_cimenu "General setup" 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_ciconfig BROKEN 1178c2ecf20Sopenharmony_ci bool 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ciconfig BROKEN_ON_SMP 1208c2ecf20Sopenharmony_ci bool 1218c2ecf20Sopenharmony_ci depends on BROKEN || !SMP 1228c2ecf20Sopenharmony_ci default y 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ciconfig INIT_ENV_ARG_LIMIT 1258c2ecf20Sopenharmony_ci int 1268c2ecf20Sopenharmony_ci default 32 if !UML 1278c2ecf20Sopenharmony_ci default 128 if UML 1288c2ecf20Sopenharmony_ci help 1298c2ecf20Sopenharmony_ci Maximum of each of the number of arguments and environment 1308c2ecf20Sopenharmony_ci variables passed to init from the kernel command line. 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ciconfig COMPILE_TEST 1338c2ecf20Sopenharmony_ci bool "Compile also drivers which will not load" 1348c2ecf20Sopenharmony_ci depends on HAS_IOMEM 1358c2ecf20Sopenharmony_ci help 1368c2ecf20Sopenharmony_ci Some drivers can be compiled on a different platform than they are 1378c2ecf20Sopenharmony_ci intended to be run on. Despite they cannot be loaded there (or even 1388c2ecf20Sopenharmony_ci when they load they cannot be used due to missing HW support), 1398c2ecf20Sopenharmony_ci developers still, opposing to distributors, might want to build such 1408c2ecf20Sopenharmony_ci drivers to compile-test them. 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci If you are a developer and want to build everything available, say Y 1438c2ecf20Sopenharmony_ci here. If you are a user/distributor, say N here to exclude useless 1448c2ecf20Sopenharmony_ci drivers to be distributed. 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_ciconfig UAPI_HEADER_TEST 1478c2ecf20Sopenharmony_ci bool "Compile test UAPI headers" 1488c2ecf20Sopenharmony_ci depends on HEADERS_INSTALL && CC_CAN_LINK 1498c2ecf20Sopenharmony_ci help 1508c2ecf20Sopenharmony_ci Compile test headers exported to user-space to ensure they are 1518c2ecf20Sopenharmony_ci self-contained, i.e. compilable as standalone units. 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci If you are a developer or tester and want to ensure the exported 1548c2ecf20Sopenharmony_ci headers are self-contained, say Y here. Otherwise, choose N. 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ciconfig LOCALVERSION 1578c2ecf20Sopenharmony_ci string "Local version - append to kernel release" 1588c2ecf20Sopenharmony_ci help 1598c2ecf20Sopenharmony_ci Append an extra string to the end of your kernel version. 1608c2ecf20Sopenharmony_ci This will show up when you type uname, for example. 1618c2ecf20Sopenharmony_ci The string you set here will be appended after the contents of 1628c2ecf20Sopenharmony_ci any files with a filename matching localversion* in your 1638c2ecf20Sopenharmony_ci object and source tree, in that order. Your total string can 1648c2ecf20Sopenharmony_ci be a maximum of 64 characters. 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_ciconfig LOCALVERSION_AUTO 1678c2ecf20Sopenharmony_ci bool "Automatically append version information to the version string" 1688c2ecf20Sopenharmony_ci default y 1698c2ecf20Sopenharmony_ci depends on !COMPILE_TEST 1708c2ecf20Sopenharmony_ci help 1718c2ecf20Sopenharmony_ci This will try to automatically determine if the current tree is a 1728c2ecf20Sopenharmony_ci release tree by looking for git tags that belong to the current 1738c2ecf20Sopenharmony_ci top of tree revision. 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_ci A string of the format -gxxxxxxxx will be added to the localversion 1768c2ecf20Sopenharmony_ci if a git-based tree is found. The string generated by this will be 1778c2ecf20Sopenharmony_ci appended after any matching localversion* files, and after the value 1788c2ecf20Sopenharmony_ci set in CONFIG_LOCALVERSION. 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci (The actual string used here is the first eight characters produced 1818c2ecf20Sopenharmony_ci by running the command: 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_ci $ git rev-parse --verify HEAD 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_ci which is done within the script "scripts/setlocalversion".) 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_ciconfig BUILD_SALT 1888c2ecf20Sopenharmony_ci string "Build ID Salt" 1898c2ecf20Sopenharmony_ci default "" 1908c2ecf20Sopenharmony_ci help 1918c2ecf20Sopenharmony_ci The build ID is used to link binaries and their debug info. Setting 1928c2ecf20Sopenharmony_ci this option will use the value in the calculation of the build id. 1938c2ecf20Sopenharmony_ci This is mostly useful for distributions which want to ensure the 1948c2ecf20Sopenharmony_ci build is unique between builds. It's safe to leave the default. 1958c2ecf20Sopenharmony_ci 1968c2ecf20Sopenharmony_ciconfig HAVE_KERNEL_GZIP 1978c2ecf20Sopenharmony_ci bool 1988c2ecf20Sopenharmony_ci 1998c2ecf20Sopenharmony_ciconfig HAVE_KERNEL_BZIP2 2008c2ecf20Sopenharmony_ci bool 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ciconfig HAVE_KERNEL_LZMA 2038c2ecf20Sopenharmony_ci bool 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_ciconfig HAVE_KERNEL_XZ 2068c2ecf20Sopenharmony_ci bool 2078c2ecf20Sopenharmony_ci 2088c2ecf20Sopenharmony_ciconfig HAVE_KERNEL_LZO 2098c2ecf20Sopenharmony_ci bool 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ciconfig HAVE_KERNEL_LZ4 2128c2ecf20Sopenharmony_ci bool 2138c2ecf20Sopenharmony_ci 2148c2ecf20Sopenharmony_ciconfig HAVE_KERNEL_ZSTD 2158c2ecf20Sopenharmony_ci bool 2168c2ecf20Sopenharmony_ci 2178c2ecf20Sopenharmony_ciconfig HAVE_KERNEL_UNCOMPRESSED 2188c2ecf20Sopenharmony_ci bool 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_cichoice 2218c2ecf20Sopenharmony_ci prompt "Kernel compression mode" 2228c2ecf20Sopenharmony_ci default KERNEL_GZIP 2238c2ecf20Sopenharmony_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 2248c2ecf20Sopenharmony_ci help 2258c2ecf20Sopenharmony_ci The linux kernel is a kind of self-extracting executable. 2268c2ecf20Sopenharmony_ci Several compression algorithms are available, which differ 2278c2ecf20Sopenharmony_ci in efficiency, compression and decompression speed. 2288c2ecf20Sopenharmony_ci Compression speed is only relevant when building a kernel. 2298c2ecf20Sopenharmony_ci Decompression speed is relevant at each boot. 2308c2ecf20Sopenharmony_ci 2318c2ecf20Sopenharmony_ci If you have any problems with bzip2 or lzma compressed 2328c2ecf20Sopenharmony_ci kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 2338c2ecf20Sopenharmony_ci version of this functionality (bzip2 only), for 2.4, was 2348c2ecf20Sopenharmony_ci supplied by Christian Ludwig) 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_ci High compression options are mostly useful for users, who 2378c2ecf20Sopenharmony_ci are low on disk space (embedded systems), but for whom ram 2388c2ecf20Sopenharmony_ci size matters less. 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ci If in doubt, select 'gzip' 2418c2ecf20Sopenharmony_ci 2428c2ecf20Sopenharmony_ciconfig KERNEL_GZIP 2438c2ecf20Sopenharmony_ci bool "Gzip" 2448c2ecf20Sopenharmony_ci depends on HAVE_KERNEL_GZIP 2458c2ecf20Sopenharmony_ci help 2468c2ecf20Sopenharmony_ci The old and tried gzip compression. It provides a good balance 2478c2ecf20Sopenharmony_ci between compression ratio and decompression speed. 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ciconfig KERNEL_BZIP2 2508c2ecf20Sopenharmony_ci bool "Bzip2" 2518c2ecf20Sopenharmony_ci depends on HAVE_KERNEL_BZIP2 2528c2ecf20Sopenharmony_ci help 2538c2ecf20Sopenharmony_ci Its compression ratio and speed is intermediate. 2548c2ecf20Sopenharmony_ci Decompression speed is slowest among the choices. The kernel 2558c2ecf20Sopenharmony_ci size is about 10% smaller with bzip2, in comparison to gzip. 2568c2ecf20Sopenharmony_ci Bzip2 uses a large amount of memory. For modern kernels you 2578c2ecf20Sopenharmony_ci will need at least 8MB RAM or more for booting. 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_ciconfig KERNEL_LZMA 2608c2ecf20Sopenharmony_ci bool "LZMA" 2618c2ecf20Sopenharmony_ci depends on HAVE_KERNEL_LZMA 2628c2ecf20Sopenharmony_ci help 2638c2ecf20Sopenharmony_ci This compression algorithm's ratio is best. Decompression speed 2648c2ecf20Sopenharmony_ci is between gzip and bzip2. Compression is slowest. 2658c2ecf20Sopenharmony_ci The kernel size is about 33% smaller with LZMA in comparison to gzip. 2668c2ecf20Sopenharmony_ci 2678c2ecf20Sopenharmony_ciconfig KERNEL_XZ 2688c2ecf20Sopenharmony_ci bool "XZ" 2698c2ecf20Sopenharmony_ci depends on HAVE_KERNEL_XZ 2708c2ecf20Sopenharmony_ci help 2718c2ecf20Sopenharmony_ci XZ uses the LZMA2 algorithm and instruction set specific 2728c2ecf20Sopenharmony_ci BCJ filters which can improve compression ratio of executable 2738c2ecf20Sopenharmony_ci code. The size of the kernel is about 30% smaller with XZ in 2748c2ecf20Sopenharmony_ci comparison to gzip. On architectures for which there is a BCJ 2758c2ecf20Sopenharmony_ci filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ 2768c2ecf20Sopenharmony_ci will create a few percent smaller kernel than plain LZMA. 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ci The speed is about the same as with LZMA: The decompression 2798c2ecf20Sopenharmony_ci speed of XZ is better than that of bzip2 but worse than gzip 2808c2ecf20Sopenharmony_ci and LZO. Compression is slow. 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ciconfig KERNEL_LZO 2838c2ecf20Sopenharmony_ci bool "LZO" 2848c2ecf20Sopenharmony_ci depends on HAVE_KERNEL_LZO 2858c2ecf20Sopenharmony_ci help 2868c2ecf20Sopenharmony_ci Its compression ratio is the poorest among the choices. The kernel 2878c2ecf20Sopenharmony_ci size is about 10% bigger than gzip; however its speed 2888c2ecf20Sopenharmony_ci (both compression and decompression) is the fastest. 2898c2ecf20Sopenharmony_ci 2908c2ecf20Sopenharmony_ciconfig KERNEL_LZ4 2918c2ecf20Sopenharmony_ci bool "LZ4" 2928c2ecf20Sopenharmony_ci depends on HAVE_KERNEL_LZ4 2938c2ecf20Sopenharmony_ci help 2948c2ecf20Sopenharmony_ci LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. 2958c2ecf20Sopenharmony_ci A preliminary version of LZ4 de/compression tool is available at 2968c2ecf20Sopenharmony_ci <https://code.google.com/p/lz4/>. 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_ci Its compression ratio is worse than LZO. The size of the kernel 2998c2ecf20Sopenharmony_ci is about 8% bigger than LZO. But the decompression speed is 3008c2ecf20Sopenharmony_ci faster than LZO. 3018c2ecf20Sopenharmony_ci 3028c2ecf20Sopenharmony_ciconfig KERNEL_ZSTD 3038c2ecf20Sopenharmony_ci bool "ZSTD" 3048c2ecf20Sopenharmony_ci depends on HAVE_KERNEL_ZSTD 3058c2ecf20Sopenharmony_ci help 3068c2ecf20Sopenharmony_ci ZSTD is a compression algorithm targeting intermediate compression 3078c2ecf20Sopenharmony_ci with fast decompression speed. It will compress better than GZIP and 3088c2ecf20Sopenharmony_ci decompress around the same speed as LZO, but slower than LZ4. You 3098c2ecf20Sopenharmony_ci will need at least 192 KB RAM or more for booting. The zstd command 3108c2ecf20Sopenharmony_ci line tool is required for compression. 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_ciconfig KERNEL_UNCOMPRESSED 3138c2ecf20Sopenharmony_ci bool "None" 3148c2ecf20Sopenharmony_ci depends on HAVE_KERNEL_UNCOMPRESSED 3158c2ecf20Sopenharmony_ci help 3168c2ecf20Sopenharmony_ci Produce uncompressed kernel image. This option is usually not what 3178c2ecf20Sopenharmony_ci you want. It is useful for debugging the kernel in slow simulation 3188c2ecf20Sopenharmony_ci environments, where decompressing and moving the kernel is awfully 3198c2ecf20Sopenharmony_ci slow. This option allows early boot code to skip the decompressor 3208c2ecf20Sopenharmony_ci and jump right at uncompressed kernel image. 3218c2ecf20Sopenharmony_ci 3228c2ecf20Sopenharmony_ciendchoice 3238c2ecf20Sopenharmony_ci 3248c2ecf20Sopenharmony_ciconfig DEFAULT_INIT 3258c2ecf20Sopenharmony_ci string "Default init path" 3268c2ecf20Sopenharmony_ci default "" 3278c2ecf20Sopenharmony_ci help 3288c2ecf20Sopenharmony_ci This option determines the default init for the system if no init= 3298c2ecf20Sopenharmony_ci option is passed on the kernel command line. If the requested path is 3308c2ecf20Sopenharmony_ci not present, we will still then move on to attempting further 3318c2ecf20Sopenharmony_ci locations (e.g. /sbin/init, etc). If this is empty, we will just use 3328c2ecf20Sopenharmony_ci the fallback list when init= is not passed. 3338c2ecf20Sopenharmony_ci 3348c2ecf20Sopenharmony_ciconfig DEFAULT_HOSTNAME 3358c2ecf20Sopenharmony_ci string "Default hostname" 3368c2ecf20Sopenharmony_ci default "(none)" 3378c2ecf20Sopenharmony_ci help 3388c2ecf20Sopenharmony_ci This option determines the default system hostname before userspace 3398c2ecf20Sopenharmony_ci calls sethostname(2). The kernel traditionally uses "(none)" here, 3408c2ecf20Sopenharmony_ci but you may wish to use a different default here to make a minimal 3418c2ecf20Sopenharmony_ci system more usable with less configuration. 3428c2ecf20Sopenharmony_ci 3438c2ecf20Sopenharmony_ci# 3448c2ecf20Sopenharmony_ci# For some reason microblaze and nios2 hard code SWAP=n. Hopefully we can 3458c2ecf20Sopenharmony_ci# add proper SWAP support to them, in which case this can be remove. 3468c2ecf20Sopenharmony_ci# 3478c2ecf20Sopenharmony_ciconfig ARCH_NO_SWAP 3488c2ecf20Sopenharmony_ci bool 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ciconfig SWAP 3518c2ecf20Sopenharmony_ci bool "Support for paging of anonymous memory (swap)" 3528c2ecf20Sopenharmony_ci depends on MMU && BLOCK && !ARCH_NO_SWAP 3538c2ecf20Sopenharmony_ci default y 3548c2ecf20Sopenharmony_ci help 3558c2ecf20Sopenharmony_ci This option allows you to choose whether you want to have support 3568c2ecf20Sopenharmony_ci for so called swap devices or swap files in your kernel that are 3578c2ecf20Sopenharmony_ci used to provide more virtual memory than the actual RAM present 3588c2ecf20Sopenharmony_ci in your computer. If unsure say Y. 3598c2ecf20Sopenharmony_ci 3608c2ecf20Sopenharmony_ciconfig SYSVIPC 3618c2ecf20Sopenharmony_ci bool "System V IPC" 3628c2ecf20Sopenharmony_ci help 3638c2ecf20Sopenharmony_ci Inter Process Communication is a suite of library functions and 3648c2ecf20Sopenharmony_ci system calls which let processes (running programs) synchronize and 3658c2ecf20Sopenharmony_ci exchange information. It is generally considered to be a good thing, 3668c2ecf20Sopenharmony_ci and some programs won't run unless you say Y here. In particular, if 3678c2ecf20Sopenharmony_ci you want to run the DOS emulator dosemu under Linux (read the 3688c2ecf20Sopenharmony_ci DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 3698c2ecf20Sopenharmony_ci you'll need to say Y here. 3708c2ecf20Sopenharmony_ci 3718c2ecf20Sopenharmony_ci You can find documentation about IPC with "info ipc" and also in 3728c2ecf20Sopenharmony_ci section 6.4 of the Linux Programmer's Guide, available from 3738c2ecf20Sopenharmony_ci <http://www.tldp.org/guides.html>. 3748c2ecf20Sopenharmony_ci 3758c2ecf20Sopenharmony_ciconfig SYSVIPC_SYSCTL 3768c2ecf20Sopenharmony_ci bool 3778c2ecf20Sopenharmony_ci depends on SYSVIPC 3788c2ecf20Sopenharmony_ci depends on SYSCTL 3798c2ecf20Sopenharmony_ci default y 3808c2ecf20Sopenharmony_ci 3818c2ecf20Sopenharmony_ciconfig POSIX_MQUEUE 3828c2ecf20Sopenharmony_ci bool "POSIX Message Queues" 3838c2ecf20Sopenharmony_ci depends on NET 3848c2ecf20Sopenharmony_ci help 3858c2ecf20Sopenharmony_ci POSIX variant of message queues is a part of IPC. In POSIX message 3868c2ecf20Sopenharmony_ci queues every message has a priority which decides about succession 3878c2ecf20Sopenharmony_ci of receiving it by a process. If you want to compile and run 3888c2ecf20Sopenharmony_ci programs written e.g. for Solaris with use of its POSIX message 3898c2ecf20Sopenharmony_ci queues (functions mq_*) say Y here. 3908c2ecf20Sopenharmony_ci 3918c2ecf20Sopenharmony_ci POSIX message queues are visible as a filesystem called 'mqueue' 3928c2ecf20Sopenharmony_ci and can be mounted somewhere if you want to do filesystem 3938c2ecf20Sopenharmony_ci operations on message queues. 3948c2ecf20Sopenharmony_ci 3958c2ecf20Sopenharmony_ci If unsure, say Y. 3968c2ecf20Sopenharmony_ci 3978c2ecf20Sopenharmony_ciconfig POSIX_MQUEUE_SYSCTL 3988c2ecf20Sopenharmony_ci bool 3998c2ecf20Sopenharmony_ci depends on POSIX_MQUEUE 4008c2ecf20Sopenharmony_ci depends on SYSCTL 4018c2ecf20Sopenharmony_ci default y 4028c2ecf20Sopenharmony_ci 4038c2ecf20Sopenharmony_ciconfig WATCH_QUEUE 4048c2ecf20Sopenharmony_ci bool "General notification queue" 4058c2ecf20Sopenharmony_ci default n 4068c2ecf20Sopenharmony_ci help 4078c2ecf20Sopenharmony_ci 4088c2ecf20Sopenharmony_ci This is a general notification queue for the kernel to pass events to 4098c2ecf20Sopenharmony_ci userspace by splicing them into pipes. It can be used in conjunction 4108c2ecf20Sopenharmony_ci with watches for key/keyring change notifications and device 4118c2ecf20Sopenharmony_ci notifications. 4128c2ecf20Sopenharmony_ci 4138c2ecf20Sopenharmony_ci See Documentation/watch_queue.rst 4148c2ecf20Sopenharmony_ci 4158c2ecf20Sopenharmony_ciconfig CROSS_MEMORY_ATTACH 4168c2ecf20Sopenharmony_ci bool "Enable process_vm_readv/writev syscalls" 4178c2ecf20Sopenharmony_ci depends on MMU 4188c2ecf20Sopenharmony_ci default y 4198c2ecf20Sopenharmony_ci help 4208c2ecf20Sopenharmony_ci Enabling this option adds the system calls process_vm_readv and 4218c2ecf20Sopenharmony_ci process_vm_writev which allow a process with the correct privileges 4228c2ecf20Sopenharmony_ci to directly read from or write to another process' address space. 4238c2ecf20Sopenharmony_ci See the man page for more details. 4248c2ecf20Sopenharmony_ci 4258c2ecf20Sopenharmony_ciconfig USELIB 4268c2ecf20Sopenharmony_ci bool "uselib syscall" 4278c2ecf20Sopenharmony_ci def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION 4288c2ecf20Sopenharmony_ci help 4298c2ecf20Sopenharmony_ci This option enables the uselib syscall, a system call used in the 4308c2ecf20Sopenharmony_ci dynamic linker from libc5 and earlier. glibc does not use this 4318c2ecf20Sopenharmony_ci system call. If you intend to run programs built on libc5 or 4328c2ecf20Sopenharmony_ci earlier, you may need to enable this syscall. Current systems 4338c2ecf20Sopenharmony_ci running glibc can safely disable this. 4348c2ecf20Sopenharmony_ci 4358c2ecf20Sopenharmony_ciconfig AUDIT 4368c2ecf20Sopenharmony_ci bool "Auditing support" 4378c2ecf20Sopenharmony_ci depends on NET 4388c2ecf20Sopenharmony_ci help 4398c2ecf20Sopenharmony_ci Enable auditing infrastructure that can be used with another 4408c2ecf20Sopenharmony_ci kernel subsystem, such as SELinux (which requires this for 4418c2ecf20Sopenharmony_ci logging of avc messages output). System call auditing is included 4428c2ecf20Sopenharmony_ci on architectures which support it. 4438c2ecf20Sopenharmony_ci 4448c2ecf20Sopenharmony_ciconfig HAVE_ARCH_AUDITSYSCALL 4458c2ecf20Sopenharmony_ci bool 4468c2ecf20Sopenharmony_ci 4478c2ecf20Sopenharmony_ciconfig AUDITSYSCALL 4488c2ecf20Sopenharmony_ci def_bool y 4498c2ecf20Sopenharmony_ci depends on AUDIT && HAVE_ARCH_AUDITSYSCALL 4508c2ecf20Sopenharmony_ci select FSNOTIFY 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_cisource "kernel/irq/Kconfig" 4538c2ecf20Sopenharmony_cisource "kernel/time/Kconfig" 4548c2ecf20Sopenharmony_cisource "kernel/Kconfig.preempt" 4558c2ecf20Sopenharmony_ci 4568c2ecf20Sopenharmony_cimenu "CPU/Task time and stats accounting" 4578c2ecf20Sopenharmony_ci 4588c2ecf20Sopenharmony_ciconfig VIRT_CPU_ACCOUNTING 4598c2ecf20Sopenharmony_ci bool 4608c2ecf20Sopenharmony_ci 4618c2ecf20Sopenharmony_cichoice 4628c2ecf20Sopenharmony_ci prompt "Cputime accounting" 4638c2ecf20Sopenharmony_ci default TICK_CPU_ACCOUNTING if !PPC64 4648c2ecf20Sopenharmony_ci default VIRT_CPU_ACCOUNTING_NATIVE if PPC64 4658c2ecf20Sopenharmony_ci 4668c2ecf20Sopenharmony_ci# Kind of a stub config for the pure tick based cputime accounting 4678c2ecf20Sopenharmony_ciconfig TICK_CPU_ACCOUNTING 4688c2ecf20Sopenharmony_ci bool "Simple tick based cputime accounting" 4698c2ecf20Sopenharmony_ci depends on !S390 && !NO_HZ_FULL 4708c2ecf20Sopenharmony_ci help 4718c2ecf20Sopenharmony_ci This is the basic tick based cputime accounting that maintains 4728c2ecf20Sopenharmony_ci statistics about user, system and idle time spent on per jiffies 4738c2ecf20Sopenharmony_ci granularity. 4748c2ecf20Sopenharmony_ci 4758c2ecf20Sopenharmony_ci If unsure, say Y. 4768c2ecf20Sopenharmony_ci 4778c2ecf20Sopenharmony_ciconfig VIRT_CPU_ACCOUNTING_NATIVE 4788c2ecf20Sopenharmony_ci bool "Deterministic task and CPU time accounting" 4798c2ecf20Sopenharmony_ci depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL 4808c2ecf20Sopenharmony_ci select VIRT_CPU_ACCOUNTING 4818c2ecf20Sopenharmony_ci help 4828c2ecf20Sopenharmony_ci Select this option to enable more accurate task and CPU time 4838c2ecf20Sopenharmony_ci accounting. This is done by reading a CPU counter on each 4848c2ecf20Sopenharmony_ci kernel entry and exit and on transitions within the kernel 4858c2ecf20Sopenharmony_ci between system, softirq and hardirq state, so there is a 4868c2ecf20Sopenharmony_ci small performance impact. In the case of s390 or IBM POWER > 5, 4878c2ecf20Sopenharmony_ci this also enables accounting of stolen time on logically-partitioned 4888c2ecf20Sopenharmony_ci systems. 4898c2ecf20Sopenharmony_ci 4908c2ecf20Sopenharmony_ciconfig VIRT_CPU_ACCOUNTING_GEN 4918c2ecf20Sopenharmony_ci bool "Full dynticks CPU time accounting" 4928c2ecf20Sopenharmony_ci depends on HAVE_CONTEXT_TRACKING 4938c2ecf20Sopenharmony_ci depends on HAVE_VIRT_CPU_ACCOUNTING_GEN 4948c2ecf20Sopenharmony_ci depends on GENERIC_CLOCKEVENTS 4958c2ecf20Sopenharmony_ci select VIRT_CPU_ACCOUNTING 4968c2ecf20Sopenharmony_ci select CONTEXT_TRACKING 4978c2ecf20Sopenharmony_ci help 4988c2ecf20Sopenharmony_ci Select this option to enable task and CPU time accounting on full 4998c2ecf20Sopenharmony_ci dynticks systems. This accounting is implemented by watching every 5008c2ecf20Sopenharmony_ci kernel-user boundaries using the context tracking subsystem. 5018c2ecf20Sopenharmony_ci The accounting is thus performed at the expense of some significant 5028c2ecf20Sopenharmony_ci overhead. 5038c2ecf20Sopenharmony_ci 5048c2ecf20Sopenharmony_ci For now this is only useful if you are working on the full 5058c2ecf20Sopenharmony_ci dynticks subsystem development. 5068c2ecf20Sopenharmony_ci 5078c2ecf20Sopenharmony_ci If unsure, say N. 5088c2ecf20Sopenharmony_ci 5098c2ecf20Sopenharmony_ciendchoice 5108c2ecf20Sopenharmony_ci 5118c2ecf20Sopenharmony_ciconfig IRQ_TIME_ACCOUNTING 5128c2ecf20Sopenharmony_ci bool "Fine granularity task level IRQ time accounting" 5138c2ecf20Sopenharmony_ci depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE 5148c2ecf20Sopenharmony_ci help 5158c2ecf20Sopenharmony_ci Select this option to enable fine granularity task irq time 5168c2ecf20Sopenharmony_ci accounting. This is done by reading a timestamp on each 5178c2ecf20Sopenharmony_ci transitions between softirq and hardirq state, so there can be a 5188c2ecf20Sopenharmony_ci small performance impact. 5198c2ecf20Sopenharmony_ci 5208c2ecf20Sopenharmony_ci If in doubt, say N here. 5218c2ecf20Sopenharmony_ci 5228c2ecf20Sopenharmony_ciconfig HAVE_SCHED_AVG_IRQ 5238c2ecf20Sopenharmony_ci def_bool y 5248c2ecf20Sopenharmony_ci depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING 5258c2ecf20Sopenharmony_ci depends on SMP 5268c2ecf20Sopenharmony_ci 5278c2ecf20Sopenharmony_ciconfig SCHED_THERMAL_PRESSURE 5288c2ecf20Sopenharmony_ci bool 5298c2ecf20Sopenharmony_ci default y if ARM && ARM_CPU_TOPOLOGY 5308c2ecf20Sopenharmony_ci default y if ARM64 5318c2ecf20Sopenharmony_ci depends on SMP 5328c2ecf20Sopenharmony_ci depends on CPU_FREQ_THERMAL 5338c2ecf20Sopenharmony_ci help 5348c2ecf20Sopenharmony_ci Select this option to enable thermal pressure accounting in the 5358c2ecf20Sopenharmony_ci scheduler. Thermal pressure is the value conveyed to the scheduler 5368c2ecf20Sopenharmony_ci that reflects the reduction in CPU compute capacity resulted from 5378c2ecf20Sopenharmony_ci thermal throttling. Thermal throttling occurs when the performance of 5388c2ecf20Sopenharmony_ci a CPU is capped due to high operating temperatures. 5398c2ecf20Sopenharmony_ci 5408c2ecf20Sopenharmony_ci If selected, the scheduler will be able to balance tasks accordingly, 5418c2ecf20Sopenharmony_ci i.e. put less load on throttled CPUs than on non/less throttled ones. 5428c2ecf20Sopenharmony_ci 5438c2ecf20Sopenharmony_ci This requires the architecture to implement 5448c2ecf20Sopenharmony_ci arch_set_thermal_pressure() and arch_get_thermal_pressure(). 5458c2ecf20Sopenharmony_ci 5468c2ecf20Sopenharmony_ciconfig SCHED_WALT 5478c2ecf20Sopenharmony_ci bool "Support window based load tracking" 5488c2ecf20Sopenharmony_ci depends on SMP 5498c2ecf20Sopenharmony_ci help 5508c2ecf20Sopenharmony_ci This feature will allow the scheduler to maintain a tunable window 5518c2ecf20Sopenharmony_ci based set of metrics for tasks and runqueues. These metrics can be 5528c2ecf20Sopenharmony_ci used to guide task placement as well as task frequency requirements 5538c2ecf20Sopenharmony_ci for cpufreq governors. 5548c2ecf20Sopenharmony_ci 5558c2ecf20Sopenharmony_ciconfig BSD_PROCESS_ACCT 5568c2ecf20Sopenharmony_ci bool "BSD Process Accounting" 5578c2ecf20Sopenharmony_ci depends on MULTIUSER 5588c2ecf20Sopenharmony_ci help 5598c2ecf20Sopenharmony_ci If you say Y here, a user level program will be able to instruct the 5608c2ecf20Sopenharmony_ci kernel (via a special system call) to write process accounting 5618c2ecf20Sopenharmony_ci information to a file: whenever a process exits, information about 5628c2ecf20Sopenharmony_ci that process will be appended to the file by the kernel. The 5638c2ecf20Sopenharmony_ci information includes things such as creation time, owning user, 5648c2ecf20Sopenharmony_ci command name, memory usage, controlling terminal etc. (the complete 5658c2ecf20Sopenharmony_ci list is in the struct acct in <file:include/linux/acct.h>). It is 5668c2ecf20Sopenharmony_ci up to the user level program to do useful things with this 5678c2ecf20Sopenharmony_ci information. This is generally a good idea, so say Y. 5688c2ecf20Sopenharmony_ci 5698c2ecf20Sopenharmony_ciconfig BSD_PROCESS_ACCT_V3 5708c2ecf20Sopenharmony_ci bool "BSD Process Accounting version 3 file format" 5718c2ecf20Sopenharmony_ci depends on BSD_PROCESS_ACCT 5728c2ecf20Sopenharmony_ci default n 5738c2ecf20Sopenharmony_ci help 5748c2ecf20Sopenharmony_ci If you say Y here, the process accounting information is written 5758c2ecf20Sopenharmony_ci in a new file format that also logs the process IDs of each 5768c2ecf20Sopenharmony_ci process and its parent. Note that this file format is incompatible 5778c2ecf20Sopenharmony_ci with previous v0/v1/v2 file formats, so you will need updated tools 5788c2ecf20Sopenharmony_ci for processing it. A preliminary version of these tools is available 5798c2ecf20Sopenharmony_ci at <http://www.gnu.org/software/acct/>. 5808c2ecf20Sopenharmony_ci 5818c2ecf20Sopenharmony_ciconfig TASKSTATS 5828c2ecf20Sopenharmony_ci bool "Export task/process statistics through netlink" 5838c2ecf20Sopenharmony_ci depends on NET 5848c2ecf20Sopenharmony_ci depends on MULTIUSER 5858c2ecf20Sopenharmony_ci default n 5868c2ecf20Sopenharmony_ci help 5878c2ecf20Sopenharmony_ci Export selected statistics for tasks/processes through the 5888c2ecf20Sopenharmony_ci generic netlink interface. Unlike BSD process accounting, the 5898c2ecf20Sopenharmony_ci statistics are available during the lifetime of tasks/processes as 5908c2ecf20Sopenharmony_ci responses to commands. Like BSD accounting, they are sent to user 5918c2ecf20Sopenharmony_ci space on task exit. 5928c2ecf20Sopenharmony_ci 5938c2ecf20Sopenharmony_ci Say N if unsure. 5948c2ecf20Sopenharmony_ci 5958c2ecf20Sopenharmony_ciconfig TASK_DELAY_ACCT 5968c2ecf20Sopenharmony_ci bool "Enable per-task delay accounting" 5978c2ecf20Sopenharmony_ci depends on TASKSTATS 5988c2ecf20Sopenharmony_ci select SCHED_INFO 5998c2ecf20Sopenharmony_ci help 6008c2ecf20Sopenharmony_ci Collect information on time spent by a task waiting for system 6018c2ecf20Sopenharmony_ci resources like cpu, synchronous block I/O completion and swapping 6028c2ecf20Sopenharmony_ci in pages. Such statistics can help in setting a task's priorities 6038c2ecf20Sopenharmony_ci relative to other tasks for cpu, io, rss limits etc. 6048c2ecf20Sopenharmony_ci 6058c2ecf20Sopenharmony_ci Say N if unsure. 6068c2ecf20Sopenharmony_ci 6078c2ecf20Sopenharmony_ciconfig TASK_XACCT 6088c2ecf20Sopenharmony_ci bool "Enable extended accounting over taskstats" 6098c2ecf20Sopenharmony_ci depends on TASKSTATS 6108c2ecf20Sopenharmony_ci help 6118c2ecf20Sopenharmony_ci Collect extended task accounting data and send the data 6128c2ecf20Sopenharmony_ci to userland for processing over the taskstats interface. 6138c2ecf20Sopenharmony_ci 6148c2ecf20Sopenharmony_ci Say N if unsure. 6158c2ecf20Sopenharmony_ci 6168c2ecf20Sopenharmony_ciconfig TASK_IO_ACCOUNTING 6178c2ecf20Sopenharmony_ci bool "Enable per-task storage I/O accounting" 6188c2ecf20Sopenharmony_ci depends on TASK_XACCT 6198c2ecf20Sopenharmony_ci help 6208c2ecf20Sopenharmony_ci Collect information on the number of bytes of storage I/O which this 6218c2ecf20Sopenharmony_ci task has caused. 6228c2ecf20Sopenharmony_ci 6238c2ecf20Sopenharmony_ci Say N if unsure. 6248c2ecf20Sopenharmony_ci 6258c2ecf20Sopenharmony_ciconfig PSI 6268c2ecf20Sopenharmony_ci bool "Pressure stall information tracking" 6278c2ecf20Sopenharmony_ci help 6288c2ecf20Sopenharmony_ci Collect metrics that indicate how overcommitted the CPU, memory, 6298c2ecf20Sopenharmony_ci and IO capacity are in the system. 6308c2ecf20Sopenharmony_ci 6318c2ecf20Sopenharmony_ci If you say Y here, the kernel will create /proc/pressure/ with the 6328c2ecf20Sopenharmony_ci pressure statistics files cpu, memory, and io. These will indicate 6338c2ecf20Sopenharmony_ci the share of walltime in which some or all tasks in the system are 6348c2ecf20Sopenharmony_ci delayed due to contention of the respective resource. 6358c2ecf20Sopenharmony_ci 6368c2ecf20Sopenharmony_ci In kernels with cgroup support, cgroups (cgroup2 only) will 6378c2ecf20Sopenharmony_ci have cpu.pressure, memory.pressure, and io.pressure files, 6388c2ecf20Sopenharmony_ci which aggregate pressure stalls for the grouped tasks only. 6398c2ecf20Sopenharmony_ci 6408c2ecf20Sopenharmony_ci For more details see Documentation/accounting/psi.rst. 6418c2ecf20Sopenharmony_ci 6428c2ecf20Sopenharmony_ci Say N if unsure. 6438c2ecf20Sopenharmony_ci 6448c2ecf20Sopenharmony_ciconfig PSI_DEFAULT_DISABLED 6458c2ecf20Sopenharmony_ci bool "Require boot parameter to enable pressure stall information tracking" 6468c2ecf20Sopenharmony_ci default n 6478c2ecf20Sopenharmony_ci depends on PSI 6488c2ecf20Sopenharmony_ci help 6498c2ecf20Sopenharmony_ci If set, pressure stall information tracking will be disabled 6508c2ecf20Sopenharmony_ci per default but can be enabled through passing psi=1 on the 6518c2ecf20Sopenharmony_ci kernel commandline during boot. 6528c2ecf20Sopenharmony_ci 6538c2ecf20Sopenharmony_ci This feature adds some code to the task wakeup and sleep 6548c2ecf20Sopenharmony_ci paths of the scheduler. The overhead is too low to affect 6558c2ecf20Sopenharmony_ci common scheduling-intense workloads in practice (such as 6568c2ecf20Sopenharmony_ci webservers, memcache), but it does show up in artificial 6578c2ecf20Sopenharmony_ci scheduler stress tests, such as hackbench. 6588c2ecf20Sopenharmony_ci 6598c2ecf20Sopenharmony_ci If you are paranoid and not sure what the kernel will be 6608c2ecf20Sopenharmony_ci used for, say Y. 6618c2ecf20Sopenharmony_ci 6628c2ecf20Sopenharmony_ci Say N if unsure. 6638c2ecf20Sopenharmony_ci 6648c2ecf20Sopenharmony_ciendmenu # "CPU/Task time and stats accounting" 6658c2ecf20Sopenharmony_ci 6668c2ecf20Sopenharmony_ciconfig CPU_ISOLATION 6678c2ecf20Sopenharmony_ci bool "CPU isolation" 6688c2ecf20Sopenharmony_ci depends on SMP || COMPILE_TEST 6698c2ecf20Sopenharmony_ci default y 6708c2ecf20Sopenharmony_ci help 6718c2ecf20Sopenharmony_ci Make sure that CPUs running critical tasks are not disturbed by 6728c2ecf20Sopenharmony_ci any source of "noise" such as unbound workqueues, timers, kthreads... 6738c2ecf20Sopenharmony_ci Unbound jobs get offloaded to housekeeping CPUs. This is driven by 6748c2ecf20Sopenharmony_ci the "isolcpus=" boot parameter. 6758c2ecf20Sopenharmony_ci 6768c2ecf20Sopenharmony_ci Say Y if unsure. 6778c2ecf20Sopenharmony_ci 6788c2ecf20Sopenharmony_ciconfig SCHED_RUNNING_AVG 6798c2ecf20Sopenharmony_ci bool "per-rq and per-cluster running average statistics" 6808c2ecf20Sopenharmony_ci default n 6818c2ecf20Sopenharmony_ci 6828c2ecf20Sopenharmony_ciconfig CPU_ISOLATION_OPT 6838c2ecf20Sopenharmony_ci bool "CPU isolation optimization" 6848c2ecf20Sopenharmony_ci depends on SMP 6858c2ecf20Sopenharmony_ci default n 6868c2ecf20Sopenharmony_ci help 6878c2ecf20Sopenharmony_ci This option enables cpu isolation optimization, which allows 6888c2ecf20Sopenharmony_ci to isolate cpu dynamically. The isolated cpu will be unavailable 6898c2ecf20Sopenharmony_ci to scheduler and load balancer, and all its non-pinned timers, 6908c2ecf20Sopenharmony_ci IRQs and tasks will be migrated to other cpus, only pinned 6918c2ecf20Sopenharmony_ci kthread and IRQS are still allowed to run, this achieves 6928c2ecf20Sopenharmony_ci similar effect as hotplug but at lower latency cost. 6938c2ecf20Sopenharmony_ci 6948c2ecf20Sopenharmony_ciconfig SCHED_CORE_CTRL 6958c2ecf20Sopenharmony_ci bool "Core control" 6968c2ecf20Sopenharmony_ci depends on CPU_ISOLATION_OPT 6978c2ecf20Sopenharmony_ci select SCHED_RUNNING_AVG 6988c2ecf20Sopenharmony_ci default n 6998c2ecf20Sopenharmony_ci help 7008c2ecf20Sopenharmony_ci This option enables the core control functionality in 7018c2ecf20Sopenharmony_ci the scheduler. Core control automatically isolate and 7028c2ecf20Sopenharmony_ci unisolate cores based on cpu load and utilization. 7038c2ecf20Sopenharmony_ci 7048c2ecf20Sopenharmony_cisource "kernel/rcu/Kconfig" 7058c2ecf20Sopenharmony_ci 7068c2ecf20Sopenharmony_ciconfig BUILD_BIN2C 7078c2ecf20Sopenharmony_ci bool 7088c2ecf20Sopenharmony_ci default n 7098c2ecf20Sopenharmony_ci 7108c2ecf20Sopenharmony_ciconfig IKCONFIG 7118c2ecf20Sopenharmony_ci tristate "Kernel .config support" 7128c2ecf20Sopenharmony_ci help 7138c2ecf20Sopenharmony_ci This option enables the complete Linux kernel ".config" file 7148c2ecf20Sopenharmony_ci contents to be saved in the kernel. It provides documentation 7158c2ecf20Sopenharmony_ci of which kernel options are used in a running kernel or in an 7168c2ecf20Sopenharmony_ci on-disk kernel. This information can be extracted from the kernel 7178c2ecf20Sopenharmony_ci image file with the script scripts/extract-ikconfig and used as 7188c2ecf20Sopenharmony_ci input to rebuild the current kernel or to build another kernel. 7198c2ecf20Sopenharmony_ci It can also be extracted from a running kernel by reading 7208c2ecf20Sopenharmony_ci /proc/config.gz if enabled (below). 7218c2ecf20Sopenharmony_ci 7228c2ecf20Sopenharmony_ciconfig IKCONFIG_PROC 7238c2ecf20Sopenharmony_ci bool "Enable access to .config through /proc/config.gz" 7248c2ecf20Sopenharmony_ci depends on IKCONFIG && PROC_FS 7258c2ecf20Sopenharmony_ci help 7268c2ecf20Sopenharmony_ci This option enables access to the kernel configuration file 7278c2ecf20Sopenharmony_ci through /proc/config.gz. 7288c2ecf20Sopenharmony_ci 7298c2ecf20Sopenharmony_ciconfig IKHEADERS 7308c2ecf20Sopenharmony_ci tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz" 7318c2ecf20Sopenharmony_ci depends on SYSFS 7328c2ecf20Sopenharmony_ci help 7338c2ecf20Sopenharmony_ci This option enables access to the in-kernel headers that are generated during 7348c2ecf20Sopenharmony_ci the build process. These can be used to build eBPF tracing programs, 7358c2ecf20Sopenharmony_ci or similar programs. If you build the headers as a module, a module called 7368c2ecf20Sopenharmony_ci kheaders.ko is built which can be loaded on-demand to get access to headers. 7378c2ecf20Sopenharmony_ci 7388c2ecf20Sopenharmony_ciconfig LOG_BUF_SHIFT 7398c2ecf20Sopenharmony_ci int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 7408c2ecf20Sopenharmony_ci range 12 25 if !H8300 7418c2ecf20Sopenharmony_ci range 12 19 if H8300 7428c2ecf20Sopenharmony_ci default 17 7438c2ecf20Sopenharmony_ci depends on PRINTK 7448c2ecf20Sopenharmony_ci help 7458c2ecf20Sopenharmony_ci Select the minimal kernel log buffer size as a power of 2. 7468c2ecf20Sopenharmony_ci The final size is affected by LOG_CPU_MAX_BUF_SHIFT config 7478c2ecf20Sopenharmony_ci parameter, see below. Any higher size also might be forced 7488c2ecf20Sopenharmony_ci by "log_buf_len" boot parameter. 7498c2ecf20Sopenharmony_ci 7508c2ecf20Sopenharmony_ci Examples: 7518c2ecf20Sopenharmony_ci 17 => 128 KB 7528c2ecf20Sopenharmony_ci 16 => 64 KB 7538c2ecf20Sopenharmony_ci 15 => 32 KB 7548c2ecf20Sopenharmony_ci 14 => 16 KB 7558c2ecf20Sopenharmony_ci 13 => 8 KB 7568c2ecf20Sopenharmony_ci 12 => 4 KB 7578c2ecf20Sopenharmony_ci 7588c2ecf20Sopenharmony_ciconfig LOG_CPU_MAX_BUF_SHIFT 7598c2ecf20Sopenharmony_ci int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)" 7608c2ecf20Sopenharmony_ci depends on SMP 7618c2ecf20Sopenharmony_ci range 0 21 7628c2ecf20Sopenharmony_ci default 12 if !BASE_SMALL 7638c2ecf20Sopenharmony_ci default 0 if BASE_SMALL 7648c2ecf20Sopenharmony_ci depends on PRINTK 7658c2ecf20Sopenharmony_ci help 7668c2ecf20Sopenharmony_ci This option allows to increase the default ring buffer size 7678c2ecf20Sopenharmony_ci according to the number of CPUs. The value defines the contribution 7688c2ecf20Sopenharmony_ci of each CPU as a power of 2. The used space is typically only few 7698c2ecf20Sopenharmony_ci lines however it might be much more when problems are reported, 7708c2ecf20Sopenharmony_ci e.g. backtraces. 7718c2ecf20Sopenharmony_ci 7728c2ecf20Sopenharmony_ci The increased size means that a new buffer has to be allocated and 7738c2ecf20Sopenharmony_ci the original static one is unused. It makes sense only on systems 7748c2ecf20Sopenharmony_ci with more CPUs. Therefore this value is used only when the sum of 7758c2ecf20Sopenharmony_ci contributions is greater than the half of the default kernel ring 7768c2ecf20Sopenharmony_ci buffer as defined by LOG_BUF_SHIFT. The default values are set 7778c2ecf20Sopenharmony_ci so that more than 16 CPUs are needed to trigger the allocation. 7788c2ecf20Sopenharmony_ci 7798c2ecf20Sopenharmony_ci Also this option is ignored when "log_buf_len" kernel parameter is 7808c2ecf20Sopenharmony_ci used as it forces an exact (power of two) size of the ring buffer. 7818c2ecf20Sopenharmony_ci 7828c2ecf20Sopenharmony_ci The number of possible CPUs is used for this computation ignoring 7838c2ecf20Sopenharmony_ci hotplugging making the computation optimal for the worst case 7848c2ecf20Sopenharmony_ci scenario while allowing a simple algorithm to be used from bootup. 7858c2ecf20Sopenharmony_ci 7868c2ecf20Sopenharmony_ci Examples shift values and their meaning: 7878c2ecf20Sopenharmony_ci 17 => 128 KB for each CPU 7888c2ecf20Sopenharmony_ci 16 => 64 KB for each CPU 7898c2ecf20Sopenharmony_ci 15 => 32 KB for each CPU 7908c2ecf20Sopenharmony_ci 14 => 16 KB for each CPU 7918c2ecf20Sopenharmony_ci 13 => 8 KB for each CPU 7928c2ecf20Sopenharmony_ci 12 => 4 KB for each CPU 7938c2ecf20Sopenharmony_ci 7948c2ecf20Sopenharmony_ciconfig PRINTK_SAFE_LOG_BUF_SHIFT 7958c2ecf20Sopenharmony_ci int "Temporary per-CPU printk log buffer size (12 => 4KB, 13 => 8KB)" 7968c2ecf20Sopenharmony_ci range 10 21 7978c2ecf20Sopenharmony_ci default 13 7988c2ecf20Sopenharmony_ci depends on PRINTK 7998c2ecf20Sopenharmony_ci help 8008c2ecf20Sopenharmony_ci Select the size of an alternate printk per-CPU buffer where messages 8018c2ecf20Sopenharmony_ci printed from usafe contexts are temporary stored. One example would 8028c2ecf20Sopenharmony_ci be NMI messages, another one - printk recursion. The messages are 8038c2ecf20Sopenharmony_ci copied to the main log buffer in a safe context to avoid a deadlock. 8048c2ecf20Sopenharmony_ci The value defines the size as a power of 2. 8058c2ecf20Sopenharmony_ci 8068c2ecf20Sopenharmony_ci Those messages are rare and limited. The largest one is when 8078c2ecf20Sopenharmony_ci a backtrace is printed. It usually fits into 4KB. Select 8088c2ecf20Sopenharmony_ci 8KB if you want to be on the safe side. 8098c2ecf20Sopenharmony_ci 8108c2ecf20Sopenharmony_ci Examples: 8118c2ecf20Sopenharmony_ci 17 => 128 KB for each CPU 8128c2ecf20Sopenharmony_ci 16 => 64 KB for each CPU 8138c2ecf20Sopenharmony_ci 15 => 32 KB for each CPU 8148c2ecf20Sopenharmony_ci 14 => 16 KB for each CPU 8158c2ecf20Sopenharmony_ci 13 => 8 KB for each CPU 8168c2ecf20Sopenharmony_ci 12 => 4 KB for each CPU 8178c2ecf20Sopenharmony_ci 8188c2ecf20Sopenharmony_ci# 8198c2ecf20Sopenharmony_ci# Architectures with an unreliable sched_clock() should select this: 8208c2ecf20Sopenharmony_ci# 8218c2ecf20Sopenharmony_ciconfig HAVE_UNSTABLE_SCHED_CLOCK 8228c2ecf20Sopenharmony_ci bool 8238c2ecf20Sopenharmony_ci 8248c2ecf20Sopenharmony_ciconfig GENERIC_SCHED_CLOCK 8258c2ecf20Sopenharmony_ci bool 8268c2ecf20Sopenharmony_ci 8278c2ecf20Sopenharmony_cimenu "Scheduler features" 8288c2ecf20Sopenharmony_ci 8298c2ecf20Sopenharmony_ciconfig UCLAMP_TASK 8308c2ecf20Sopenharmony_ci bool "Enable utilization clamping for RT/FAIR tasks" 8318c2ecf20Sopenharmony_ci depends on CPU_FREQ_GOV_SCHEDUTIL 8328c2ecf20Sopenharmony_ci help 8338c2ecf20Sopenharmony_ci This feature enables the scheduler to track the clamped utilization 8348c2ecf20Sopenharmony_ci of each CPU based on RUNNABLE tasks scheduled on that CPU. 8358c2ecf20Sopenharmony_ci 8368c2ecf20Sopenharmony_ci With this option, the user can specify the min and max CPU 8378c2ecf20Sopenharmony_ci utilization allowed for RUNNABLE tasks. The max utilization defines 8388c2ecf20Sopenharmony_ci the maximum frequency a task should use while the min utilization 8398c2ecf20Sopenharmony_ci defines the minimum frequency it should use. 8408c2ecf20Sopenharmony_ci 8418c2ecf20Sopenharmony_ci Both min and max utilization clamp values are hints to the scheduler, 8428c2ecf20Sopenharmony_ci aiming at improving its frequency selection policy, but they do not 8438c2ecf20Sopenharmony_ci enforce or grant any specific bandwidth for tasks. 8448c2ecf20Sopenharmony_ci 8458c2ecf20Sopenharmony_ci If in doubt, say N. 8468c2ecf20Sopenharmony_ci 8478c2ecf20Sopenharmony_ciconfig UCLAMP_BUCKETS_COUNT 8488c2ecf20Sopenharmony_ci int "Number of supported utilization clamp buckets" 8498c2ecf20Sopenharmony_ci range 5 20 8508c2ecf20Sopenharmony_ci default 5 8518c2ecf20Sopenharmony_ci depends on UCLAMP_TASK 8528c2ecf20Sopenharmony_ci help 8538c2ecf20Sopenharmony_ci Defines the number of clamp buckets to use. The range of each bucket 8548c2ecf20Sopenharmony_ci will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the 8558c2ecf20Sopenharmony_ci number of clamp buckets the finer their granularity and the higher 8568c2ecf20Sopenharmony_ci the precision of clamping aggregation and tracking at run-time. 8578c2ecf20Sopenharmony_ci 8588c2ecf20Sopenharmony_ci For example, with the minimum configuration value we will have 5 8598c2ecf20Sopenharmony_ci clamp buckets tracking 20% utilization each. A 25% boosted tasks will 8608c2ecf20Sopenharmony_ci be refcounted in the [20..39]% bucket and will set the bucket clamp 8618c2ecf20Sopenharmony_ci effective value to 25%. 8628c2ecf20Sopenharmony_ci If a second 30% boosted task should be co-scheduled on the same CPU, 8638c2ecf20Sopenharmony_ci that task will be refcounted in the same bucket of the first task and 8648c2ecf20Sopenharmony_ci it will boost the bucket clamp effective value to 30%. 8658c2ecf20Sopenharmony_ci The clamp effective value of a bucket is reset to its nominal value 8668c2ecf20Sopenharmony_ci (20% in the example above) when there are no more tasks refcounted in 8678c2ecf20Sopenharmony_ci that bucket. 8688c2ecf20Sopenharmony_ci 8698c2ecf20Sopenharmony_ci An additional boost/capping margin can be added to some tasks. In the 8708c2ecf20Sopenharmony_ci example above the 25% task will be boosted to 30% until it exits the 8718c2ecf20Sopenharmony_ci CPU. If that should be considered not acceptable on certain systems, 8728c2ecf20Sopenharmony_ci it's always possible to reduce the margin by increasing the number of 8738c2ecf20Sopenharmony_ci clamp buckets to trade off used memory for run-time tracking 8748c2ecf20Sopenharmony_ci precision. 8758c2ecf20Sopenharmony_ci 8768c2ecf20Sopenharmony_ci If in doubt, use the default value. 8778c2ecf20Sopenharmony_ci 8788c2ecf20Sopenharmony_ciconfig SCHED_LATENCY_NICE 8798c2ecf20Sopenharmony_ci bool "Enable latency feature for FAIR tasks" 8808c2ecf20Sopenharmony_ci default n 8818c2ecf20Sopenharmony_ci help 8828c2ecf20Sopenharmony_ci This feature use latency nice priority to decide if a cfs task can 8838c2ecf20Sopenharmony_ci preempt the current running task. 8848c2ecf20Sopenharmony_ci 8858c2ecf20Sopenharmony_cisource "kernel/sched/rtg/Kconfig" 8868c2ecf20Sopenharmony_ci 8878c2ecf20Sopenharmony_ciconfig SCHED_EAS 8888c2ecf20Sopenharmony_ci bool "EAS scheduler optimization" 8898c2ecf20Sopenharmony_ci default n 8908c2ecf20Sopenharmony_ci help 8918c2ecf20Sopenharmony_ci Check and migrate the CFS process to a more suitable CPU in the tick. 8928c2ecf20Sopenharmony_ci 8938c2ecf20Sopenharmony_ciconfig SCHED_RT_CAS 8948c2ecf20Sopenharmony_ci bool "rt-cas optimization" 8958c2ecf20Sopenharmony_ci depends on SCHED_EAS 8968c2ecf20Sopenharmony_ci default n 8978c2ecf20Sopenharmony_ci help 8988c2ecf20Sopenharmony_ci RT task detects capacity during CPU selection 8998c2ecf20Sopenharmony_ci 9008c2ecf20Sopenharmony_ciconfig SCHED_RT_ACTIVE_LB 9018c2ecf20Sopenharmony_ci bool "RT Capacity Aware Misfit Task" 9028c2ecf20Sopenharmony_ci depends on SCHED_EAS 9038c2ecf20Sopenharmony_ci default n 9048c2ecf20Sopenharmony_ci help 9058c2ecf20Sopenharmony_ci Check and migrate the RT process to a more suitable CPU in the tick. 9068c2ecf20Sopenharmony_ci 9078c2ecf20Sopenharmony_ciendmenu 9088c2ecf20Sopenharmony_ci 9098c2ecf20Sopenharmony_ci# 9108c2ecf20Sopenharmony_ci# For architectures that want to enable the support for NUMA-affine scheduler 9118c2ecf20Sopenharmony_ci# balancing logic: 9128c2ecf20Sopenharmony_ci# 9138c2ecf20Sopenharmony_ciconfig ARCH_SUPPORTS_NUMA_BALANCING 9148c2ecf20Sopenharmony_ci bool 9158c2ecf20Sopenharmony_ci 9168c2ecf20Sopenharmony_ci# 9178c2ecf20Sopenharmony_ci# For architectures that prefer to flush all TLBs after a number of pages 9188c2ecf20Sopenharmony_ci# are unmapped instead of sending one IPI per page to flush. The architecture 9198c2ecf20Sopenharmony_ci# must provide guarantees on what happens if a clean TLB cache entry is 9208c2ecf20Sopenharmony_ci# written after the unmap. Details are in mm/rmap.c near the check for 9218c2ecf20Sopenharmony_ci# should_defer_flush. The architecture should also consider if the full flush 9228c2ecf20Sopenharmony_ci# and the refill costs are offset by the savings of sending fewer IPIs. 9238c2ecf20Sopenharmony_ciconfig ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 9248c2ecf20Sopenharmony_ci bool 9258c2ecf20Sopenharmony_ci 9268c2ecf20Sopenharmony_ciconfig CC_HAS_INT128 9278c2ecf20Sopenharmony_ci def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT 9288c2ecf20Sopenharmony_ci 9298c2ecf20Sopenharmony_ci# 9308c2ecf20Sopenharmony_ci# For architectures that know their GCC __int128 support is sound 9318c2ecf20Sopenharmony_ci# 9328c2ecf20Sopenharmony_ciconfig ARCH_SUPPORTS_INT128 9338c2ecf20Sopenharmony_ci bool 9348c2ecf20Sopenharmony_ci 9358c2ecf20Sopenharmony_ci# For architectures that (ab)use NUMA to represent different memory regions 9368c2ecf20Sopenharmony_ci# all cpu-local but of different latencies, such as SuperH. 9378c2ecf20Sopenharmony_ci# 9388c2ecf20Sopenharmony_ciconfig ARCH_WANT_NUMA_VARIABLE_LOCALITY 9398c2ecf20Sopenharmony_ci bool 9408c2ecf20Sopenharmony_ci 9418c2ecf20Sopenharmony_ciconfig NUMA_BALANCING 9428c2ecf20Sopenharmony_ci bool "Memory placement aware NUMA scheduler" 9438c2ecf20Sopenharmony_ci depends on ARCH_SUPPORTS_NUMA_BALANCING 9448c2ecf20Sopenharmony_ci depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY 9458c2ecf20Sopenharmony_ci depends on SMP && NUMA && MIGRATION 9468c2ecf20Sopenharmony_ci help 9478c2ecf20Sopenharmony_ci This option adds support for automatic NUMA aware memory/task placement. 9488c2ecf20Sopenharmony_ci The mechanism is quite primitive and is based on migrating memory when 9498c2ecf20Sopenharmony_ci it has references to the node the task is running on. 9508c2ecf20Sopenharmony_ci 9518c2ecf20Sopenharmony_ci This system will be inactive on UMA systems. 9528c2ecf20Sopenharmony_ci 9538c2ecf20Sopenharmony_ciconfig NUMA_BALANCING_DEFAULT_ENABLED 9548c2ecf20Sopenharmony_ci bool "Automatically enable NUMA aware memory/task placement" 9558c2ecf20Sopenharmony_ci default y 9568c2ecf20Sopenharmony_ci depends on NUMA_BALANCING 9578c2ecf20Sopenharmony_ci help 9588c2ecf20Sopenharmony_ci If set, automatic NUMA balancing will be enabled if running on a NUMA 9598c2ecf20Sopenharmony_ci machine. 9608c2ecf20Sopenharmony_ci 9618c2ecf20Sopenharmony_cimenuconfig CGROUPS 9628c2ecf20Sopenharmony_ci bool "Control Group support" 9638c2ecf20Sopenharmony_ci select KERNFS 9648c2ecf20Sopenharmony_ci help 9658c2ecf20Sopenharmony_ci This option adds support for grouping sets of processes together, for 9668c2ecf20Sopenharmony_ci use with process control subsystems such as Cpusets, CFS, memory 9678c2ecf20Sopenharmony_ci controls or device isolation. 9688c2ecf20Sopenharmony_ci See 9698c2ecf20Sopenharmony_ci - Documentation/scheduler/sched-design-CFS.rst (CFS) 9708c2ecf20Sopenharmony_ci - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation 9718c2ecf20Sopenharmony_ci and resource control) 9728c2ecf20Sopenharmony_ci 9738c2ecf20Sopenharmony_ci Say N if unsure. 9748c2ecf20Sopenharmony_ci 9758c2ecf20Sopenharmony_ciif CGROUPS 9768c2ecf20Sopenharmony_ci 9778c2ecf20Sopenharmony_ciconfig PAGE_COUNTER 9788c2ecf20Sopenharmony_ci bool 9798c2ecf20Sopenharmony_ci 9808c2ecf20Sopenharmony_ciconfig MEMCG 9818c2ecf20Sopenharmony_ci bool "Memory controller" 9828c2ecf20Sopenharmony_ci select PAGE_COUNTER 9838c2ecf20Sopenharmony_ci select EVENTFD 9848c2ecf20Sopenharmony_ci help 9858c2ecf20Sopenharmony_ci Provides control over the memory footprint of tasks in a cgroup. 9868c2ecf20Sopenharmony_ci 9878c2ecf20Sopenharmony_ciconfig MEMCG_SWAP 9888c2ecf20Sopenharmony_ci bool 9898c2ecf20Sopenharmony_ci depends on MEMCG && SWAP 9908c2ecf20Sopenharmony_ci default y 9918c2ecf20Sopenharmony_ci 9928c2ecf20Sopenharmony_ciconfig MEMCG_KMEM 9938c2ecf20Sopenharmony_ci bool 9948c2ecf20Sopenharmony_ci depends on MEMCG && !SLOB 9958c2ecf20Sopenharmony_ci default y 9968c2ecf20Sopenharmony_ci 9978c2ecf20Sopenharmony_ciconfig BLK_CGROUP 9988c2ecf20Sopenharmony_ci bool "IO controller" 9998c2ecf20Sopenharmony_ci depends on BLOCK 10008c2ecf20Sopenharmony_ci default n 10018c2ecf20Sopenharmony_ci help 10028c2ecf20Sopenharmony_ci Generic block IO controller cgroup interface. This is the common 10038c2ecf20Sopenharmony_ci cgroup interface which should be used by various IO controlling 10048c2ecf20Sopenharmony_ci policies. 10058c2ecf20Sopenharmony_ci 10068c2ecf20Sopenharmony_ci Currently, CFQ IO scheduler uses it to recognize task groups and 10078c2ecf20Sopenharmony_ci control disk bandwidth allocation (proportional time slice allocation) 10088c2ecf20Sopenharmony_ci to such task groups. It is also used by bio throttling logic in 10098c2ecf20Sopenharmony_ci block layer to implement upper limit in IO rates on a device. 10108c2ecf20Sopenharmony_ci 10118c2ecf20Sopenharmony_ci This option only enables generic Block IO controller infrastructure. 10128c2ecf20Sopenharmony_ci One needs to also enable actual IO controlling logic/policy. For 10138c2ecf20Sopenharmony_ci enabling proportional weight division of disk bandwidth in CFQ, set 10148c2ecf20Sopenharmony_ci CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set 10158c2ecf20Sopenharmony_ci CONFIG_BLK_DEV_THROTTLING=y. 10168c2ecf20Sopenharmony_ci 10178c2ecf20Sopenharmony_ci See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 10188c2ecf20Sopenharmony_ci 10198c2ecf20Sopenharmony_ciconfig CGROUP_WRITEBACK 10208c2ecf20Sopenharmony_ci bool 10218c2ecf20Sopenharmony_ci depends on MEMCG && BLK_CGROUP 10228c2ecf20Sopenharmony_ci default y 10238c2ecf20Sopenharmony_ci 10248c2ecf20Sopenharmony_cimenuconfig CGROUP_SCHED 10258c2ecf20Sopenharmony_ci bool "CPU controller" 10268c2ecf20Sopenharmony_ci default n 10278c2ecf20Sopenharmony_ci help 10288c2ecf20Sopenharmony_ci This feature lets CPU scheduler recognize task groups and control CPU 10298c2ecf20Sopenharmony_ci bandwidth allocation to such task groups. It uses cgroups to group 10308c2ecf20Sopenharmony_ci tasks. 10318c2ecf20Sopenharmony_ci 10328c2ecf20Sopenharmony_ciif CGROUP_SCHED 10338c2ecf20Sopenharmony_ciconfig FAIR_GROUP_SCHED 10348c2ecf20Sopenharmony_ci bool "Group scheduling for SCHED_OTHER" 10358c2ecf20Sopenharmony_ci depends on CGROUP_SCHED 10368c2ecf20Sopenharmony_ci default CGROUP_SCHED 10378c2ecf20Sopenharmony_ci 10388c2ecf20Sopenharmony_ciconfig CFS_BANDWIDTH 10398c2ecf20Sopenharmony_ci bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED" 10408c2ecf20Sopenharmony_ci depends on FAIR_GROUP_SCHED 10418c2ecf20Sopenharmony_ci default n 10428c2ecf20Sopenharmony_ci help 10438c2ecf20Sopenharmony_ci This option allows users to define CPU bandwidth rates (limits) for 10448c2ecf20Sopenharmony_ci tasks running within the fair group scheduler. Groups with no limit 10458c2ecf20Sopenharmony_ci set are considered to be unconstrained and will run with no 10468c2ecf20Sopenharmony_ci restriction. 10478c2ecf20Sopenharmony_ci See Documentation/scheduler/sched-bwc.rst for more information. 10488c2ecf20Sopenharmony_ci 10498c2ecf20Sopenharmony_ciconfig RT_GROUP_SCHED 10508c2ecf20Sopenharmony_ci bool "Group scheduling for SCHED_RR/FIFO" 10518c2ecf20Sopenharmony_ci depends on CGROUP_SCHED 10528c2ecf20Sopenharmony_ci default n 10538c2ecf20Sopenharmony_ci help 10548c2ecf20Sopenharmony_ci This feature lets you explicitly allocate real CPU bandwidth 10558c2ecf20Sopenharmony_ci to task groups. If enabled, it will also make it impossible to 10568c2ecf20Sopenharmony_ci schedule realtime tasks for non-root users until you allocate 10578c2ecf20Sopenharmony_ci realtime bandwidth for them. 10588c2ecf20Sopenharmony_ci See Documentation/scheduler/sched-rt-group.rst for more information. 10598c2ecf20Sopenharmony_ci 10608c2ecf20Sopenharmony_ciendif #CGROUP_SCHED 10618c2ecf20Sopenharmony_ci 10628c2ecf20Sopenharmony_ciconfig UCLAMP_TASK_GROUP 10638c2ecf20Sopenharmony_ci bool "Utilization clamping per group of tasks" 10648c2ecf20Sopenharmony_ci depends on CGROUP_SCHED 10658c2ecf20Sopenharmony_ci depends on UCLAMP_TASK 10668c2ecf20Sopenharmony_ci default n 10678c2ecf20Sopenharmony_ci help 10688c2ecf20Sopenharmony_ci This feature enables the scheduler to track the clamped utilization 10698c2ecf20Sopenharmony_ci of each CPU based on RUNNABLE tasks currently scheduled on that CPU. 10708c2ecf20Sopenharmony_ci 10718c2ecf20Sopenharmony_ci When this option is enabled, the user can specify a min and max 10728c2ecf20Sopenharmony_ci CPU bandwidth which is allowed for each single task in a group. 10738c2ecf20Sopenharmony_ci The max bandwidth allows to clamp the maximum frequency a task 10748c2ecf20Sopenharmony_ci can use, while the min bandwidth allows to define a minimum 10758c2ecf20Sopenharmony_ci frequency a task will always use. 10768c2ecf20Sopenharmony_ci 10778c2ecf20Sopenharmony_ci When task group based utilization clamping is enabled, an eventually 10788c2ecf20Sopenharmony_ci specified task-specific clamp value is constrained by the cgroup 10798c2ecf20Sopenharmony_ci specified clamp value. Both minimum and maximum task clamping cannot 10808c2ecf20Sopenharmony_ci be bigger than the corresponding clamping defined at task group level. 10818c2ecf20Sopenharmony_ci 10828c2ecf20Sopenharmony_ci If in doubt, say N. 10838c2ecf20Sopenharmony_ci 10848c2ecf20Sopenharmony_ciconfig CGROUP_PIDS 10858c2ecf20Sopenharmony_ci bool "PIDs controller" 10868c2ecf20Sopenharmony_ci help 10878c2ecf20Sopenharmony_ci Provides enforcement of process number limits in the scope of a 10888c2ecf20Sopenharmony_ci cgroup. Any attempt to fork more processes than is allowed in the 10898c2ecf20Sopenharmony_ci cgroup will fail. PIDs are fundamentally a global resource because it 10908c2ecf20Sopenharmony_ci is fairly trivial to reach PID exhaustion before you reach even a 10918c2ecf20Sopenharmony_ci conservative kmemcg limit. As a result, it is possible to grind a 10928c2ecf20Sopenharmony_ci system to halt without being limited by other cgroup policies. The 10938c2ecf20Sopenharmony_ci PIDs controller is designed to stop this from happening. 10948c2ecf20Sopenharmony_ci 10958c2ecf20Sopenharmony_ci It should be noted that organisational operations (such as attaching 10968c2ecf20Sopenharmony_ci to a cgroup hierarchy) will *not* be blocked by the PIDs controller, 10978c2ecf20Sopenharmony_ci since the PIDs limit only affects a process's ability to fork, not to 10988c2ecf20Sopenharmony_ci attach to a cgroup. 10998c2ecf20Sopenharmony_ci 11008c2ecf20Sopenharmony_ciconfig CGROUP_RDMA 11018c2ecf20Sopenharmony_ci bool "RDMA controller" 11028c2ecf20Sopenharmony_ci help 11038c2ecf20Sopenharmony_ci Provides enforcement of RDMA resources defined by IB stack. 11048c2ecf20Sopenharmony_ci It is fairly easy for consumers to exhaust RDMA resources, which 11058c2ecf20Sopenharmony_ci can result into resource unavailability to other consumers. 11068c2ecf20Sopenharmony_ci RDMA controller is designed to stop this from happening. 11078c2ecf20Sopenharmony_ci Attaching processes with active RDMA resources to the cgroup 11088c2ecf20Sopenharmony_ci hierarchy is allowed even if can cross the hierarchy's limit. 11098c2ecf20Sopenharmony_ci 11108c2ecf20Sopenharmony_ciconfig CGROUP_FREEZER 11118c2ecf20Sopenharmony_ci bool "Freezer controller" 11128c2ecf20Sopenharmony_ci help 11138c2ecf20Sopenharmony_ci Provides a way to freeze and unfreeze all tasks in a 11148c2ecf20Sopenharmony_ci cgroup. 11158c2ecf20Sopenharmony_ci 11168c2ecf20Sopenharmony_ci This option affects the ORIGINAL cgroup interface. The cgroup2 memory 11178c2ecf20Sopenharmony_ci controller includes important in-kernel memory consumers per default. 11188c2ecf20Sopenharmony_ci 11198c2ecf20Sopenharmony_ci If you're using cgroup2, say N. 11208c2ecf20Sopenharmony_ci 11218c2ecf20Sopenharmony_ciconfig CGROUP_HUGETLB 11228c2ecf20Sopenharmony_ci bool "HugeTLB controller" 11238c2ecf20Sopenharmony_ci depends on HUGETLB_PAGE 11248c2ecf20Sopenharmony_ci select PAGE_COUNTER 11258c2ecf20Sopenharmony_ci default n 11268c2ecf20Sopenharmony_ci help 11278c2ecf20Sopenharmony_ci Provides a cgroup controller for HugeTLB pages. 11288c2ecf20Sopenharmony_ci When you enable this, you can put a per cgroup limit on HugeTLB usage. 11298c2ecf20Sopenharmony_ci The limit is enforced during page fault. Since HugeTLB doesn't 11308c2ecf20Sopenharmony_ci support page reclaim, enforcing the limit at page fault time implies 11318c2ecf20Sopenharmony_ci that, the application will get SIGBUS signal if it tries to access 11328c2ecf20Sopenharmony_ci HugeTLB pages beyond its limit. This requires the application to know 11338c2ecf20Sopenharmony_ci beforehand how much HugeTLB pages it would require for its use. The 11348c2ecf20Sopenharmony_ci control group is tracked in the third page lru pointer. This means 11358c2ecf20Sopenharmony_ci that we cannot use the controller with huge page less than 3 pages. 11368c2ecf20Sopenharmony_ci 11378c2ecf20Sopenharmony_ciconfig CPUSETS 11388c2ecf20Sopenharmony_ci bool "Cpuset controller" 11398c2ecf20Sopenharmony_ci depends on SMP 11408c2ecf20Sopenharmony_ci help 11418c2ecf20Sopenharmony_ci This option will let you create and manage CPUSETs which 11428c2ecf20Sopenharmony_ci allow dynamically partitioning a system into sets of CPUs and 11438c2ecf20Sopenharmony_ci Memory Nodes and assigning tasks to run only within those sets. 11448c2ecf20Sopenharmony_ci This is primarily useful on large SMP or NUMA systems. 11458c2ecf20Sopenharmony_ci 11468c2ecf20Sopenharmony_ci Say N if unsure. 11478c2ecf20Sopenharmony_ci 11488c2ecf20Sopenharmony_ciconfig PROC_PID_CPUSET 11498c2ecf20Sopenharmony_ci bool "Include legacy /proc/<pid>/cpuset file" 11508c2ecf20Sopenharmony_ci depends on CPUSETS 11518c2ecf20Sopenharmony_ci default y 11528c2ecf20Sopenharmony_ci 11538c2ecf20Sopenharmony_ciconfig CGROUP_DEVICE 11548c2ecf20Sopenharmony_ci bool "Device controller" 11558c2ecf20Sopenharmony_ci help 11568c2ecf20Sopenharmony_ci Provides a cgroup controller implementing whitelists for 11578c2ecf20Sopenharmony_ci devices which a process in the cgroup can mknod or open. 11588c2ecf20Sopenharmony_ci 11598c2ecf20Sopenharmony_ciconfig CGROUP_CPUACCT 11608c2ecf20Sopenharmony_ci bool "Simple CPU accounting controller" 11618c2ecf20Sopenharmony_ci help 11628c2ecf20Sopenharmony_ci Provides a simple controller for monitoring the 11638c2ecf20Sopenharmony_ci total CPU consumed by the tasks in a cgroup. 11648c2ecf20Sopenharmony_ci 11658c2ecf20Sopenharmony_ciconfig CGROUP_PERF 11668c2ecf20Sopenharmony_ci bool "Perf controller" 11678c2ecf20Sopenharmony_ci depends on PERF_EVENTS 11688c2ecf20Sopenharmony_ci help 11698c2ecf20Sopenharmony_ci This option extends the perf per-cpu mode to restrict monitoring 11708c2ecf20Sopenharmony_ci to threads which belong to the cgroup specified and run on the 11718c2ecf20Sopenharmony_ci designated cpu. Or this can be used to have cgroup ID in samples 11728c2ecf20Sopenharmony_ci so that it can monitor performance events among cgroups. 11738c2ecf20Sopenharmony_ci 11748c2ecf20Sopenharmony_ci Say N if unsure. 11758c2ecf20Sopenharmony_ci 11768c2ecf20Sopenharmony_ciconfig CGROUP_BPF 11778c2ecf20Sopenharmony_ci bool "Support for eBPF programs attached to cgroups" 11788c2ecf20Sopenharmony_ci depends on BPF_SYSCALL 11798c2ecf20Sopenharmony_ci select SOCK_CGROUP_DATA 11808c2ecf20Sopenharmony_ci help 11818c2ecf20Sopenharmony_ci Allow attaching eBPF programs to a cgroup using the bpf(2) 11828c2ecf20Sopenharmony_ci syscall command BPF_PROG_ATTACH. 11838c2ecf20Sopenharmony_ci 11848c2ecf20Sopenharmony_ci In which context these programs are accessed depends on the type 11858c2ecf20Sopenharmony_ci of attachment. For instance, programs that are attached using 11868c2ecf20Sopenharmony_ci BPF_CGROUP_INET_INGRESS will be executed on the ingress path of 11878c2ecf20Sopenharmony_ci inet sockets. 11888c2ecf20Sopenharmony_ci 11898c2ecf20Sopenharmony_ciconfig CGROUP_DEBUG 11908c2ecf20Sopenharmony_ci bool "Debug controller" 11918c2ecf20Sopenharmony_ci default n 11928c2ecf20Sopenharmony_ci depends on DEBUG_KERNEL 11938c2ecf20Sopenharmony_ci help 11948c2ecf20Sopenharmony_ci This option enables a simple controller that exports 11958c2ecf20Sopenharmony_ci debugging information about the cgroups framework. This 11968c2ecf20Sopenharmony_ci controller is for control cgroup debugging only. Its 11978c2ecf20Sopenharmony_ci interfaces are not stable. 11988c2ecf20Sopenharmony_ci 11998c2ecf20Sopenharmony_ci Say N. 12008c2ecf20Sopenharmony_ci 12018c2ecf20Sopenharmony_ciconfig SOCK_CGROUP_DATA 12028c2ecf20Sopenharmony_ci bool 12038c2ecf20Sopenharmony_ci default n 12048c2ecf20Sopenharmony_ci 12058c2ecf20Sopenharmony_ciendif # CGROUPS 12068c2ecf20Sopenharmony_ci 12078c2ecf20Sopenharmony_cimenuconfig NAMESPACES 12088c2ecf20Sopenharmony_ci bool "Namespaces support" if EXPERT 12098c2ecf20Sopenharmony_ci depends on MULTIUSER 12108c2ecf20Sopenharmony_ci default !EXPERT 12118c2ecf20Sopenharmony_ci help 12128c2ecf20Sopenharmony_ci Provides the way to make tasks work with different objects using 12138c2ecf20Sopenharmony_ci the same id. For example same IPC id may refer to different objects 12148c2ecf20Sopenharmony_ci or same user id or pid may refer to different tasks when used in 12158c2ecf20Sopenharmony_ci different namespaces. 12168c2ecf20Sopenharmony_ci 12178c2ecf20Sopenharmony_ciif NAMESPACES 12188c2ecf20Sopenharmony_ci 12198c2ecf20Sopenharmony_ciconfig UTS_NS 12208c2ecf20Sopenharmony_ci bool "UTS namespace" 12218c2ecf20Sopenharmony_ci default y 12228c2ecf20Sopenharmony_ci help 12238c2ecf20Sopenharmony_ci In this namespace tasks see different info provided with the 12248c2ecf20Sopenharmony_ci uname() system call 12258c2ecf20Sopenharmony_ci 12268c2ecf20Sopenharmony_ciconfig TIME_NS 12278c2ecf20Sopenharmony_ci bool "TIME namespace" 12288c2ecf20Sopenharmony_ci depends on GENERIC_VDSO_TIME_NS 12298c2ecf20Sopenharmony_ci default y 12308c2ecf20Sopenharmony_ci help 12318c2ecf20Sopenharmony_ci In this namespace boottime and monotonic clocks can be set. 12328c2ecf20Sopenharmony_ci The time will keep going with the same pace. 12338c2ecf20Sopenharmony_ci 12348c2ecf20Sopenharmony_ciconfig IPC_NS 12358c2ecf20Sopenharmony_ci bool "IPC namespace" 12368c2ecf20Sopenharmony_ci depends on (SYSVIPC || POSIX_MQUEUE) 12378c2ecf20Sopenharmony_ci default y 12388c2ecf20Sopenharmony_ci help 12398c2ecf20Sopenharmony_ci In this namespace tasks work with IPC ids which correspond to 12408c2ecf20Sopenharmony_ci different IPC objects in different namespaces. 12418c2ecf20Sopenharmony_ci 12428c2ecf20Sopenharmony_ciconfig USER_NS 12438c2ecf20Sopenharmony_ci bool "User namespace" 12448c2ecf20Sopenharmony_ci default n 12458c2ecf20Sopenharmony_ci help 12468c2ecf20Sopenharmony_ci This allows containers, i.e. vservers, to use user namespaces 12478c2ecf20Sopenharmony_ci to provide different user info for different servers. 12488c2ecf20Sopenharmony_ci 12498c2ecf20Sopenharmony_ci When user namespaces are enabled in the kernel it is 12508c2ecf20Sopenharmony_ci recommended that the MEMCG option also be enabled and that 12518c2ecf20Sopenharmony_ci user-space use the memory control groups to limit the amount 12528c2ecf20Sopenharmony_ci of memory a memory unprivileged users can use. 12538c2ecf20Sopenharmony_ci 12548c2ecf20Sopenharmony_ci If unsure, say N. 12558c2ecf20Sopenharmony_ci 12568c2ecf20Sopenharmony_ciconfig PID_NS 12578c2ecf20Sopenharmony_ci bool "PID Namespaces" 12588c2ecf20Sopenharmony_ci default y 12598c2ecf20Sopenharmony_ci help 12608c2ecf20Sopenharmony_ci Support process id namespaces. This allows having multiple 12618c2ecf20Sopenharmony_ci processes with the same pid as long as they are in different 12628c2ecf20Sopenharmony_ci pid namespaces. This is a building block of containers. 12638c2ecf20Sopenharmony_ci 12648c2ecf20Sopenharmony_ciconfig NET_NS 12658c2ecf20Sopenharmony_ci bool "Network namespace" 12668c2ecf20Sopenharmony_ci depends on NET 12678c2ecf20Sopenharmony_ci default y 12688c2ecf20Sopenharmony_ci help 12698c2ecf20Sopenharmony_ci Allow user space to create what appear to be multiple instances 12708c2ecf20Sopenharmony_ci of the network stack. 12718c2ecf20Sopenharmony_ci 12728c2ecf20Sopenharmony_ciendif # NAMESPACES 12738c2ecf20Sopenharmony_ci 12748c2ecf20Sopenharmony_ciconfig CHECKPOINT_RESTORE 12758c2ecf20Sopenharmony_ci bool "Checkpoint/restore support" 12768c2ecf20Sopenharmony_ci select PROC_CHILDREN 12778c2ecf20Sopenharmony_ci select KCMP 12788c2ecf20Sopenharmony_ci default n 12798c2ecf20Sopenharmony_ci help 12808c2ecf20Sopenharmony_ci Enables additional kernel features in a sake of checkpoint/restore. 12818c2ecf20Sopenharmony_ci In particular it adds auxiliary prctl codes to setup process text, 12828c2ecf20Sopenharmony_ci data and heap segment sizes, and a few additional /proc filesystem 12838c2ecf20Sopenharmony_ci entries. 12848c2ecf20Sopenharmony_ci 12858c2ecf20Sopenharmony_ci If unsure, say N here. 12868c2ecf20Sopenharmony_ci 12878c2ecf20Sopenharmony_ciconfig SCHED_AUTOGROUP 12888c2ecf20Sopenharmony_ci bool "Automatic process group scheduling" 12898c2ecf20Sopenharmony_ci select CGROUPS 12908c2ecf20Sopenharmony_ci select CGROUP_SCHED 12918c2ecf20Sopenharmony_ci select FAIR_GROUP_SCHED 12928c2ecf20Sopenharmony_ci help 12938c2ecf20Sopenharmony_ci This option optimizes the scheduler for common desktop workloads by 12948c2ecf20Sopenharmony_ci automatically creating and populating task groups. This separation 12958c2ecf20Sopenharmony_ci of workloads isolates aggressive CPU burners (like build jobs) from 12968c2ecf20Sopenharmony_ci desktop applications. Task group autogeneration is currently based 12978c2ecf20Sopenharmony_ci upon task session. 12988c2ecf20Sopenharmony_ci 12998c2ecf20Sopenharmony_ciconfig RT_SOFTINT_OPTIMIZATION 13008c2ecf20Sopenharmony_ci bool "Improve RT scheduling during long softint execution" 13018c2ecf20Sopenharmony_ci depends on (ARM64 || LOONGARCH) 13028c2ecf20Sopenharmony_ci depends on SMP 13038c2ecf20Sopenharmony_ci default n 13048c2ecf20Sopenharmony_ci help 13058c2ecf20Sopenharmony_ci Enable an optimization which tries to avoid placing RT tasks on CPUs 13068c2ecf20Sopenharmony_ci occupied by nonpreemptible tasks, such as a long softint, or CPUs 13078c2ecf20Sopenharmony_ci which may soon block preemptions, such as a CPU running a ksoftirq 13088c2ecf20Sopenharmony_ci thread which handles slow softints. 13098c2ecf20Sopenharmony_ci 13108c2ecf20Sopenharmony_ciconfig SYSFS_DEPRECATED 13118c2ecf20Sopenharmony_ci bool "Enable deprecated sysfs features to support old userspace tools" 13128c2ecf20Sopenharmony_ci depends on SYSFS 13138c2ecf20Sopenharmony_ci default n 13148c2ecf20Sopenharmony_ci help 13158c2ecf20Sopenharmony_ci This option adds code that switches the layout of the "block" class 13168c2ecf20Sopenharmony_ci devices, to not show up in /sys/class/block/, but only in 13178c2ecf20Sopenharmony_ci /sys/block/. 13188c2ecf20Sopenharmony_ci 13198c2ecf20Sopenharmony_ci This switch is only active when the sysfs.deprecated=1 boot option is 13208c2ecf20Sopenharmony_ci passed or the SYSFS_DEPRECATED_V2 option is set. 13218c2ecf20Sopenharmony_ci 13228c2ecf20Sopenharmony_ci This option allows new kernels to run on old distributions and tools, 13238c2ecf20Sopenharmony_ci which might get confused by /sys/class/block/. Since 2007/2008 all 13248c2ecf20Sopenharmony_ci major distributions and tools handle this just fine. 13258c2ecf20Sopenharmony_ci 13268c2ecf20Sopenharmony_ci Recent distributions and userspace tools after 2009/2010 depend on 13278c2ecf20Sopenharmony_ci the existence of /sys/class/block/, and will not work with this 13288c2ecf20Sopenharmony_ci option enabled. 13298c2ecf20Sopenharmony_ci 13308c2ecf20Sopenharmony_ci Only if you are using a new kernel on an old distribution, you might 13318c2ecf20Sopenharmony_ci need to say Y here. 13328c2ecf20Sopenharmony_ci 13338c2ecf20Sopenharmony_ciconfig SYSFS_DEPRECATED_V2 13348c2ecf20Sopenharmony_ci bool "Enable deprecated sysfs features by default" 13358c2ecf20Sopenharmony_ci default n 13368c2ecf20Sopenharmony_ci depends on SYSFS 13378c2ecf20Sopenharmony_ci depends on SYSFS_DEPRECATED 13388c2ecf20Sopenharmony_ci help 13398c2ecf20Sopenharmony_ci Enable deprecated sysfs by default. 13408c2ecf20Sopenharmony_ci 13418c2ecf20Sopenharmony_ci See the CONFIG_SYSFS_DEPRECATED option for more details about this 13428c2ecf20Sopenharmony_ci option. 13438c2ecf20Sopenharmony_ci 13448c2ecf20Sopenharmony_ci Only if you are using a new kernel on an old distribution, you might 13458c2ecf20Sopenharmony_ci need to say Y here. Even then, odds are you would not need it 13468c2ecf20Sopenharmony_ci enabled, you can always pass the boot option if absolutely necessary. 13478c2ecf20Sopenharmony_ci 13488c2ecf20Sopenharmony_ciconfig RELAY 13498c2ecf20Sopenharmony_ci bool "Kernel->user space relay support (formerly relayfs)" 13508c2ecf20Sopenharmony_ci select IRQ_WORK 13518c2ecf20Sopenharmony_ci help 13528c2ecf20Sopenharmony_ci This option enables support for relay interface support in 13538c2ecf20Sopenharmony_ci certain file systems (such as debugfs). 13548c2ecf20Sopenharmony_ci It is designed to provide an efficient mechanism for tools and 13558c2ecf20Sopenharmony_ci facilities to relay large amounts of data from kernel space to 13568c2ecf20Sopenharmony_ci user space. 13578c2ecf20Sopenharmony_ci 13588c2ecf20Sopenharmony_ci If unsure, say N. 13598c2ecf20Sopenharmony_ci 13608c2ecf20Sopenharmony_ciconfig BLK_DEV_INITRD 13618c2ecf20Sopenharmony_ci bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 13628c2ecf20Sopenharmony_ci help 13638c2ecf20Sopenharmony_ci The initial RAM filesystem is a ramfs which is loaded by the 13648c2ecf20Sopenharmony_ci boot loader (loadlin or lilo) and that is mounted as root 13658c2ecf20Sopenharmony_ci before the normal boot procedure. It is typically used to 13668c2ecf20Sopenharmony_ci load modules needed to mount the "real" root file system, 13678c2ecf20Sopenharmony_ci etc. See <file:Documentation/admin-guide/initrd.rst> for details. 13688c2ecf20Sopenharmony_ci 13698c2ecf20Sopenharmony_ci If RAM disk support (BLK_DEV_RAM) is also included, this 13708c2ecf20Sopenharmony_ci also enables initial RAM disk (initrd) support and adds 13718c2ecf20Sopenharmony_ci 15 Kbytes (more on some other architectures) to the kernel size. 13728c2ecf20Sopenharmony_ci 13738c2ecf20Sopenharmony_ci If unsure say Y. 13748c2ecf20Sopenharmony_ci 13758c2ecf20Sopenharmony_ciif BLK_DEV_INITRD 13768c2ecf20Sopenharmony_ci 13778c2ecf20Sopenharmony_cisource "usr/Kconfig" 13788c2ecf20Sopenharmony_ci 13798c2ecf20Sopenharmony_ciendif 13808c2ecf20Sopenharmony_ci 13818c2ecf20Sopenharmony_ciconfig BOOT_CONFIG 13828c2ecf20Sopenharmony_ci bool "Boot config support" 13838c2ecf20Sopenharmony_ci select BLK_DEV_INITRD 13848c2ecf20Sopenharmony_ci help 13858c2ecf20Sopenharmony_ci Extra boot config allows system admin to pass a config file as 13868c2ecf20Sopenharmony_ci complemental extension of kernel cmdline when booting. 13878c2ecf20Sopenharmony_ci The boot config file must be attached at the end of initramfs 13888c2ecf20Sopenharmony_ci with checksum, size and magic word. 13898c2ecf20Sopenharmony_ci See <file:Documentation/admin-guide/bootconfig.rst> for details. 13908c2ecf20Sopenharmony_ci 13918c2ecf20Sopenharmony_ci If unsure, say Y. 13928c2ecf20Sopenharmony_ci 13938c2ecf20Sopenharmony_cichoice 13948c2ecf20Sopenharmony_ci prompt "Compiler optimization level" 13958c2ecf20Sopenharmony_ci default CC_OPTIMIZE_FOR_PERFORMANCE 13968c2ecf20Sopenharmony_ci 13978c2ecf20Sopenharmony_ciconfig CC_OPTIMIZE_FOR_PERFORMANCE 13988c2ecf20Sopenharmony_ci bool "Optimize for performance (-O2)" 13998c2ecf20Sopenharmony_ci help 14008c2ecf20Sopenharmony_ci This is the default optimization level for the kernel, building 14018c2ecf20Sopenharmony_ci with the "-O2" compiler flag for best performance and most 14028c2ecf20Sopenharmony_ci helpful compile-time warnings. 14038c2ecf20Sopenharmony_ci 14048c2ecf20Sopenharmony_ciconfig CC_OPTIMIZE_FOR_PERFORMANCE_O3 14058c2ecf20Sopenharmony_ci bool "Optimize more for performance (-O3)" 14068c2ecf20Sopenharmony_ci depends on ARC 14078c2ecf20Sopenharmony_ci help 14088c2ecf20Sopenharmony_ci Choosing this option will pass "-O3" to your compiler to optimize 14098c2ecf20Sopenharmony_ci the kernel yet more for performance. 14108c2ecf20Sopenharmony_ci 14118c2ecf20Sopenharmony_ciconfig CC_OPTIMIZE_FOR_SIZE 14128c2ecf20Sopenharmony_ci bool "Optimize for size (-Os)" 14138c2ecf20Sopenharmony_ci help 14148c2ecf20Sopenharmony_ci Choosing this option will pass "-Os" to your compiler resulting 14158c2ecf20Sopenharmony_ci in a smaller kernel. 14168c2ecf20Sopenharmony_ci 14178c2ecf20Sopenharmony_ciendchoice 14188c2ecf20Sopenharmony_ci 14198c2ecf20Sopenharmony_ciconfig HAVE_LD_DEAD_CODE_DATA_ELIMINATION 14208c2ecf20Sopenharmony_ci bool 14218c2ecf20Sopenharmony_ci help 14228c2ecf20Sopenharmony_ci This requires that the arch annotates or otherwise protects 14238c2ecf20Sopenharmony_ci its external entry points from being discarded. Linker scripts 14248c2ecf20Sopenharmony_ci must also merge .text.*, .data.*, and .bss.* correctly into 14258c2ecf20Sopenharmony_ci output sections. Care must be taken not to pull in unrelated 14268c2ecf20Sopenharmony_ci sections (e.g., '.text.init'). Typically '.' in section names 14278c2ecf20Sopenharmony_ci is used to distinguish them from label names / C identifiers. 14288c2ecf20Sopenharmony_ci 14298c2ecf20Sopenharmony_ciconfig LD_DEAD_CODE_DATA_ELIMINATION 14308c2ecf20Sopenharmony_ci bool "Dead code and data elimination (EXPERIMENTAL)" 14318c2ecf20Sopenharmony_ci depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION 14328c2ecf20Sopenharmony_ci depends on EXPERT 14338c2ecf20Sopenharmony_ci depends on $(cc-option,-ffunction-sections -fdata-sections) 14348c2ecf20Sopenharmony_ci depends on $(ld-option,--gc-sections) 14358c2ecf20Sopenharmony_ci help 14368c2ecf20Sopenharmony_ci Enable this if you want to do dead code and data elimination with 14378c2ecf20Sopenharmony_ci the linker by compiling with -ffunction-sections -fdata-sections, 14388c2ecf20Sopenharmony_ci and linking with --gc-sections. 14398c2ecf20Sopenharmony_ci 14408c2ecf20Sopenharmony_ci This can reduce on disk and in-memory size of the kernel 14418c2ecf20Sopenharmony_ci code and static data, particularly for small configs and 14428c2ecf20Sopenharmony_ci on small systems. This has the possibility of introducing 14438c2ecf20Sopenharmony_ci silently broken kernel if the required annotations are not 14448c2ecf20Sopenharmony_ci present. This option is not well tested yet, so use at your 14458c2ecf20Sopenharmony_ci own risk. 14468c2ecf20Sopenharmony_ci 14478c2ecf20Sopenharmony_ciconfig LD_ORPHAN_WARN 14488c2ecf20Sopenharmony_ci def_bool y 14498c2ecf20Sopenharmony_ci depends on ARCH_WANT_LD_ORPHAN_WARN 14508c2ecf20Sopenharmony_ci depends on !LD_IS_LLD || LLD_VERSION >= 110000 14518c2ecf20Sopenharmony_ci depends on $(ld-option,--orphan-handling=warn) 14528c2ecf20Sopenharmony_ci 14538c2ecf20Sopenharmony_ciconfig SYSCTL 14548c2ecf20Sopenharmony_ci bool 14558c2ecf20Sopenharmony_ci 14568c2ecf20Sopenharmony_ciconfig HAVE_UID16 14578c2ecf20Sopenharmony_ci bool 14588c2ecf20Sopenharmony_ci 14598c2ecf20Sopenharmony_ciconfig SYSCTL_EXCEPTION_TRACE 14608c2ecf20Sopenharmony_ci bool 14618c2ecf20Sopenharmony_ci help 14628c2ecf20Sopenharmony_ci Enable support for /proc/sys/debug/exception-trace. 14638c2ecf20Sopenharmony_ci 14648c2ecf20Sopenharmony_ciconfig SYSCTL_ARCH_UNALIGN_NO_WARN 14658c2ecf20Sopenharmony_ci bool 14668c2ecf20Sopenharmony_ci help 14678c2ecf20Sopenharmony_ci Enable support for /proc/sys/kernel/ignore-unaligned-usertrap 14688c2ecf20Sopenharmony_ci Allows arch to define/use @no_unaligned_warning to possibly warn 14698c2ecf20Sopenharmony_ci about unaligned access emulation going on under the hood. 14708c2ecf20Sopenharmony_ci 14718c2ecf20Sopenharmony_ciconfig SYSCTL_ARCH_UNALIGN_ALLOW 14728c2ecf20Sopenharmony_ci bool 14738c2ecf20Sopenharmony_ci help 14748c2ecf20Sopenharmony_ci Enable support for /proc/sys/kernel/unaligned-trap 14758c2ecf20Sopenharmony_ci Allows arches to define/use @unaligned_enabled to runtime toggle 14768c2ecf20Sopenharmony_ci the unaligned access emulation. 14778c2ecf20Sopenharmony_ci see arch/parisc/kernel/unaligned.c for reference 14788c2ecf20Sopenharmony_ci 14798c2ecf20Sopenharmony_ciconfig HAVE_PCSPKR_PLATFORM 14808c2ecf20Sopenharmony_ci bool 14818c2ecf20Sopenharmony_ci 14828c2ecf20Sopenharmony_ci# interpreter that classic socket filters depend on 14838c2ecf20Sopenharmony_ciconfig BPF 14848c2ecf20Sopenharmony_ci bool 14858c2ecf20Sopenharmony_ci 14868c2ecf20Sopenharmony_cimenuconfig EXPERT 14878c2ecf20Sopenharmony_ci bool "Configure standard kernel features (expert users)" 14888c2ecf20Sopenharmony_ci # Unhide debug options, to make the on-by-default options visible 14898c2ecf20Sopenharmony_ci select DEBUG_KERNEL 14908c2ecf20Sopenharmony_ci help 14918c2ecf20Sopenharmony_ci This option allows certain base kernel options and settings 14928c2ecf20Sopenharmony_ci to be disabled or tweaked. This is for specialized 14938c2ecf20Sopenharmony_ci environments which can tolerate a "non-standard" kernel. 14948c2ecf20Sopenharmony_ci Only use this if you really know what you are doing. 14958c2ecf20Sopenharmony_ci 14968c2ecf20Sopenharmony_ciconfig UID16 14978c2ecf20Sopenharmony_ci bool "Enable 16-bit UID system calls" if EXPERT 14988c2ecf20Sopenharmony_ci depends on HAVE_UID16 && MULTIUSER 14998c2ecf20Sopenharmony_ci default y 15008c2ecf20Sopenharmony_ci help 15018c2ecf20Sopenharmony_ci This enables the legacy 16-bit UID syscall wrappers. 15028c2ecf20Sopenharmony_ci 15038c2ecf20Sopenharmony_ciconfig MULTIUSER 15048c2ecf20Sopenharmony_ci bool "Multiple users, groups and capabilities support" if EXPERT 15058c2ecf20Sopenharmony_ci default y 15068c2ecf20Sopenharmony_ci help 15078c2ecf20Sopenharmony_ci This option enables support for non-root users, groups and 15088c2ecf20Sopenharmony_ci capabilities. 15098c2ecf20Sopenharmony_ci 15108c2ecf20Sopenharmony_ci If you say N here, all processes will run with UID 0, GID 0, and all 15118c2ecf20Sopenharmony_ci possible capabilities. Saying N here also compiles out support for 15128c2ecf20Sopenharmony_ci system calls related to UIDs, GIDs, and capabilities, such as setuid, 15138c2ecf20Sopenharmony_ci setgid, and capset. 15148c2ecf20Sopenharmony_ci 15158c2ecf20Sopenharmony_ci If unsure, say Y here. 15168c2ecf20Sopenharmony_ci 15178c2ecf20Sopenharmony_ciconfig SGETMASK_SYSCALL 15188c2ecf20Sopenharmony_ci bool "sgetmask/ssetmask syscalls support" if EXPERT 15198c2ecf20Sopenharmony_ci def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH 15208c2ecf20Sopenharmony_ci help 15218c2ecf20Sopenharmony_ci sys_sgetmask and sys_ssetmask are obsolete system calls 15228c2ecf20Sopenharmony_ci no longer supported in libc but still enabled by default in some 15238c2ecf20Sopenharmony_ci architectures. 15248c2ecf20Sopenharmony_ci 15258c2ecf20Sopenharmony_ci If unsure, leave the default option here. 15268c2ecf20Sopenharmony_ci 15278c2ecf20Sopenharmony_ciconfig SYSFS_SYSCALL 15288c2ecf20Sopenharmony_ci bool "Sysfs syscall support" if EXPERT 15298c2ecf20Sopenharmony_ci default y 15308c2ecf20Sopenharmony_ci help 15318c2ecf20Sopenharmony_ci sys_sysfs is an obsolete system call no longer supported in libc. 15328c2ecf20Sopenharmony_ci Note that disabling this option is more secure but might break 15338c2ecf20Sopenharmony_ci compatibility with some systems. 15348c2ecf20Sopenharmony_ci 15358c2ecf20Sopenharmony_ci If unsure say Y here. 15368c2ecf20Sopenharmony_ci 15378c2ecf20Sopenharmony_ciconfig FHANDLE 15388c2ecf20Sopenharmony_ci bool "open by fhandle syscalls" if EXPERT 15398c2ecf20Sopenharmony_ci select EXPORTFS 15408c2ecf20Sopenharmony_ci default y 15418c2ecf20Sopenharmony_ci help 15428c2ecf20Sopenharmony_ci If you say Y here, a user level program will be able to map 15438c2ecf20Sopenharmony_ci file names to handle and then later use the handle for 15448c2ecf20Sopenharmony_ci different file system operations. This is useful in implementing 15458c2ecf20Sopenharmony_ci userspace file servers, which now track files using handles instead 15468c2ecf20Sopenharmony_ci of names. The handle would remain the same even if file names 15478c2ecf20Sopenharmony_ci get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2) 15488c2ecf20Sopenharmony_ci syscalls. 15498c2ecf20Sopenharmony_ci 15508c2ecf20Sopenharmony_ciconfig POSIX_TIMERS 15518c2ecf20Sopenharmony_ci bool "Posix Clocks & timers" if EXPERT 15528c2ecf20Sopenharmony_ci default y 15538c2ecf20Sopenharmony_ci help 15548c2ecf20Sopenharmony_ci This includes native support for POSIX timers to the kernel. 15558c2ecf20Sopenharmony_ci Some embedded systems have no use for them and therefore they 15568c2ecf20Sopenharmony_ci can be configured out to reduce the size of the kernel image. 15578c2ecf20Sopenharmony_ci 15588c2ecf20Sopenharmony_ci When this option is disabled, the following syscalls won't be 15598c2ecf20Sopenharmony_ci available: timer_create, timer_gettime: timer_getoverrun, 15608c2ecf20Sopenharmony_ci timer_settime, timer_delete, clock_adjtime, getitimer, 15618c2ecf20Sopenharmony_ci setitimer, alarm. Furthermore, the clock_settime, clock_gettime, 15628c2ecf20Sopenharmony_ci clock_getres and clock_nanosleep syscalls will be limited to 15638c2ecf20Sopenharmony_ci CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only. 15648c2ecf20Sopenharmony_ci 15658c2ecf20Sopenharmony_ci If unsure say y. 15668c2ecf20Sopenharmony_ci 15678c2ecf20Sopenharmony_ciconfig PRINTK 15688c2ecf20Sopenharmony_ci default y 15698c2ecf20Sopenharmony_ci bool "Enable support for printk" if EXPERT 15708c2ecf20Sopenharmony_ci select IRQ_WORK 15718c2ecf20Sopenharmony_ci help 15728c2ecf20Sopenharmony_ci This option enables normal printk support. Removing it 15738c2ecf20Sopenharmony_ci eliminates most of the message strings from the kernel image 15748c2ecf20Sopenharmony_ci and makes the kernel more or less silent. As this makes it 15758c2ecf20Sopenharmony_ci very difficult to diagnose system problems, saying N here is 15768c2ecf20Sopenharmony_ci strongly discouraged. 15778c2ecf20Sopenharmony_ci 15788c2ecf20Sopenharmony_ciconfig PRINTK_NMI 15798c2ecf20Sopenharmony_ci def_bool y 15808c2ecf20Sopenharmony_ci depends on PRINTK 15818c2ecf20Sopenharmony_ci depends on HAVE_NMI 15828c2ecf20Sopenharmony_ci 15838c2ecf20Sopenharmony_ciconfig BUG 15848c2ecf20Sopenharmony_ci bool "BUG() support" if EXPERT 15858c2ecf20Sopenharmony_ci default y 15868c2ecf20Sopenharmony_ci help 15878c2ecf20Sopenharmony_ci Disabling this option eliminates support for BUG and WARN, reducing 15888c2ecf20Sopenharmony_ci the size of your kernel image and potentially quietly ignoring 15898c2ecf20Sopenharmony_ci numerous fatal conditions. You should only consider disabling this 15908c2ecf20Sopenharmony_ci option for embedded systems with no facilities for reporting errors. 15918c2ecf20Sopenharmony_ci Just say Y. 15928c2ecf20Sopenharmony_ci 15938c2ecf20Sopenharmony_ciconfig ELF_CORE 15948c2ecf20Sopenharmony_ci depends on COREDUMP 15958c2ecf20Sopenharmony_ci default y 15968c2ecf20Sopenharmony_ci bool "Enable ELF core dumps" if EXPERT 15978c2ecf20Sopenharmony_ci help 15988c2ecf20Sopenharmony_ci Enable support for generating core dumps. Disabling saves about 4k. 15998c2ecf20Sopenharmony_ci 16008c2ecf20Sopenharmony_ci 16018c2ecf20Sopenharmony_ciconfig PCSPKR_PLATFORM 16028c2ecf20Sopenharmony_ci bool "Enable PC-Speaker support" if EXPERT 16038c2ecf20Sopenharmony_ci depends on HAVE_PCSPKR_PLATFORM 16048c2ecf20Sopenharmony_ci select I8253_LOCK 16058c2ecf20Sopenharmony_ci default y 16068c2ecf20Sopenharmony_ci help 16078c2ecf20Sopenharmony_ci This option allows to disable the internal PC-Speaker 16088c2ecf20Sopenharmony_ci support, saving some memory. 16098c2ecf20Sopenharmony_ci 16108c2ecf20Sopenharmony_ciconfig BASE_FULL 16118c2ecf20Sopenharmony_ci default y 16128c2ecf20Sopenharmony_ci bool "Enable full-sized data structures for core" if EXPERT 16138c2ecf20Sopenharmony_ci help 16148c2ecf20Sopenharmony_ci Disabling this option reduces the size of miscellaneous core 16158c2ecf20Sopenharmony_ci kernel data structures. This saves memory on small machines, 16168c2ecf20Sopenharmony_ci but may reduce performance. 16178c2ecf20Sopenharmony_ci 16188c2ecf20Sopenharmony_ciconfig FUTEX 16198c2ecf20Sopenharmony_ci bool "Enable futex support" if EXPERT 16208c2ecf20Sopenharmony_ci default y 16218c2ecf20Sopenharmony_ci imply RT_MUTEXES 16228c2ecf20Sopenharmony_ci help 16238c2ecf20Sopenharmony_ci Disabling this option will cause the kernel to be built without 16248c2ecf20Sopenharmony_ci support for "fast userspace mutexes". The resulting kernel may not 16258c2ecf20Sopenharmony_ci run glibc-based applications correctly. 16268c2ecf20Sopenharmony_ci 16278c2ecf20Sopenharmony_ciconfig FUTEX_PI 16288c2ecf20Sopenharmony_ci bool 16298c2ecf20Sopenharmony_ci depends on FUTEX && RT_MUTEXES 16308c2ecf20Sopenharmony_ci default y 16318c2ecf20Sopenharmony_ci 16328c2ecf20Sopenharmony_ciconfig HAVE_FUTEX_CMPXCHG 16338c2ecf20Sopenharmony_ci bool 16348c2ecf20Sopenharmony_ci depends on FUTEX 16358c2ecf20Sopenharmony_ci help 16368c2ecf20Sopenharmony_ci Architectures should select this if futex_atomic_cmpxchg_inatomic() 16378c2ecf20Sopenharmony_ci is implemented and always working. This removes a couple of runtime 16388c2ecf20Sopenharmony_ci checks. 16398c2ecf20Sopenharmony_ci 16408c2ecf20Sopenharmony_ciconfig EPOLL 16418c2ecf20Sopenharmony_ci bool "Enable eventpoll support" if EXPERT 16428c2ecf20Sopenharmony_ci default y 16438c2ecf20Sopenharmony_ci help 16448c2ecf20Sopenharmony_ci Disabling this option will cause the kernel to be built without 16458c2ecf20Sopenharmony_ci support for epoll family of system calls. 16468c2ecf20Sopenharmony_ci 16478c2ecf20Sopenharmony_ciconfig SIGNALFD 16488c2ecf20Sopenharmony_ci bool "Enable signalfd() system call" if EXPERT 16498c2ecf20Sopenharmony_ci default y 16508c2ecf20Sopenharmony_ci help 16518c2ecf20Sopenharmony_ci Enable the signalfd() system call that allows to receive signals 16528c2ecf20Sopenharmony_ci on a file descriptor. 16538c2ecf20Sopenharmony_ci 16548c2ecf20Sopenharmony_ci If unsure, say Y. 16558c2ecf20Sopenharmony_ci 16568c2ecf20Sopenharmony_ciconfig TIMERFD 16578c2ecf20Sopenharmony_ci bool "Enable timerfd() system call" if EXPERT 16588c2ecf20Sopenharmony_ci default y 16598c2ecf20Sopenharmony_ci help 16608c2ecf20Sopenharmony_ci Enable the timerfd() system call that allows to receive timer 16618c2ecf20Sopenharmony_ci events on a file descriptor. 16628c2ecf20Sopenharmony_ci 16638c2ecf20Sopenharmony_ci If unsure, say Y. 16648c2ecf20Sopenharmony_ci 16658c2ecf20Sopenharmony_ciconfig EVENTFD 16668c2ecf20Sopenharmony_ci bool "Enable eventfd() system call" if EXPERT 16678c2ecf20Sopenharmony_ci default y 16688c2ecf20Sopenharmony_ci help 16698c2ecf20Sopenharmony_ci Enable the eventfd() system call that allows to receive both 16708c2ecf20Sopenharmony_ci kernel notification (ie. KAIO) or userspace notifications. 16718c2ecf20Sopenharmony_ci 16728c2ecf20Sopenharmony_ci If unsure, say Y. 16738c2ecf20Sopenharmony_ci 16748c2ecf20Sopenharmony_ciconfig SHMEM 16758c2ecf20Sopenharmony_ci bool "Use full shmem filesystem" if EXPERT 16768c2ecf20Sopenharmony_ci default y 16778c2ecf20Sopenharmony_ci depends on MMU 16788c2ecf20Sopenharmony_ci help 16798c2ecf20Sopenharmony_ci The shmem is an internal filesystem used to manage shared memory. 16808c2ecf20Sopenharmony_ci It is backed by swap and manages resource limits. It is also exported 16818c2ecf20Sopenharmony_ci to userspace as tmpfs if TMPFS is enabled. Disabling this 16828c2ecf20Sopenharmony_ci option replaces shmem and tmpfs with the much simpler ramfs code, 16838c2ecf20Sopenharmony_ci which may be appropriate on small systems without swap. 16848c2ecf20Sopenharmony_ci 16858c2ecf20Sopenharmony_ciconfig AIO 16868c2ecf20Sopenharmony_ci bool "Enable AIO support" if EXPERT 16878c2ecf20Sopenharmony_ci default y 16888c2ecf20Sopenharmony_ci help 16898c2ecf20Sopenharmony_ci This option enables POSIX asynchronous I/O which may by used 16908c2ecf20Sopenharmony_ci by some high performance threaded applications. Disabling 16918c2ecf20Sopenharmony_ci this option saves about 7k. 16928c2ecf20Sopenharmony_ci 16938c2ecf20Sopenharmony_ciconfig IO_URING 16948c2ecf20Sopenharmony_ci bool "Enable IO uring support" if EXPERT 16958c2ecf20Sopenharmony_ci select IO_WQ 16968c2ecf20Sopenharmony_ci default y 16978c2ecf20Sopenharmony_ci help 16988c2ecf20Sopenharmony_ci This option enables support for the io_uring interface, enabling 16998c2ecf20Sopenharmony_ci applications to submit and complete IO through submission and 17008c2ecf20Sopenharmony_ci completion rings that are shared between the kernel and application. 17018c2ecf20Sopenharmony_ci 17028c2ecf20Sopenharmony_ciconfig ADVISE_SYSCALLS 17038c2ecf20Sopenharmony_ci bool "Enable madvise/fadvise syscalls" if EXPERT 17048c2ecf20Sopenharmony_ci default y 17058c2ecf20Sopenharmony_ci help 17068c2ecf20Sopenharmony_ci This option enables the madvise and fadvise syscalls, used by 17078c2ecf20Sopenharmony_ci applications to advise the kernel about their future memory or file 17088c2ecf20Sopenharmony_ci usage, improving performance. If building an embedded system where no 17098c2ecf20Sopenharmony_ci applications use these syscalls, you can disable this option to save 17108c2ecf20Sopenharmony_ci space. 17118c2ecf20Sopenharmony_ci 17128c2ecf20Sopenharmony_ciconfig HAVE_ARCH_USERFAULTFD_WP 17138c2ecf20Sopenharmony_ci bool 17148c2ecf20Sopenharmony_ci help 17158c2ecf20Sopenharmony_ci Arch has userfaultfd write protection support 17168c2ecf20Sopenharmony_ci 17178c2ecf20Sopenharmony_ciconfig MEMBARRIER 17188c2ecf20Sopenharmony_ci bool "Enable membarrier() system call" if EXPERT 17198c2ecf20Sopenharmony_ci default y 17208c2ecf20Sopenharmony_ci help 17218c2ecf20Sopenharmony_ci Enable the membarrier() system call that allows issuing memory 17228c2ecf20Sopenharmony_ci barriers across all running threads, which can be used to distribute 17238c2ecf20Sopenharmony_ci the cost of user-space memory barriers asymmetrically by transforming 17248c2ecf20Sopenharmony_ci pairs of memory barriers into pairs consisting of membarrier() and a 17258c2ecf20Sopenharmony_ci compiler barrier. 17268c2ecf20Sopenharmony_ci 17278c2ecf20Sopenharmony_ci If unsure, say Y. 17288c2ecf20Sopenharmony_ci 17298c2ecf20Sopenharmony_ciconfig KALLSYMS 17308c2ecf20Sopenharmony_ci bool "Load all symbols for debugging/ksymoops" if EXPERT 17318c2ecf20Sopenharmony_ci default y 17328c2ecf20Sopenharmony_ci help 17338c2ecf20Sopenharmony_ci Say Y here to let the kernel print out symbolic crash information and 17348c2ecf20Sopenharmony_ci symbolic stack backtraces. This increases the size of the kernel 17358c2ecf20Sopenharmony_ci somewhat, as all symbols have to be loaded into the kernel image. 17368c2ecf20Sopenharmony_ci 17378c2ecf20Sopenharmony_ciconfig KALLSYMS_ALL 17388c2ecf20Sopenharmony_ci bool "Include all symbols in kallsyms" 17398c2ecf20Sopenharmony_ci depends on DEBUG_KERNEL && KALLSYMS 17408c2ecf20Sopenharmony_ci help 17418c2ecf20Sopenharmony_ci Normally kallsyms only contains the symbols of functions for nicer 17428c2ecf20Sopenharmony_ci OOPS messages and backtraces (i.e., symbols from the text and inittext 17438c2ecf20Sopenharmony_ci sections). This is sufficient for most cases. And only in very rare 17448c2ecf20Sopenharmony_ci cases (e.g., when a debugger is used) all symbols are required (e.g., 17458c2ecf20Sopenharmony_ci names of variables from the data sections, etc). 17468c2ecf20Sopenharmony_ci 17478c2ecf20Sopenharmony_ci This option makes sure that all symbols are loaded into the kernel 17488c2ecf20Sopenharmony_ci image (i.e., symbols from all sections) in cost of increased kernel 17498c2ecf20Sopenharmony_ci size (depending on the kernel configuration, it may be 300KiB or 17508c2ecf20Sopenharmony_ci something like this). 17518c2ecf20Sopenharmony_ci 17528c2ecf20Sopenharmony_ci Say N unless you really need all symbols. 17538c2ecf20Sopenharmony_ci 17548c2ecf20Sopenharmony_ciconfig KALLSYMS_ABSOLUTE_PERCPU 17558c2ecf20Sopenharmony_ci bool 17568c2ecf20Sopenharmony_ci depends on KALLSYMS 17578c2ecf20Sopenharmony_ci default X86_64 && SMP 17588c2ecf20Sopenharmony_ci 17598c2ecf20Sopenharmony_ciconfig KALLSYMS_BASE_RELATIVE 17608c2ecf20Sopenharmony_ci bool 17618c2ecf20Sopenharmony_ci depends on KALLSYMS 17628c2ecf20Sopenharmony_ci default !IA64 17638c2ecf20Sopenharmony_ci help 17648c2ecf20Sopenharmony_ci Instead of emitting them as absolute values in the native word size, 17658c2ecf20Sopenharmony_ci emit the symbol references in the kallsyms table as 32-bit entries, 17668c2ecf20Sopenharmony_ci each containing a relative value in the range [base, base + U32_MAX] 17678c2ecf20Sopenharmony_ci or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either 17688c2ecf20Sopenharmony_ci an absolute value in the range [0, S32_MAX] or a relative value in the 17698c2ecf20Sopenharmony_ci range [base, base + S32_MAX], where base is the lowest relative symbol 17708c2ecf20Sopenharmony_ci address encountered in the image. 17718c2ecf20Sopenharmony_ci 17728c2ecf20Sopenharmony_ci On 64-bit builds, this reduces the size of the address table by 50%, 17738c2ecf20Sopenharmony_ci but more importantly, it results in entries whose values are build 17748c2ecf20Sopenharmony_ci time constants, and no relocation pass is required at runtime to fix 17758c2ecf20Sopenharmony_ci up the entries based on the runtime load address of the kernel. 17768c2ecf20Sopenharmony_ci 17778c2ecf20Sopenharmony_ci# end of the "standard kernel features (expert users)" menu 17788c2ecf20Sopenharmony_ci 17798c2ecf20Sopenharmony_ci# syscall, maps, verifier 17808c2ecf20Sopenharmony_ci 17818c2ecf20Sopenharmony_ciconfig BPF_LSM 17828c2ecf20Sopenharmony_ci bool "LSM Instrumentation with BPF" 17838c2ecf20Sopenharmony_ci depends on BPF_EVENTS 17848c2ecf20Sopenharmony_ci depends on BPF_SYSCALL 17858c2ecf20Sopenharmony_ci depends on SECURITY 17868c2ecf20Sopenharmony_ci depends on BPF_JIT 17878c2ecf20Sopenharmony_ci help 17888c2ecf20Sopenharmony_ci Enables instrumentation of the security hooks with eBPF programs for 17898c2ecf20Sopenharmony_ci implementing dynamic MAC and Audit Policies. 17908c2ecf20Sopenharmony_ci 17918c2ecf20Sopenharmony_ci If you are unsure how to answer this question, answer N. 17928c2ecf20Sopenharmony_ci 17938c2ecf20Sopenharmony_ciconfig BPF_SYSCALL 17948c2ecf20Sopenharmony_ci bool "Enable bpf() system call" 17958c2ecf20Sopenharmony_ci select BPF 17968c2ecf20Sopenharmony_ci select IRQ_WORK 17978c2ecf20Sopenharmony_ci select TASKS_TRACE_RCU 17988c2ecf20Sopenharmony_ci default n 17998c2ecf20Sopenharmony_ci help 18008c2ecf20Sopenharmony_ci Enable the bpf() system call that allows to manipulate eBPF 18018c2ecf20Sopenharmony_ci programs and maps via file descriptors. 18028c2ecf20Sopenharmony_ci 18038c2ecf20Sopenharmony_ciconfig ARCH_WANT_DEFAULT_BPF_JIT 18048c2ecf20Sopenharmony_ci bool 18058c2ecf20Sopenharmony_ci 18068c2ecf20Sopenharmony_ciconfig BPF_JIT_ALWAYS_ON 18078c2ecf20Sopenharmony_ci bool "Permanently enable BPF JIT and remove BPF interpreter" 18088c2ecf20Sopenharmony_ci depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT 18098c2ecf20Sopenharmony_ci help 18108c2ecf20Sopenharmony_ci Enables BPF JIT and removes BPF interpreter to avoid 18118c2ecf20Sopenharmony_ci speculative execution of BPF instructions by the interpreter 18128c2ecf20Sopenharmony_ci 18138c2ecf20Sopenharmony_ciconfig BPF_JIT_DEFAULT_ON 18148c2ecf20Sopenharmony_ci def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON 18158c2ecf20Sopenharmony_ci depends on HAVE_EBPF_JIT && BPF_JIT 18168c2ecf20Sopenharmony_ci 18178c2ecf20Sopenharmony_ciconfig BPF_UNPRIV_DEFAULT_OFF 18188c2ecf20Sopenharmony_ci bool "Disable unprivileged BPF by default" 18198c2ecf20Sopenharmony_ci depends on BPF_SYSCALL 18208c2ecf20Sopenharmony_ci help 18218c2ecf20Sopenharmony_ci Disables unprivileged BPF by default by setting the corresponding 18228c2ecf20Sopenharmony_ci /proc/sys/kernel/unprivileged_bpf_disabled knob to 2. An admin can 18238c2ecf20Sopenharmony_ci still reenable it by setting it to 0 later on, or permanently 18248c2ecf20Sopenharmony_ci disable it by setting it to 1 (from which no other transition to 18258c2ecf20Sopenharmony_ci 0 is possible anymore). 18268c2ecf20Sopenharmony_ci 18278c2ecf20Sopenharmony_cisource "kernel/bpf/preload/Kconfig" 18288c2ecf20Sopenharmony_ci 18298c2ecf20Sopenharmony_ciconfig USERFAULTFD 18308c2ecf20Sopenharmony_ci bool "Enable userfaultfd() system call" 18318c2ecf20Sopenharmony_ci depends on MMU 18328c2ecf20Sopenharmony_ci help 18338c2ecf20Sopenharmony_ci Enable the userfaultfd() system call that allows to intercept and 18348c2ecf20Sopenharmony_ci handle page faults in userland. 18358c2ecf20Sopenharmony_ci 18368c2ecf20Sopenharmony_ciconfig ARCH_HAS_MEMBARRIER_CALLBACKS 18378c2ecf20Sopenharmony_ci bool 18388c2ecf20Sopenharmony_ci 18398c2ecf20Sopenharmony_ciconfig ARCH_HAS_MEMBARRIER_SYNC_CORE 18408c2ecf20Sopenharmony_ci bool 18418c2ecf20Sopenharmony_ci 18428c2ecf20Sopenharmony_ciconfig KCMP 18438c2ecf20Sopenharmony_ci bool "Enable kcmp() system call" if EXPERT 18448c2ecf20Sopenharmony_ci help 18458c2ecf20Sopenharmony_ci Enable the kernel resource comparison system call. It provides 18468c2ecf20Sopenharmony_ci user-space with the ability to compare two processes to see if they 18478c2ecf20Sopenharmony_ci share a common resource, such as a file descriptor or even virtual 18488c2ecf20Sopenharmony_ci memory space. 18498c2ecf20Sopenharmony_ci 18508c2ecf20Sopenharmony_ci If unsure, say N. 18518c2ecf20Sopenharmony_ci 18528c2ecf20Sopenharmony_ciconfig RSEQ 18538c2ecf20Sopenharmony_ci bool "Enable rseq() system call" if EXPERT 18548c2ecf20Sopenharmony_ci default y 18558c2ecf20Sopenharmony_ci depends on HAVE_RSEQ 18568c2ecf20Sopenharmony_ci select MEMBARRIER 18578c2ecf20Sopenharmony_ci help 18588c2ecf20Sopenharmony_ci Enable the restartable sequences system call. It provides a 18598c2ecf20Sopenharmony_ci user-space cache for the current CPU number value, which 18608c2ecf20Sopenharmony_ci speeds up getting the current CPU number from user-space, 18618c2ecf20Sopenharmony_ci as well as an ABI to speed up user-space operations on 18628c2ecf20Sopenharmony_ci per-CPU data. 18638c2ecf20Sopenharmony_ci 18648c2ecf20Sopenharmony_ci If unsure, say Y. 18658c2ecf20Sopenharmony_ci 18668c2ecf20Sopenharmony_ciconfig DEBUG_RSEQ 18678c2ecf20Sopenharmony_ci default n 18688c2ecf20Sopenharmony_ci bool "Enabled debugging of rseq() system call" if EXPERT 18698c2ecf20Sopenharmony_ci depends on RSEQ && DEBUG_KERNEL 18708c2ecf20Sopenharmony_ci help 18718c2ecf20Sopenharmony_ci Enable extra debugging checks for the rseq system call. 18728c2ecf20Sopenharmony_ci 18738c2ecf20Sopenharmony_ci If unsure, say N. 18748c2ecf20Sopenharmony_ci 18758c2ecf20Sopenharmony_ciconfig EMBEDDED 18768c2ecf20Sopenharmony_ci bool "Embedded system" 18778c2ecf20Sopenharmony_ci option allnoconfig_y 18788c2ecf20Sopenharmony_ci select EXPERT 18798c2ecf20Sopenharmony_ci help 18808c2ecf20Sopenharmony_ci This option should be enabled if compiling the kernel for 18818c2ecf20Sopenharmony_ci an embedded system so certain expert options are available 18828c2ecf20Sopenharmony_ci for configuration. 18838c2ecf20Sopenharmony_ci 18848c2ecf20Sopenharmony_ciconfig HAVE_PERF_EVENTS 18858c2ecf20Sopenharmony_ci bool 18868c2ecf20Sopenharmony_ci help 18878c2ecf20Sopenharmony_ci See tools/perf/design.txt for details. 18888c2ecf20Sopenharmony_ci 18898c2ecf20Sopenharmony_ciconfig PERF_USE_VMALLOC 18908c2ecf20Sopenharmony_ci bool 18918c2ecf20Sopenharmony_ci help 18928c2ecf20Sopenharmony_ci See tools/perf/design.txt for details 18938c2ecf20Sopenharmony_ci 18948c2ecf20Sopenharmony_ciconfig PC104 18958c2ecf20Sopenharmony_ci bool "PC/104 support" if EXPERT 18968c2ecf20Sopenharmony_ci help 18978c2ecf20Sopenharmony_ci Expose PC/104 form factor device drivers and options available for 18988c2ecf20Sopenharmony_ci selection and configuration. Enable this option if your target 18998c2ecf20Sopenharmony_ci machine has a PC/104 bus. 19008c2ecf20Sopenharmony_ci 19018c2ecf20Sopenharmony_cimenu "Kernel Performance Events And Counters" 19028c2ecf20Sopenharmony_ci 19038c2ecf20Sopenharmony_ciconfig PERF_EVENTS 19048c2ecf20Sopenharmony_ci bool "Kernel performance events and counters" 19058c2ecf20Sopenharmony_ci default y if PROFILING 19068c2ecf20Sopenharmony_ci depends on HAVE_PERF_EVENTS 19078c2ecf20Sopenharmony_ci select IRQ_WORK 19088c2ecf20Sopenharmony_ci select SRCU 19098c2ecf20Sopenharmony_ci help 19108c2ecf20Sopenharmony_ci Enable kernel support for various performance events provided 19118c2ecf20Sopenharmony_ci by software and hardware. 19128c2ecf20Sopenharmony_ci 19138c2ecf20Sopenharmony_ci Software events are supported either built-in or via the 19148c2ecf20Sopenharmony_ci use of generic tracepoints. 19158c2ecf20Sopenharmony_ci 19168c2ecf20Sopenharmony_ci Most modern CPUs support performance events via performance 19178c2ecf20Sopenharmony_ci counter registers. These registers count the number of certain 19188c2ecf20Sopenharmony_ci types of hw events: such as instructions executed, cachemisses 19198c2ecf20Sopenharmony_ci suffered, or branches mis-predicted - without slowing down the 19208c2ecf20Sopenharmony_ci kernel or applications. These registers can also trigger interrupts 19218c2ecf20Sopenharmony_ci when a threshold number of events have passed - and can thus be 19228c2ecf20Sopenharmony_ci used to profile the code that runs on that CPU. 19238c2ecf20Sopenharmony_ci 19248c2ecf20Sopenharmony_ci The Linux Performance Event subsystem provides an abstraction of 19258c2ecf20Sopenharmony_ci these software and hardware event capabilities, available via a 19268c2ecf20Sopenharmony_ci system call and used by the "perf" utility in tools/perf/. It 19278c2ecf20Sopenharmony_ci provides per task and per CPU counters, and it provides event 19288c2ecf20Sopenharmony_ci capabilities on top of those. 19298c2ecf20Sopenharmony_ci 19308c2ecf20Sopenharmony_ci Say Y if unsure. 19318c2ecf20Sopenharmony_ci 19328c2ecf20Sopenharmony_ciconfig DEBUG_PERF_USE_VMALLOC 19338c2ecf20Sopenharmony_ci default n 19348c2ecf20Sopenharmony_ci bool "Debug: use vmalloc to back perf mmap() buffers" 19358c2ecf20Sopenharmony_ci depends on PERF_EVENTS && DEBUG_KERNEL && !PPC 19368c2ecf20Sopenharmony_ci select PERF_USE_VMALLOC 19378c2ecf20Sopenharmony_ci help 19388c2ecf20Sopenharmony_ci Use vmalloc memory to back perf mmap() buffers. 19398c2ecf20Sopenharmony_ci 19408c2ecf20Sopenharmony_ci Mostly useful for debugging the vmalloc code on platforms 19418c2ecf20Sopenharmony_ci that don't require it. 19428c2ecf20Sopenharmony_ci 19438c2ecf20Sopenharmony_ci Say N if unsure. 19448c2ecf20Sopenharmony_ci 19458c2ecf20Sopenharmony_ciendmenu 19468c2ecf20Sopenharmony_ci 19478c2ecf20Sopenharmony_ciconfig VM_EVENT_COUNTERS 19488c2ecf20Sopenharmony_ci default y 19498c2ecf20Sopenharmony_ci bool "Enable VM event counters for /proc/vmstat" if EXPERT 19508c2ecf20Sopenharmony_ci help 19518c2ecf20Sopenharmony_ci VM event counters are needed for event counts to be shown. 19528c2ecf20Sopenharmony_ci This option allows the disabling of the VM event counters 19538c2ecf20Sopenharmony_ci on EXPERT systems. /proc/vmstat will only show page counts 19548c2ecf20Sopenharmony_ci if VM event counters are disabled. 19558c2ecf20Sopenharmony_ci 19568c2ecf20Sopenharmony_ciconfig SLUB_DEBUG 19578c2ecf20Sopenharmony_ci default y 19588c2ecf20Sopenharmony_ci bool "Enable SLUB debugging support" if EXPERT 19598c2ecf20Sopenharmony_ci depends on SLUB && SYSFS 19608c2ecf20Sopenharmony_ci help 19618c2ecf20Sopenharmony_ci SLUB has extensive debug support features. Disabling these can 19628c2ecf20Sopenharmony_ci result in significant savings in code size. This also disables 19638c2ecf20Sopenharmony_ci SLUB sysfs support. /sys/slab will not exist and there will be 19648c2ecf20Sopenharmony_ci no support for cache validation etc. 19658c2ecf20Sopenharmony_ci 19668c2ecf20Sopenharmony_ciconfig SLUB_MEMCG_SYSFS_ON 19678c2ecf20Sopenharmony_ci default n 19688c2ecf20Sopenharmony_ci bool "Enable memcg SLUB sysfs support by default" if EXPERT 19698c2ecf20Sopenharmony_ci depends on SLUB && SYSFS && MEMCG 19708c2ecf20Sopenharmony_ci help 19718c2ecf20Sopenharmony_ci SLUB creates a directory under /sys/kernel/slab for each 19728c2ecf20Sopenharmony_ci allocation cache to host info and debug files. If memory 19738c2ecf20Sopenharmony_ci cgroup is enabled, each cache can have per memory cgroup 19748c2ecf20Sopenharmony_ci caches. SLUB can create the same sysfs directories for these 19758c2ecf20Sopenharmony_ci caches under /sys/kernel/slab/CACHE/cgroup but it can lead 19768c2ecf20Sopenharmony_ci to a very high number of debug files being created. This is 19778c2ecf20Sopenharmony_ci controlled by slub_memcg_sysfs boot parameter and this 19788c2ecf20Sopenharmony_ci config option determines the parameter's default value. 19798c2ecf20Sopenharmony_ci 19808c2ecf20Sopenharmony_ciconfig COMPAT_BRK 19818c2ecf20Sopenharmony_ci bool "Disable heap randomization" 19828c2ecf20Sopenharmony_ci default y 19838c2ecf20Sopenharmony_ci help 19848c2ecf20Sopenharmony_ci Randomizing heap placement makes heap exploits harder, but it 19858c2ecf20Sopenharmony_ci also breaks ancient binaries (including anything libc5 based). 19868c2ecf20Sopenharmony_ci This option changes the bootup default to heap randomization 19878c2ecf20Sopenharmony_ci disabled, and can be overridden at runtime by setting 19888c2ecf20Sopenharmony_ci /proc/sys/kernel/randomize_va_space to 2. 19898c2ecf20Sopenharmony_ci 19908c2ecf20Sopenharmony_ci On non-ancient distros (post-2000 ones) N is usually a safe choice. 19918c2ecf20Sopenharmony_ci 19928c2ecf20Sopenharmony_cichoice 19938c2ecf20Sopenharmony_ci prompt "Choose SLAB allocator" 19948c2ecf20Sopenharmony_ci default SLUB 19958c2ecf20Sopenharmony_ci help 19968c2ecf20Sopenharmony_ci This option allows to select a slab allocator. 19978c2ecf20Sopenharmony_ci 19988c2ecf20Sopenharmony_ciconfig SLAB 19998c2ecf20Sopenharmony_ci bool "SLAB" 20008c2ecf20Sopenharmony_ci select HAVE_HARDENED_USERCOPY_ALLOCATOR 20018c2ecf20Sopenharmony_ci help 20028c2ecf20Sopenharmony_ci The regular slab allocator that is established and known to work 20038c2ecf20Sopenharmony_ci well in all environments. It organizes cache hot objects in 20048c2ecf20Sopenharmony_ci per cpu and per node queues. 20058c2ecf20Sopenharmony_ci 20068c2ecf20Sopenharmony_ciconfig SLUB 20078c2ecf20Sopenharmony_ci bool "SLUB (Unqueued Allocator)" 20088c2ecf20Sopenharmony_ci select HAVE_HARDENED_USERCOPY_ALLOCATOR 20098c2ecf20Sopenharmony_ci help 20108c2ecf20Sopenharmony_ci SLUB is a slab allocator that minimizes cache line usage 20118c2ecf20Sopenharmony_ci instead of managing queues of cached objects (SLAB approach). 20128c2ecf20Sopenharmony_ci Per cpu caching is realized using slabs of objects instead 20138c2ecf20Sopenharmony_ci of queues of objects. SLUB can use memory efficiently 20148c2ecf20Sopenharmony_ci and has enhanced diagnostics. SLUB is the default choice for 20158c2ecf20Sopenharmony_ci a slab allocator. 20168c2ecf20Sopenharmony_ci 20178c2ecf20Sopenharmony_ciconfig SLOB 20188c2ecf20Sopenharmony_ci depends on EXPERT 20198c2ecf20Sopenharmony_ci bool "SLOB (Simple Allocator)" 20208c2ecf20Sopenharmony_ci help 20218c2ecf20Sopenharmony_ci SLOB replaces the stock allocator with a drastically simpler 20228c2ecf20Sopenharmony_ci allocator. SLOB is generally more space efficient but 20238c2ecf20Sopenharmony_ci does not perform as well on large systems. 20248c2ecf20Sopenharmony_ci 20258c2ecf20Sopenharmony_ciendchoice 20268c2ecf20Sopenharmony_ci 20278c2ecf20Sopenharmony_ciconfig SLAB_MERGE_DEFAULT 20288c2ecf20Sopenharmony_ci bool "Allow slab caches to be merged" 20298c2ecf20Sopenharmony_ci default y 20308c2ecf20Sopenharmony_ci help 20318c2ecf20Sopenharmony_ci For reduced kernel memory fragmentation, slab caches can be 20328c2ecf20Sopenharmony_ci merged when they share the same size and other characteristics. 20338c2ecf20Sopenharmony_ci This carries a risk of kernel heap overflows being able to 20348c2ecf20Sopenharmony_ci overwrite objects from merged caches (and more easily control 20358c2ecf20Sopenharmony_ci cache layout), which makes such heap attacks easier to exploit 20368c2ecf20Sopenharmony_ci by attackers. By keeping caches unmerged, these kinds of exploits 20378c2ecf20Sopenharmony_ci can usually only damage objects in the same cache. To disable 20388c2ecf20Sopenharmony_ci merging at runtime, "slab_nomerge" can be passed on the kernel 20398c2ecf20Sopenharmony_ci command line. 20408c2ecf20Sopenharmony_ci 20418c2ecf20Sopenharmony_ciconfig SLAB_FREELIST_RANDOM 20428c2ecf20Sopenharmony_ci bool "Randomize slab freelist" 20438c2ecf20Sopenharmony_ci depends on SLAB || SLUB 20448c2ecf20Sopenharmony_ci help 20458c2ecf20Sopenharmony_ci Randomizes the freelist order used on creating new pages. This 20468c2ecf20Sopenharmony_ci security feature reduces the predictability of the kernel slab 20478c2ecf20Sopenharmony_ci allocator against heap overflows. 20488c2ecf20Sopenharmony_ci 20498c2ecf20Sopenharmony_ciconfig SLAB_FREELIST_HARDENED 20508c2ecf20Sopenharmony_ci bool "Harden slab freelist metadata" 20518c2ecf20Sopenharmony_ci depends on SLAB || SLUB 20528c2ecf20Sopenharmony_ci help 20538c2ecf20Sopenharmony_ci Many kernel heap attacks try to target slab cache metadata and 20548c2ecf20Sopenharmony_ci other infrastructure. This options makes minor performance 20558c2ecf20Sopenharmony_ci sacrifices to harden the kernel slab allocator against common 20568c2ecf20Sopenharmony_ci freelist exploit methods. Some slab implementations have more 20578c2ecf20Sopenharmony_ci sanity-checking than others. This option is most effective with 20588c2ecf20Sopenharmony_ci CONFIG_SLUB. 20598c2ecf20Sopenharmony_ci 20608c2ecf20Sopenharmony_ciconfig SHUFFLE_PAGE_ALLOCATOR 20618c2ecf20Sopenharmony_ci bool "Page allocator randomization" 20628c2ecf20Sopenharmony_ci default SLAB_FREELIST_RANDOM && ACPI_NUMA 20638c2ecf20Sopenharmony_ci help 20648c2ecf20Sopenharmony_ci Randomization of the page allocator improves the average 20658c2ecf20Sopenharmony_ci utilization of a direct-mapped memory-side-cache. See section 20668c2ecf20Sopenharmony_ci 5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI 20678c2ecf20Sopenharmony_ci 6.2a specification for an example of how a platform advertises 20688c2ecf20Sopenharmony_ci the presence of a memory-side-cache. There are also incidental 20698c2ecf20Sopenharmony_ci security benefits as it reduces the predictability of page 20708c2ecf20Sopenharmony_ci allocations to compliment SLAB_FREELIST_RANDOM, but the 20718c2ecf20Sopenharmony_ci default granularity of shuffling on the "MAX_ORDER - 1" i.e, 20728c2ecf20Sopenharmony_ci 10th order of pages is selected based on cache utilization 20738c2ecf20Sopenharmony_ci benefits on x86. 20748c2ecf20Sopenharmony_ci 20758c2ecf20Sopenharmony_ci While the randomization improves cache utilization it may 20768c2ecf20Sopenharmony_ci negatively impact workloads on platforms without a cache. For 20778c2ecf20Sopenharmony_ci this reason, by default, the randomization is enabled only 20788c2ecf20Sopenharmony_ci after runtime detection of a direct-mapped memory-side-cache. 20798c2ecf20Sopenharmony_ci Otherwise, the randomization may be force enabled with the 20808c2ecf20Sopenharmony_ci 'page_alloc.shuffle' kernel command line parameter. 20818c2ecf20Sopenharmony_ci 20828c2ecf20Sopenharmony_ci Say Y if unsure. 20838c2ecf20Sopenharmony_ci 20848c2ecf20Sopenharmony_ciconfig SLUB_CPU_PARTIAL 20858c2ecf20Sopenharmony_ci default y 20868c2ecf20Sopenharmony_ci depends on SLUB && SMP 20878c2ecf20Sopenharmony_ci bool "SLUB per cpu partial cache" 20888c2ecf20Sopenharmony_ci help 20898c2ecf20Sopenharmony_ci Per cpu partial caches accelerate objects allocation and freeing 20908c2ecf20Sopenharmony_ci that is local to a processor at the price of more indeterminism 20918c2ecf20Sopenharmony_ci in the latency of the free. On overflow these caches will be cleared 20928c2ecf20Sopenharmony_ci which requires the taking of locks that may cause latency spikes. 20938c2ecf20Sopenharmony_ci Typically one would choose no for a realtime system. 20948c2ecf20Sopenharmony_ci 20958c2ecf20Sopenharmony_ciconfig MMAP_ALLOW_UNINITIALIZED 20968c2ecf20Sopenharmony_ci bool "Allow mmapped anonymous memory to be uninitialized" 20978c2ecf20Sopenharmony_ci depends on EXPERT && !MMU 20988c2ecf20Sopenharmony_ci default n 20998c2ecf20Sopenharmony_ci help 21008c2ecf20Sopenharmony_ci Normally, and according to the Linux spec, anonymous memory obtained 21018c2ecf20Sopenharmony_ci from mmap() has its contents cleared before it is passed to 21028c2ecf20Sopenharmony_ci userspace. Enabling this config option allows you to request that 21038c2ecf20Sopenharmony_ci mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus 21048c2ecf20Sopenharmony_ci providing a huge performance boost. If this option is not enabled, 21058c2ecf20Sopenharmony_ci then the flag will be ignored. 21068c2ecf20Sopenharmony_ci 21078c2ecf20Sopenharmony_ci This is taken advantage of by uClibc's malloc(), and also by 21088c2ecf20Sopenharmony_ci ELF-FDPIC binfmt's brk and stack allocator. 21098c2ecf20Sopenharmony_ci 21108c2ecf20Sopenharmony_ci Because of the obvious security issues, this option should only be 21118c2ecf20Sopenharmony_ci enabled on embedded devices where you control what is run in 21128c2ecf20Sopenharmony_ci userspace. Since that isn't generally a problem on no-MMU systems, 21138c2ecf20Sopenharmony_ci it is normally safe to say Y here. 21148c2ecf20Sopenharmony_ci 21158c2ecf20Sopenharmony_ci See Documentation/admin-guide/mm/nommu-mmap.rst for more information. 21168c2ecf20Sopenharmony_ci 21178c2ecf20Sopenharmony_ciconfig SYSTEM_DATA_VERIFICATION 21188c2ecf20Sopenharmony_ci def_bool n 21198c2ecf20Sopenharmony_ci select SYSTEM_TRUSTED_KEYRING 21208c2ecf20Sopenharmony_ci select KEYS 21218c2ecf20Sopenharmony_ci select CRYPTO 21228c2ecf20Sopenharmony_ci select CRYPTO_RSA 21238c2ecf20Sopenharmony_ci select ASYMMETRIC_KEY_TYPE 21248c2ecf20Sopenharmony_ci select ASYMMETRIC_PUBLIC_KEY_SUBTYPE 21258c2ecf20Sopenharmony_ci select ASN1 21268c2ecf20Sopenharmony_ci select OID_REGISTRY 21278c2ecf20Sopenharmony_ci select X509_CERTIFICATE_PARSER 21288c2ecf20Sopenharmony_ci select PKCS7_MESSAGE_PARSER 21298c2ecf20Sopenharmony_ci help 21308c2ecf20Sopenharmony_ci Provide PKCS#7 message verification using the contents of the system 21318c2ecf20Sopenharmony_ci trusted keyring to provide public keys. This then can be used for 21328c2ecf20Sopenharmony_ci module verification, kexec image verification and firmware blob 21338c2ecf20Sopenharmony_ci verification. 21348c2ecf20Sopenharmony_ci 21358c2ecf20Sopenharmony_ciconfig PROFILING 21368c2ecf20Sopenharmony_ci bool "Profiling support" 21378c2ecf20Sopenharmony_ci help 21388c2ecf20Sopenharmony_ci Say Y here to enable the extended profiling support mechanisms used 21398c2ecf20Sopenharmony_ci by profilers such as OProfile. 21408c2ecf20Sopenharmony_ci 21418c2ecf20Sopenharmony_ci# 21428c2ecf20Sopenharmony_ci# Place an empty function call at each tracepoint site. Can be 21438c2ecf20Sopenharmony_ci# dynamically changed for a probe function. 21448c2ecf20Sopenharmony_ci# 21458c2ecf20Sopenharmony_ciconfig TRACEPOINTS 21468c2ecf20Sopenharmony_ci bool 21478c2ecf20Sopenharmony_ci 21488c2ecf20Sopenharmony_ciendmenu # General setup 21498c2ecf20Sopenharmony_ci 21508c2ecf20Sopenharmony_cisource "arch/Kconfig" 21518c2ecf20Sopenharmony_ci 21528c2ecf20Sopenharmony_ciconfig RT_MUTEXES 21538c2ecf20Sopenharmony_ci bool 21548c2ecf20Sopenharmony_ci 21558c2ecf20Sopenharmony_ciconfig BASE_SMALL 21568c2ecf20Sopenharmony_ci int 21578c2ecf20Sopenharmony_ci default 0 if BASE_FULL 21588c2ecf20Sopenharmony_ci default 1 if !BASE_FULL 21598c2ecf20Sopenharmony_ci 21608c2ecf20Sopenharmony_ciconfig MODULE_SIG_FORMAT 21618c2ecf20Sopenharmony_ci def_bool n 21628c2ecf20Sopenharmony_ci select SYSTEM_DATA_VERIFICATION 21638c2ecf20Sopenharmony_ci 21648c2ecf20Sopenharmony_cimenuconfig MODULES 21658c2ecf20Sopenharmony_ci bool "Enable loadable module support" 21668c2ecf20Sopenharmony_ci option modules 21678c2ecf20Sopenharmony_ci help 21688c2ecf20Sopenharmony_ci Kernel modules are small pieces of compiled code which can 21698c2ecf20Sopenharmony_ci be inserted in the running kernel, rather than being 21708c2ecf20Sopenharmony_ci permanently built into the kernel. You use the "modprobe" 21718c2ecf20Sopenharmony_ci tool to add (and sometimes remove) them. If you say Y here, 21728c2ecf20Sopenharmony_ci many parts of the kernel can be built as modules (by 21738c2ecf20Sopenharmony_ci answering M instead of Y where indicated): this is most 21748c2ecf20Sopenharmony_ci useful for infrequently used options which are not required 21758c2ecf20Sopenharmony_ci for booting. For more information, see the man pages for 21768c2ecf20Sopenharmony_ci modprobe, lsmod, modinfo, insmod and rmmod. 21778c2ecf20Sopenharmony_ci 21788c2ecf20Sopenharmony_ci If you say Y here, you will need to run "make 21798c2ecf20Sopenharmony_ci modules_install" to put the modules under /lib/modules/ 21808c2ecf20Sopenharmony_ci where modprobe can find them (you may need to be root to do 21818c2ecf20Sopenharmony_ci this). 21828c2ecf20Sopenharmony_ci 21838c2ecf20Sopenharmony_ci If unsure, say Y. 21848c2ecf20Sopenharmony_ci 21858c2ecf20Sopenharmony_ciif MODULES 21868c2ecf20Sopenharmony_ci 21878c2ecf20Sopenharmony_ciconfig MODULE_FORCE_LOAD 21888c2ecf20Sopenharmony_ci bool "Forced module loading" 21898c2ecf20Sopenharmony_ci default n 21908c2ecf20Sopenharmony_ci help 21918c2ecf20Sopenharmony_ci Allow loading of modules without version information (ie. modprobe 21928c2ecf20Sopenharmony_ci --force). Forced module loading sets the 'F' (forced) taint flag and 21938c2ecf20Sopenharmony_ci is usually a really bad idea. 21948c2ecf20Sopenharmony_ci 21958c2ecf20Sopenharmony_ciconfig MODULE_UNLOAD 21968c2ecf20Sopenharmony_ci bool "Module unloading" 21978c2ecf20Sopenharmony_ci help 21988c2ecf20Sopenharmony_ci Without this option you will not be able to unload any 21998c2ecf20Sopenharmony_ci modules (note that some modules may not be unloadable 22008c2ecf20Sopenharmony_ci anyway), which makes your kernel smaller, faster 22018c2ecf20Sopenharmony_ci and simpler. If unsure, say Y. 22028c2ecf20Sopenharmony_ci 22038c2ecf20Sopenharmony_ciconfig MODULE_FORCE_UNLOAD 22048c2ecf20Sopenharmony_ci bool "Forced module unloading" 22058c2ecf20Sopenharmony_ci depends on MODULE_UNLOAD 22068c2ecf20Sopenharmony_ci help 22078c2ecf20Sopenharmony_ci This option allows you to force a module to unload, even if the 22088c2ecf20Sopenharmony_ci kernel believes it is unsafe: the kernel will remove the module 22098c2ecf20Sopenharmony_ci without waiting for anyone to stop using it (using the -f option to 22108c2ecf20Sopenharmony_ci rmmod). This is mainly for kernel developers and desperate users. 22118c2ecf20Sopenharmony_ci If unsure, say N. 22128c2ecf20Sopenharmony_ci 22138c2ecf20Sopenharmony_ciconfig MODVERSIONS 22148c2ecf20Sopenharmony_ci bool "Module versioning support" 22158c2ecf20Sopenharmony_ci help 22168c2ecf20Sopenharmony_ci Usually, you have to use modules compiled with your kernel. 22178c2ecf20Sopenharmony_ci Saying Y here makes it sometimes possible to use modules 22188c2ecf20Sopenharmony_ci compiled for different kernels, by adding enough information 22198c2ecf20Sopenharmony_ci to the modules to (hopefully) spot any changes which would 22208c2ecf20Sopenharmony_ci make them incompatible with the kernel you are running. If 22218c2ecf20Sopenharmony_ci unsure, say N. 22228c2ecf20Sopenharmony_ci 22238c2ecf20Sopenharmony_ciconfig ASM_MODVERSIONS 22248c2ecf20Sopenharmony_ci bool 22258c2ecf20Sopenharmony_ci default HAVE_ASM_MODVERSIONS && MODVERSIONS 22268c2ecf20Sopenharmony_ci help 22278c2ecf20Sopenharmony_ci This enables module versioning for exported symbols also from 22288c2ecf20Sopenharmony_ci assembly. This can be enabled only when the target architecture 22298c2ecf20Sopenharmony_ci supports it. 22308c2ecf20Sopenharmony_ci 22318c2ecf20Sopenharmony_ciconfig MODULE_REL_CRCS 22328c2ecf20Sopenharmony_ci bool 22338c2ecf20Sopenharmony_ci depends on MODVERSIONS 22348c2ecf20Sopenharmony_ci 22358c2ecf20Sopenharmony_ciconfig MODULE_SRCVERSION_ALL 22368c2ecf20Sopenharmony_ci bool "Source checksum for all modules" 22378c2ecf20Sopenharmony_ci help 22388c2ecf20Sopenharmony_ci Modules which contain a MODULE_VERSION get an extra "srcversion" 22398c2ecf20Sopenharmony_ci field inserted into their modinfo section, which contains a 22408c2ecf20Sopenharmony_ci sum of the source files which made it. This helps maintainers 22418c2ecf20Sopenharmony_ci see exactly which source was used to build a module (since 22428c2ecf20Sopenharmony_ci others sometimes change the module source without updating 22438c2ecf20Sopenharmony_ci the version). With this option, such a "srcversion" field 22448c2ecf20Sopenharmony_ci will be created for all modules. If unsure, say N. 22458c2ecf20Sopenharmony_ci 22468c2ecf20Sopenharmony_ciconfig MODULE_SIG 22478c2ecf20Sopenharmony_ci bool "Module signature verification" 22488c2ecf20Sopenharmony_ci select MODULE_SIG_FORMAT 22498c2ecf20Sopenharmony_ci help 22508c2ecf20Sopenharmony_ci Check modules for valid signatures upon load: the signature 22518c2ecf20Sopenharmony_ci is simply appended to the module. For more information see 22528c2ecf20Sopenharmony_ci <file:Documentation/admin-guide/module-signing.rst>. 22538c2ecf20Sopenharmony_ci 22548c2ecf20Sopenharmony_ci Note that this option adds the OpenSSL development packages as a 22558c2ecf20Sopenharmony_ci kernel build dependency so that the signing tool can use its crypto 22568c2ecf20Sopenharmony_ci library. 22578c2ecf20Sopenharmony_ci 22588c2ecf20Sopenharmony_ci You should enable this option if you wish to use either 22598c2ecf20Sopenharmony_ci CONFIG_SECURITY_LOCKDOWN_LSM or lockdown functionality imposed via 22608c2ecf20Sopenharmony_ci another LSM - otherwise unsigned modules will be loadable regardless 22618c2ecf20Sopenharmony_ci of the lockdown policy. 22628c2ecf20Sopenharmony_ci 22638c2ecf20Sopenharmony_ci !!!WARNING!!! If you enable this option, you MUST make sure that the 22648c2ecf20Sopenharmony_ci module DOES NOT get stripped after being signed. This includes the 22658c2ecf20Sopenharmony_ci debuginfo strip done by some packagers (such as rpmbuild) and 22668c2ecf20Sopenharmony_ci inclusion into an initramfs that wants the module size reduced. 22678c2ecf20Sopenharmony_ci 22688c2ecf20Sopenharmony_ciconfig MODULE_SIG_FORCE 22698c2ecf20Sopenharmony_ci bool "Require modules to be validly signed" 22708c2ecf20Sopenharmony_ci depends on MODULE_SIG 22718c2ecf20Sopenharmony_ci help 22728c2ecf20Sopenharmony_ci Reject unsigned modules or signed modules for which we don't have a 22738c2ecf20Sopenharmony_ci key. Without this, such modules will simply taint the kernel. 22748c2ecf20Sopenharmony_ci 22758c2ecf20Sopenharmony_ciconfig MODULE_SIG_ALL 22768c2ecf20Sopenharmony_ci bool "Automatically sign all modules" 22778c2ecf20Sopenharmony_ci default y 22788c2ecf20Sopenharmony_ci depends on MODULE_SIG 22798c2ecf20Sopenharmony_ci help 22808c2ecf20Sopenharmony_ci Sign all modules during make modules_install. Without this option, 22818c2ecf20Sopenharmony_ci modules must be signed manually, using the scripts/sign-file tool. 22828c2ecf20Sopenharmony_ci 22838c2ecf20Sopenharmony_cicomment "Do not forget to sign required modules with scripts/sign-file" 22848c2ecf20Sopenharmony_ci depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL 22858c2ecf20Sopenharmony_ci 22868c2ecf20Sopenharmony_cichoice 22878c2ecf20Sopenharmony_ci prompt "Which hash algorithm should modules be signed with?" 22888c2ecf20Sopenharmony_ci depends on MODULE_SIG 22898c2ecf20Sopenharmony_ci help 22908c2ecf20Sopenharmony_ci This determines which sort of hashing algorithm will be used during 22918c2ecf20Sopenharmony_ci signature generation. This algorithm _must_ be built into the kernel 22928c2ecf20Sopenharmony_ci directly so that signature verification can take place. It is not 22938c2ecf20Sopenharmony_ci possible to load a signed module containing the algorithm to check 22948c2ecf20Sopenharmony_ci the signature on that module. 22958c2ecf20Sopenharmony_ci 22968c2ecf20Sopenharmony_ciconfig MODULE_SIG_SHA1 22978c2ecf20Sopenharmony_ci bool "Sign modules with SHA-1" 22988c2ecf20Sopenharmony_ci select CRYPTO_SHA1 22998c2ecf20Sopenharmony_ci 23008c2ecf20Sopenharmony_ciconfig MODULE_SIG_SHA224 23018c2ecf20Sopenharmony_ci bool "Sign modules with SHA-224" 23028c2ecf20Sopenharmony_ci select CRYPTO_SHA256 23038c2ecf20Sopenharmony_ci 23048c2ecf20Sopenharmony_ciconfig MODULE_SIG_SHA256 23058c2ecf20Sopenharmony_ci bool "Sign modules with SHA-256" 23068c2ecf20Sopenharmony_ci select CRYPTO_SHA256 23078c2ecf20Sopenharmony_ci 23088c2ecf20Sopenharmony_ciconfig MODULE_SIG_SHA384 23098c2ecf20Sopenharmony_ci bool "Sign modules with SHA-384" 23108c2ecf20Sopenharmony_ci select CRYPTO_SHA512 23118c2ecf20Sopenharmony_ci 23128c2ecf20Sopenharmony_ciconfig MODULE_SIG_SHA512 23138c2ecf20Sopenharmony_ci bool "Sign modules with SHA-512" 23148c2ecf20Sopenharmony_ci select CRYPTO_SHA512 23158c2ecf20Sopenharmony_ci 23168c2ecf20Sopenharmony_ciendchoice 23178c2ecf20Sopenharmony_ci 23188c2ecf20Sopenharmony_ciconfig MODULE_SIG_HASH 23198c2ecf20Sopenharmony_ci string 23208c2ecf20Sopenharmony_ci depends on MODULE_SIG 23218c2ecf20Sopenharmony_ci default "sha1" if MODULE_SIG_SHA1 23228c2ecf20Sopenharmony_ci default "sha224" if MODULE_SIG_SHA224 23238c2ecf20Sopenharmony_ci default "sha256" if MODULE_SIG_SHA256 23248c2ecf20Sopenharmony_ci default "sha384" if MODULE_SIG_SHA384 23258c2ecf20Sopenharmony_ci default "sha512" if MODULE_SIG_SHA512 23268c2ecf20Sopenharmony_ci 23278c2ecf20Sopenharmony_ciconfig MODULE_COMPRESS 23288c2ecf20Sopenharmony_ci bool "Compress modules on installation" 23298c2ecf20Sopenharmony_ci help 23308c2ecf20Sopenharmony_ci 23318c2ecf20Sopenharmony_ci Compresses kernel modules when 'make modules_install' is run; gzip or 23328c2ecf20Sopenharmony_ci xz depending on "Compression algorithm" below. 23338c2ecf20Sopenharmony_ci 23348c2ecf20Sopenharmony_ci module-init-tools MAY support gzip, and kmod MAY support gzip and xz. 23358c2ecf20Sopenharmony_ci 23368c2ecf20Sopenharmony_ci Out-of-tree kernel modules installed using Kbuild will also be 23378c2ecf20Sopenharmony_ci compressed upon installation. 23388c2ecf20Sopenharmony_ci 23398c2ecf20Sopenharmony_ci Note: for modules inside an initrd or initramfs, it's more efficient 23408c2ecf20Sopenharmony_ci to compress the whole initrd or initramfs instead. 23418c2ecf20Sopenharmony_ci 23428c2ecf20Sopenharmony_ci Note: This is fully compatible with signed modules. 23438c2ecf20Sopenharmony_ci 23448c2ecf20Sopenharmony_ci If in doubt, say N. 23458c2ecf20Sopenharmony_ci 23468c2ecf20Sopenharmony_cichoice 23478c2ecf20Sopenharmony_ci prompt "Compression algorithm" 23488c2ecf20Sopenharmony_ci depends on MODULE_COMPRESS 23498c2ecf20Sopenharmony_ci default MODULE_COMPRESS_GZIP 23508c2ecf20Sopenharmony_ci help 23518c2ecf20Sopenharmony_ci This determines which sort of compression will be used during 23528c2ecf20Sopenharmony_ci 'make modules_install'. 23538c2ecf20Sopenharmony_ci 23548c2ecf20Sopenharmony_ci GZIP (default) and XZ are supported. 23558c2ecf20Sopenharmony_ci 23568c2ecf20Sopenharmony_ciconfig MODULE_COMPRESS_GZIP 23578c2ecf20Sopenharmony_ci bool "GZIP" 23588c2ecf20Sopenharmony_ci 23598c2ecf20Sopenharmony_ciconfig MODULE_COMPRESS_XZ 23608c2ecf20Sopenharmony_ci bool "XZ" 23618c2ecf20Sopenharmony_ci 23628c2ecf20Sopenharmony_ciendchoice 23638c2ecf20Sopenharmony_ci 23648c2ecf20Sopenharmony_ciconfig MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS 23658c2ecf20Sopenharmony_ci bool "Allow loading of modules with missing namespace imports" 23668c2ecf20Sopenharmony_ci help 23678c2ecf20Sopenharmony_ci Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in 23688c2ecf20Sopenharmony_ci a namespace. A module that makes use of a symbol exported with such a 23698c2ecf20Sopenharmony_ci namespace is required to import the namespace via MODULE_IMPORT_NS(). 23708c2ecf20Sopenharmony_ci There is no technical reason to enforce correct namespace imports, 23718c2ecf20Sopenharmony_ci but it creates consistency between symbols defining namespaces and 23728c2ecf20Sopenharmony_ci users importing namespaces they make use of. This option relaxes this 23738c2ecf20Sopenharmony_ci requirement and lifts the enforcement when loading a module. 23748c2ecf20Sopenharmony_ci 23758c2ecf20Sopenharmony_ci If unsure, say N. 23768c2ecf20Sopenharmony_ci 23778c2ecf20Sopenharmony_ciconfig UNUSED_SYMBOLS 23788c2ecf20Sopenharmony_ci bool "Enable unused/obsolete exported symbols" 23798c2ecf20Sopenharmony_ci default y if X86 23808c2ecf20Sopenharmony_ci help 23818c2ecf20Sopenharmony_ci Unused but exported symbols make the kernel needlessly bigger. For 23828c2ecf20Sopenharmony_ci that reason most of these unused exports will soon be removed. This 23838c2ecf20Sopenharmony_ci option is provided temporarily to provide a transition period in case 23848c2ecf20Sopenharmony_ci some external kernel module needs one of these symbols anyway. If you 23858c2ecf20Sopenharmony_ci encounter such a case in your module, consider if you are actually 23868c2ecf20Sopenharmony_ci using the right API. (rationale: since nobody in the kernel is using 23878c2ecf20Sopenharmony_ci this in a module, there is a pretty good chance it's actually the 23888c2ecf20Sopenharmony_ci wrong interface to use). If you really need the symbol, please send a 23898c2ecf20Sopenharmony_ci mail to the linux kernel mailing list mentioning the symbol and why 23908c2ecf20Sopenharmony_ci you really need it, and what the merge plan to the mainline kernel for 23918c2ecf20Sopenharmony_ci your module is. 23928c2ecf20Sopenharmony_ci 23938c2ecf20Sopenharmony_ciconfig TRIM_UNUSED_KSYMS 23948c2ecf20Sopenharmony_ci bool "Trim unused exported kernel symbols" 23958c2ecf20Sopenharmony_ci depends on !UNUSED_SYMBOLS 23968c2ecf20Sopenharmony_ci help 23978c2ecf20Sopenharmony_ci The kernel and some modules make many symbols available for 23988c2ecf20Sopenharmony_ci other modules to use via EXPORT_SYMBOL() and variants. Depending 23998c2ecf20Sopenharmony_ci on the set of modules being selected in your kernel configuration, 24008c2ecf20Sopenharmony_ci many of those exported symbols might never be used. 24018c2ecf20Sopenharmony_ci 24028c2ecf20Sopenharmony_ci This option allows for unused exported symbols to be dropped from 24038c2ecf20Sopenharmony_ci the build. In turn, this provides the compiler more opportunities 24048c2ecf20Sopenharmony_ci (especially when using LTO) for optimizing the code and reducing 24058c2ecf20Sopenharmony_ci binary size. This might have some security advantages as well. 24068c2ecf20Sopenharmony_ci 24078c2ecf20Sopenharmony_ci If unsure, or if you need to build out-of-tree modules, say N. 24088c2ecf20Sopenharmony_ci 24098c2ecf20Sopenharmony_ciconfig UNUSED_KSYMS_WHITELIST 24108c2ecf20Sopenharmony_ci string "Whitelist of symbols to keep in ksymtab" 24118c2ecf20Sopenharmony_ci depends on TRIM_UNUSED_KSYMS 24128c2ecf20Sopenharmony_ci help 24138c2ecf20Sopenharmony_ci By default, all unused exported symbols will be un-exported from the 24148c2ecf20Sopenharmony_ci build when TRIM_UNUSED_KSYMS is selected. 24158c2ecf20Sopenharmony_ci 24168c2ecf20Sopenharmony_ci UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept 24178c2ecf20Sopenharmony_ci exported at all times, even in absence of in-tree users. The value to 24188c2ecf20Sopenharmony_ci set here is the path to a text file containing the list of symbols, 24198c2ecf20Sopenharmony_ci one per line. The path can be absolute, or relative to the kernel 24208c2ecf20Sopenharmony_ci source tree. 24218c2ecf20Sopenharmony_ci 24228c2ecf20Sopenharmony_ciendif # MODULES 24238c2ecf20Sopenharmony_ci 24248c2ecf20Sopenharmony_ciconfig MODULES_TREE_LOOKUP 24258c2ecf20Sopenharmony_ci def_bool y 24268c2ecf20Sopenharmony_ci depends on PERF_EVENTS || TRACING || CFI_CLANG 24278c2ecf20Sopenharmony_ci 24288c2ecf20Sopenharmony_ciconfig INIT_ALL_POSSIBLE 24298c2ecf20Sopenharmony_ci bool 24308c2ecf20Sopenharmony_ci help 24318c2ecf20Sopenharmony_ci Back when each arch used to define their own cpu_online_mask and 24328c2ecf20Sopenharmony_ci cpu_possible_mask, some of them chose to initialize cpu_possible_mask 24338c2ecf20Sopenharmony_ci with all 1s, and others with all 0s. When they were centralised, 24348c2ecf20Sopenharmony_ci it was better to provide this option than to break all the archs 24358c2ecf20Sopenharmony_ci and have several arch maintainers pursuing me down dark alleys. 24368c2ecf20Sopenharmony_ci 24378c2ecf20Sopenharmony_cisource "block/Kconfig" 24388c2ecf20Sopenharmony_ci 24398c2ecf20Sopenharmony_ciconfig PREEMPT_NOTIFIERS 24408c2ecf20Sopenharmony_ci bool 24418c2ecf20Sopenharmony_ci 24428c2ecf20Sopenharmony_ciconfig PADATA 24438c2ecf20Sopenharmony_ci depends on SMP 24448c2ecf20Sopenharmony_ci bool 24458c2ecf20Sopenharmony_ci 24468c2ecf20Sopenharmony_ciconfig ASN1 24478c2ecf20Sopenharmony_ci tristate 24488c2ecf20Sopenharmony_ci help 24498c2ecf20Sopenharmony_ci Build a simple ASN.1 grammar compiler that produces a bytecode output 24508c2ecf20Sopenharmony_ci that can be interpreted by the ASN.1 stream decoder and used to 24518c2ecf20Sopenharmony_ci inform it as to what tags are to be expected in a stream and what 24528c2ecf20Sopenharmony_ci functions to call on what tags. 24538c2ecf20Sopenharmony_ci 24548c2ecf20Sopenharmony_cisource "kernel/Kconfig.locks" 24558c2ecf20Sopenharmony_ci 24568c2ecf20Sopenharmony_ciconfig ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 24578c2ecf20Sopenharmony_ci bool 24588c2ecf20Sopenharmony_ci 24598c2ecf20Sopenharmony_ciconfig ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 24608c2ecf20Sopenharmony_ci bool 24618c2ecf20Sopenharmony_ci 24628c2ecf20Sopenharmony_ci# It may be useful for an architecture to override the definitions of the 24638c2ecf20Sopenharmony_ci# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h> 24648c2ecf20Sopenharmony_ci# and the COMPAT_ variants in <linux/compat.h>, in particular to use a 24658c2ecf20Sopenharmony_ci# different calling convention for syscalls. They can also override the 24668c2ecf20Sopenharmony_ci# macros for not-implemented syscalls in kernel/sys_ni.c and 24678c2ecf20Sopenharmony_ci# kernel/time/posix-stubs.c. All these overrides need to be available in 24688c2ecf20Sopenharmony_ci# <asm/syscall_wrapper.h>. 24698c2ecf20Sopenharmony_ciconfig ARCH_HAS_SYSCALL_WRAPPER 24708c2ecf20Sopenharmony_ci def_bool n 2471