^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) config DEFCONFIG_LIST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) depends on !UML
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) option defconfig_list
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) default "/lib/modules/$(shell,uname -r)/.config"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) default "/etc/kernel-config"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) default "/boot/config-$(shell,uname -r)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) default "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) config CC_VERSION_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) default "$(CC_VERSION_TEXT)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) This is used in unclear ways:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) - Re-run Kconfig when the compiler is updated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) The 'default' property references the environment variable,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) When the compiler is updated, Kconfig will be invoked.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - Ensure full rebuild when the compier is updated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) include/linux/kconfig.h contains this option in the comment line so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) fixdep adds include/config/cc/version/text.h into the auto-generated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) dependency. When the compiler is updated, syncconfig will touch it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) and then every file will be rebuilt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) config CC_IS_GCC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) config GCC_VERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) default $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) if CC_IS_GCC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) default 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) config LD_VERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) default $(shell,$(LD) --version | $(srctree)/scripts/ld-version.sh)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) config CC_IS_CLANG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q clang)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) config LD_IS_LLD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) def_bool $(success,$(LD) -v | head -n 1 | grep -q LLD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) config CLANG_VERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) config LLD_VERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) default $(shell,$(srctree)/scripts/lld-version.sh $(LD))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) config CC_CAN_LINK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag)) if 64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) config CC_CAN_LINK_STATIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag) -static) if 64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag) -static)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) config CC_HAS_ASM_GOTO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) config CC_HAS_ASM_GOTO_OUTPUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) depends on CC_HAS_ASM_GOTO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 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)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) config TOOLS_SUPPORT_RELR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) config CC_HAS_ASM_INLINE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) config CONSTRUCTORS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) depends on !UML
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) config IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) config BUILDTIME_TABLE_SORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) config THREAD_INFO_IN_TASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) Select this to move thread_info off the stack into task_struct. To
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) make this work, an arch will need to remove all thread_info fields
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) except flags and fix any runtime bugs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) One subtle change that will be needed is to use try_get_task_stack()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) and put_task_stack() in save_thread_stack_tsk() and get_wchan().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) menu "General setup"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) config BROKEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) config BROKEN_ON_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) depends on BROKEN || !SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) config INIT_ENV_ARG_LIMIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) default 32 if !UML
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) default 128 if UML
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) Maximum of each of the number of arguments and environment
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) variables passed to init from the kernel command line.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) config COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) bool "Compile also drivers which will not load"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) depends on HAS_IOMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) Some drivers can be compiled on a different platform than they are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) intended to be run on. Despite they cannot be loaded there (or even
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) when they load they cannot be used due to missing HW support),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) developers still, opposing to distributors, might want to build such
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) drivers to compile-test them.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) If you are a developer and want to build everything available, say Y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) here. If you are a user/distributor, say N here to exclude useless
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) drivers to be distributed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) config UAPI_HEADER_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) bool "Compile test UAPI headers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) depends on HEADERS_INSTALL && CC_CAN_LINK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) Compile test headers exported to user-space to ensure they are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) self-contained, i.e. compilable as standalone units.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) If you are a developer or tester and want to ensure the exported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) headers are self-contained, say Y here. Otherwise, choose N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) config LOCALVERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) string "Local version - append to kernel release"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) Append an extra string to the end of your kernel version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) This will show up when you type uname, for example.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) The string you set here will be appended after the contents of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) any files with a filename matching localversion* in your
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) object and source tree, in that order. Your total string can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) be a maximum of 64 characters.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) config LOCALVERSION_AUTO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) bool "Automatically append version information to the version string"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) depends on !COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) This will try to automatically determine if the current tree is a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) release tree by looking for git tags that belong to the current
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) top of tree revision.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) A string of the format -gxxxxxxxx will be added to the localversion
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) if a git-based tree is found. The string generated by this will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) appended after any matching localversion* files, and after the value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) set in CONFIG_LOCALVERSION.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) (The actual string used here is the first eight characters produced
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) by running the command:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) $ git rev-parse --verify HEAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) which is done within the script "scripts/setlocalversion".)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) config BUILD_SALT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) string "Build ID Salt"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) default ""
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) The build ID is used to link binaries and their debug info. Setting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) this option will use the value in the calculation of the build id.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) This is mostly useful for distributions which want to ensure the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) build is unique between builds. It's safe to leave the default.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) config HAVE_KERNEL_GZIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) config HAVE_KERNEL_BZIP2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) config HAVE_KERNEL_LZMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) config HAVE_KERNEL_XZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) config HAVE_KERNEL_LZO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) config HAVE_KERNEL_LZ4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) config HAVE_KERNEL_ZSTD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) config HAVE_KERNEL_UNCOMPRESSED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) choice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) prompt "Kernel compression mode"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) default KERNEL_GZIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 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
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) The linux kernel is a kind of self-extracting executable.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) Several compression algorithms are available, which differ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) in efficiency, compression and decompression speed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) Compression speed is only relevant when building a kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) Decompression speed is relevant at each boot.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) If you have any problems with bzip2 or lzma compressed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) version of this functionality (bzip2 only), for 2.4, was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) supplied by Christian Ludwig)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) High compression options are mostly useful for users, who
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) are low on disk space (embedded systems), but for whom ram
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) size matters less.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) If in doubt, select 'gzip'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) config KERNEL_GZIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) bool "Gzip"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) depends on HAVE_KERNEL_GZIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) The old and tried gzip compression. It provides a good balance
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) between compression ratio and decompression speed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) config KERNEL_BZIP2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) bool "Bzip2"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) depends on HAVE_KERNEL_BZIP2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) Its compression ratio and speed is intermediate.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) Decompression speed is slowest among the choices. The kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) size is about 10% smaller with bzip2, in comparison to gzip.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) Bzip2 uses a large amount of memory. For modern kernels you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) will need at least 8MB RAM or more for booting.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) config KERNEL_LZMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) bool "LZMA"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) depends on HAVE_KERNEL_LZMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) This compression algorithm's ratio is best. Decompression speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) is between gzip and bzip2. Compression is slowest.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) The kernel size is about 33% smaller with LZMA in comparison to gzip.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) config KERNEL_XZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) bool "XZ"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) depends on HAVE_KERNEL_XZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) XZ uses the LZMA2 algorithm and instruction set specific
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) BCJ filters which can improve compression ratio of executable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) code. The size of the kernel is about 30% smaller with XZ in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) comparison to gzip. On architectures for which there is a BCJ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) will create a few percent smaller kernel than plain LZMA.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) The speed is about the same as with LZMA: The decompression
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) speed of XZ is better than that of bzip2 but worse than gzip
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) and LZO. Compression is slow.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) config KERNEL_LZO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) bool "LZO"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) depends on HAVE_KERNEL_LZO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) Its compression ratio is the poorest among the choices. The kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) size is about 10% bigger than gzip; however its speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) (both compression and decompression) is the fastest.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) config KERNEL_LZ4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) bool "LZ4"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) depends on HAVE_KERNEL_LZ4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) A preliminary version of LZ4 de/compression tool is available at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) <https://code.google.com/p/lz4/>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) Its compression ratio is worse than LZO. The size of the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) is about 8% bigger than LZO. But the decompression speed is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) faster than LZO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) config KERNEL_ZSTD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) bool "ZSTD"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) depends on HAVE_KERNEL_ZSTD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) ZSTD is a compression algorithm targeting intermediate compression
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) with fast decompression speed. It will compress better than GZIP and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) decompress around the same speed as LZO, but slower than LZ4. You
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) will need at least 192 KB RAM or more for booting. The zstd command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) line tool is required for compression.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) config KERNEL_UNCOMPRESSED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) bool "None"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) depends on HAVE_KERNEL_UNCOMPRESSED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) Produce uncompressed kernel image. This option is usually not what
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) you want. It is useful for debugging the kernel in slow simulation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) environments, where decompressing and moving the kernel is awfully
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) slow. This option allows early boot code to skip the decompressor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) and jump right at uncompressed kernel image.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) endchoice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) config DEFAULT_INIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) string "Default init path"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) default ""
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) This option determines the default init for the system if no init=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) option is passed on the kernel command line. If the requested path is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) not present, we will still then move on to attempting further
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) locations (e.g. /sbin/init, etc). If this is empty, we will just use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) the fallback list when init= is not passed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) config DEFAULT_HOSTNAME
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) string "Default hostname"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) default "(none)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) This option determines the default system hostname before userspace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) calls sethostname(2). The kernel traditionally uses "(none)" here,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) but you may wish to use a different default here to make a minimal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) system more usable with less configuration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) # For some reason microblaze and nios2 hard code SWAP=n. Hopefully we can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) # add proper SWAP support to them, in which case this can be remove.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) config ARCH_NO_SWAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) config SWAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) bool "Support for paging of anonymous memory (swap)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) depends on MMU && BLOCK && !ARCH_NO_SWAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) This option allows you to choose whether you want to have support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) for so called swap devices or swap files in your kernel that are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) used to provide more virtual memory than the actual RAM present
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) in your computer. If unsure say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) config SYSVIPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) bool "System V IPC"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) Inter Process Communication is a suite of library functions and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) system calls which let processes (running programs) synchronize and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) exchange information. It is generally considered to be a good thing,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) and some programs won't run unless you say Y here. In particular, if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) you want to run the DOS emulator dosemu under Linux (read the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) you'll need to say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) You can find documentation about IPC with "info ipc" and also in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) section 6.4 of the Linux Programmer's Guide, available from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) <http://www.tldp.org/guides.html>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) config SYSVIPC_SYSCTL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) depends on SYSVIPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) depends on SYSCTL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) config POSIX_MQUEUE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) bool "POSIX Message Queues"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) depends on NET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) POSIX variant of message queues is a part of IPC. In POSIX message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) queues every message has a priority which decides about succession
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) of receiving it by a process. If you want to compile and run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) programs written e.g. for Solaris with use of its POSIX message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) queues (functions mq_*) say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) POSIX message queues are visible as a filesystem called 'mqueue'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) and can be mounted somewhere if you want to do filesystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) operations on message queues.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) config POSIX_MQUEUE_SYSCTL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) depends on POSIX_MQUEUE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) depends on SYSCTL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) config WATCH_QUEUE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) bool "General notification queue"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) This is a general notification queue for the kernel to pass events to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) userspace by splicing them into pipes. It can be used in conjunction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) with watches for key/keyring change notifications and device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) notifications.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) See Documentation/watch_queue.rst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) config CROSS_MEMORY_ATTACH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) bool "Enable process_vm_readv/writev syscalls"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) depends on MMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) Enabling this option adds the system calls process_vm_readv and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) process_vm_writev which allow a process with the correct privileges
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) to directly read from or write to another process' address space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) See the man page for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) config USELIB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) bool "uselib syscall"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) This option enables the uselib syscall, a system call used in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) dynamic linker from libc5 and earlier. glibc does not use this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) system call. If you intend to run programs built on libc5 or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) earlier, you may need to enable this syscall. Current systems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) running glibc can safely disable this.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) config AUDIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) bool "Auditing support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) depends on NET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) Enable auditing infrastructure that can be used with another
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) kernel subsystem, such as SELinux (which requires this for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) logging of avc messages output). System call auditing is included
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) on architectures which support it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) config HAVE_ARCH_AUDITSYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) config AUDITSYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) depends on AUDIT && HAVE_ARCH_AUDITSYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) select FSNOTIFY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) source "kernel/irq/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) source "kernel/time/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) source "kernel/Kconfig.preempt"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) menu "CPU/Task time and stats accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) config VIRT_CPU_ACCOUNTING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) choice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) prompt "Cputime accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) default TICK_CPU_ACCOUNTING if !PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) default VIRT_CPU_ACCOUNTING_NATIVE if PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) # Kind of a stub config for the pure tick based cputime accounting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) config TICK_CPU_ACCOUNTING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) bool "Simple tick based cputime accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) depends on !S390 && !NO_HZ_FULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) This is the basic tick based cputime accounting that maintains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) statistics about user, system and idle time spent on per jiffies
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) granularity.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) config VIRT_CPU_ACCOUNTING_NATIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) bool "Deterministic task and CPU time accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) select VIRT_CPU_ACCOUNTING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) Select this option to enable more accurate task and CPU time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) accounting. This is done by reading a CPU counter on each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) kernel entry and exit and on transitions within the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) between system, softirq and hardirq state, so there is a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) small performance impact. In the case of s390 or IBM POWER > 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) this also enables accounting of stolen time on logically-partitioned
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) config VIRT_CPU_ACCOUNTING_GEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) bool "Full dynticks CPU time accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) depends on HAVE_CONTEXT_TRACKING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) depends on GENERIC_CLOCKEVENTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) select VIRT_CPU_ACCOUNTING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) select CONTEXT_TRACKING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) Select this option to enable task and CPU time accounting on full
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) dynticks systems. This accounting is implemented by watching every
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) kernel-user boundaries using the context tracking subsystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) The accounting is thus performed at the expense of some significant
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) overhead.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) For now this is only useful if you are working on the full
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) dynticks subsystem development.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) endchoice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) config IRQ_TIME_ACCOUNTING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) bool "Fine granularity task level IRQ time accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) Select this option to enable fine granularity task irq time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) accounting. This is done by reading a timestamp on each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) transitions between softirq and hardirq state, so there can be a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) small performance impact.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) If in doubt, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) config HAVE_SCHED_AVG_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) config SCHED_THERMAL_PRESSURE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) default y if ARM && ARM_CPU_TOPOLOGY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) default y if ARM64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) depends on CPU_FREQ_THERMAL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) Select this option to enable thermal pressure accounting in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) scheduler. Thermal pressure is the value conveyed to the scheduler
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) that reflects the reduction in CPU compute capacity resulted from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) thermal throttling. Thermal throttling occurs when the performance of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) a CPU is capped due to high operating temperatures.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) If selected, the scheduler will be able to balance tasks accordingly,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) i.e. put less load on throttled CPUs than on non/less throttled ones.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) This requires the architecture to implement
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) arch_set_thermal_pressure() and arch_get_thermal_pressure().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) config BSD_PROCESS_ACCT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) bool "BSD Process Accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) depends on MULTIUSER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) If you say Y here, a user level program will be able to instruct the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) kernel (via a special system call) to write process accounting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) information to a file: whenever a process exits, information about
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) that process will be appended to the file by the kernel. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) information includes things such as creation time, owning user,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) command name, memory usage, controlling terminal etc. (the complete
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) list is in the struct acct in <file:include/linux/acct.h>). It is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) up to the user level program to do useful things with this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) information. This is generally a good idea, so say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) config BSD_PROCESS_ACCT_V3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) bool "BSD Process Accounting version 3 file format"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) depends on BSD_PROCESS_ACCT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) If you say Y here, the process accounting information is written
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) in a new file format that also logs the process IDs of each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) process and its parent. Note that this file format is incompatible
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) with previous v0/v1/v2 file formats, so you will need updated tools
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) for processing it. A preliminary version of these tools is available
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) at <http://www.gnu.org/software/acct/>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) config TASKSTATS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) bool "Export task/process statistics through netlink"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) depends on NET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) depends on MULTIUSER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) Export selected statistics for tasks/processes through the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) generic netlink interface. Unlike BSD process accounting, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) statistics are available during the lifetime of tasks/processes as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) responses to commands. Like BSD accounting, they are sent to user
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) space on task exit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) config TASK_DELAY_ACCT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) bool "Enable per-task delay accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) depends on TASKSTATS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) select SCHED_INFO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) Collect information on time spent by a task waiting for system
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) resources like cpu, synchronous block I/O completion and swapping
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) in pages. Such statistics can help in setting a task's priorities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) relative to other tasks for cpu, io, rss limits etc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) config TASK_XACCT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) bool "Enable extended accounting over taskstats"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) depends on TASKSTATS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) Collect extended task accounting data and send the data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) to userland for processing over the taskstats interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) config TASK_IO_ACCOUNTING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) bool "Enable per-task storage I/O accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) depends on TASK_XACCT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) Collect information on the number of bytes of storage I/O which this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) task has caused.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) config PSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) bool "Pressure stall information tracking"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) Collect metrics that indicate how overcommitted the CPU, memory,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) and IO capacity are in the system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) If you say Y here, the kernel will create /proc/pressure/ with the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) pressure statistics files cpu, memory, and io. These will indicate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) the share of walltime in which some or all tasks in the system are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) delayed due to contention of the respective resource.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) In kernels with cgroup support, cgroups (cgroup2 only) will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) have cpu.pressure, memory.pressure, and io.pressure files,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) which aggregate pressure stalls for the grouped tasks only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) For more details see Documentation/accounting/psi.rst.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) config PSI_DEFAULT_DISABLED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) bool "Require boot parameter to enable pressure stall information tracking"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) depends on PSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) If set, pressure stall information tracking will be disabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) per default but can be enabled through passing psi=1 on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) kernel commandline during boot.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) This feature adds some code to the task wakeup and sleep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) paths of the scheduler. The overhead is too low to affect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) common scheduling-intense workloads in practice (such as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) webservers, memcache), but it does show up in artificial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) scheduler stress tests, such as hackbench.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) If you are paranoid and not sure what the kernel will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) used for, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) endmenu # "CPU/Task time and stats accounting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) config CPU_ISOLATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) bool "CPU isolation"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) depends on SMP || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) Make sure that CPUs running critical tasks are not disturbed by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) any source of "noise" such as unbound workqueues, timers, kthreads...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) Unbound jobs get offloaded to housekeeping CPUs. This is driven by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) the "isolcpus=" boot parameter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) Say Y if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) source "kernel/rcu/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) config BUILD_BIN2C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) config IKCONFIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) tristate "Kernel .config support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) This option enables the complete Linux kernel ".config" file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) contents to be saved in the kernel. It provides documentation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) of which kernel options are used in a running kernel or in an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) on-disk kernel. This information can be extracted from the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) image file with the script scripts/extract-ikconfig and used as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) input to rebuild the current kernel or to build another kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) It can also be extracted from a running kernel by reading
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) /proc/config.gz if enabled (below).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) config IKCONFIG_PROC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) bool "Enable access to .config through /proc/config.gz"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) depends on IKCONFIG && PROC_FS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) This option enables access to the kernel configuration file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) through /proc/config.gz.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) config IKHEADERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) depends on SYSFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) This option enables access to the in-kernel headers that are generated during
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) the build process. These can be used to build eBPF tracing programs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) or similar programs. If you build the headers as a module, a module called
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) kheaders.ko is built which can be loaded on-demand to get access to headers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) config LOG_BUF_SHIFT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) range 12 25 if !H8300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) range 12 19 if H8300
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) default 17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) depends on PRINTK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) Select the minimal kernel log buffer size as a power of 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) The final size is affected by LOG_CPU_MAX_BUF_SHIFT config
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) parameter, see below. Any higher size also might be forced
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) by "log_buf_len" boot parameter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) Examples:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) 17 => 128 KB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) 16 => 64 KB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) 15 => 32 KB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) 14 => 16 KB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) 13 => 8 KB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) 12 => 4 KB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) config LOG_CPU_MAX_BUF_SHIFT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) range 0 21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) default 12 if !BASE_SMALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) default 0 if BASE_SMALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) depends on PRINTK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) This option allows to increase the default ring buffer size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) according to the number of CPUs. The value defines the contribution
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) of each CPU as a power of 2. The used space is typically only few
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) lines however it might be much more when problems are reported,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) e.g. backtraces.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) The increased size means that a new buffer has to be allocated and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) the original static one is unused. It makes sense only on systems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) with more CPUs. Therefore this value is used only when the sum of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) contributions is greater than the half of the default kernel ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) buffer as defined by LOG_BUF_SHIFT. The default values are set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) so that more than 16 CPUs are needed to trigger the allocation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) Also this option is ignored when "log_buf_len" kernel parameter is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) used as it forces an exact (power of two) size of the ring buffer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) The number of possible CPUs is used for this computation ignoring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) hotplugging making the computation optimal for the worst case
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) scenario while allowing a simple algorithm to be used from bootup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) Examples shift values and their meaning:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) 17 => 128 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) 16 => 64 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) 15 => 32 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) 14 => 16 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) 13 => 8 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) 12 => 4 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) config PRINTK_SAFE_LOG_BUF_SHIFT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) int "Temporary per-CPU printk log buffer size (12 => 4KB, 13 => 8KB)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) range 10 21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) default 13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) depends on PRINTK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) Select the size of an alternate printk per-CPU buffer where messages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) printed from usafe contexts are temporary stored. One example would
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) be NMI messages, another one - printk recursion. The messages are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) copied to the main log buffer in a safe context to avoid a deadlock.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) The value defines the size as a power of 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) Those messages are rare and limited. The largest one is when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) a backtrace is printed. It usually fits into 4KB. Select
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) 8KB if you want to be on the safe side.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) Examples:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) 17 => 128 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) 16 => 64 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) 15 => 32 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) 14 => 16 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) 13 => 8 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) 12 => 4 KB for each CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) # Architectures with an unreliable sched_clock() should select this:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) config HAVE_UNSTABLE_SCHED_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) config GENERIC_SCHED_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) menu "Scheduler features"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) config UCLAMP_TASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) bool "Enable utilization clamping for RT/FAIR tasks"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) depends on CPU_FREQ_GOV_SCHEDUTIL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) This feature enables the scheduler to track the clamped utilization
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) of each CPU based on RUNNABLE tasks scheduled on that CPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) With this option, the user can specify the min and max CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) utilization allowed for RUNNABLE tasks. The max utilization defines
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) the maximum frequency a task should use while the min utilization
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) defines the minimum frequency it should use.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) Both min and max utilization clamp values are hints to the scheduler,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) aiming at improving its frequency selection policy, but they do not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) enforce or grant any specific bandwidth for tasks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) config UCLAMP_BUCKETS_COUNT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) int "Number of supported utilization clamp buckets"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) range 5 20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) default 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) depends on UCLAMP_TASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) Defines the number of clamp buckets to use. The range of each bucket
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) number of clamp buckets the finer their granularity and the higher
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) the precision of clamping aggregation and tracking at run-time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) For example, with the minimum configuration value we will have 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) clamp buckets tracking 20% utilization each. A 25% boosted tasks will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) be refcounted in the [20..39]% bucket and will set the bucket clamp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) effective value to 25%.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) If a second 30% boosted task should be co-scheduled on the same CPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) that task will be refcounted in the same bucket of the first task and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) it will boost the bucket clamp effective value to 30%.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) The clamp effective value of a bucket is reset to its nominal value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) (20% in the example above) when there are no more tasks refcounted in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) that bucket.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) An additional boost/capping margin can be added to some tasks. In the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) example above the 25% task will be boosted to 30% until it exits the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) CPU. If that should be considered not acceptable on certain systems,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) it's always possible to reduce the margin by increasing the number of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) clamp buckets to trade off used memory for run-time tracking
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) precision.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) If in doubt, use the default value.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) endmenu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) # For architectures that want to enable the support for NUMA-affine scheduler
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) # balancing logic:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) config ARCH_SUPPORTS_NUMA_BALANCING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) # For architectures that prefer to flush all TLBs after a number of pages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) # are unmapped instead of sending one IPI per page to flush. The architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) # must provide guarantees on what happens if a clean TLB cache entry is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) # written after the unmap. Details are in mm/rmap.c near the check for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) # should_defer_flush. The architecture should also consider if the full flush
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) # and the refill costs are offset by the savings of sending fewer IPIs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) config CC_HAS_INT128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) # For architectures that know their GCC __int128 support is sound
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) config ARCH_SUPPORTS_INT128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) # For architectures that (ab)use NUMA to represent different memory regions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) # all cpu-local but of different latencies, such as SuperH.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) config ARCH_WANT_NUMA_VARIABLE_LOCALITY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) config NUMA_BALANCING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) bool "Memory placement aware NUMA scheduler"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) depends on ARCH_SUPPORTS_NUMA_BALANCING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) depends on SMP && NUMA && MIGRATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) This option adds support for automatic NUMA aware memory/task placement.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) The mechanism is quite primitive and is based on migrating memory when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) it has references to the node the task is running on.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) This system will be inactive on UMA systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) config NUMA_BALANCING_DEFAULT_ENABLED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) bool "Automatically enable NUMA aware memory/task placement"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) depends on NUMA_BALANCING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) If set, automatic NUMA balancing will be enabled if running on a NUMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) machine.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) menuconfig CGROUPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) bool "Control Group support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) select KERNFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) This option adds support for grouping sets of processes together, for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) use with process control subsystems such as Cpusets, CFS, memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) controls or device isolation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) See
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) - Documentation/scheduler/sched-design-CFS.rst (CFS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) and resource control)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) if CGROUPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) config PAGE_COUNTER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) config MEMCG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) bool "Memory controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) select PAGE_COUNTER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) select EVENTFD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) Provides control over the memory footprint of tasks in a cgroup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) config MEMCG_SWAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) depends on MEMCG && SWAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) config MEMCG_KMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) depends on MEMCG && !SLOB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) config BLK_CGROUP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) bool "IO controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) depends on BLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) Generic block IO controller cgroup interface. This is the common
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) cgroup interface which should be used by various IO controlling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) policies.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) Currently, CFQ IO scheduler uses it to recognize task groups and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) control disk bandwidth allocation (proportional time slice allocation)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) to such task groups. It is also used by bio throttling logic in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) block layer to implement upper limit in IO rates on a device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) This option only enables generic Block IO controller infrastructure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) One needs to also enable actual IO controlling logic/policy. For
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) enabling proportional weight division of disk bandwidth in CFQ, set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) CONFIG_BLK_DEV_THROTTLING=y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) config CGROUP_WRITEBACK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) depends on MEMCG && BLK_CGROUP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) menuconfig CGROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) bool "CPU controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) This feature lets CPU scheduler recognize task groups and control CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) bandwidth allocation to such task groups. It uses cgroups to group
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) tasks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) if CGROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) config FAIR_GROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) bool "Group scheduling for SCHED_OTHER"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) depends on CGROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) default CGROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) config CFS_BANDWIDTH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) depends on FAIR_GROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) This option allows users to define CPU bandwidth rates (limits) for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) tasks running within the fair group scheduler. Groups with no limit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) set are considered to be unconstrained and will run with no
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) restriction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) See Documentation/scheduler/sched-bwc.rst for more information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) config RT_GROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) bool "Group scheduling for SCHED_RR/FIFO"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) depends on CGROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973) This feature lets you explicitly allocate real CPU bandwidth
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) to task groups. If enabled, it will also make it impossible to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) schedule realtime tasks for non-root users until you allocate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) realtime bandwidth for them.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) See Documentation/scheduler/sched-rt-group.rst for more information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) endif #CGROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) config UCLAMP_TASK_GROUP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) bool "Utilization clamping per group of tasks"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) depends on CGROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) depends on UCLAMP_TASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) This feature enables the scheduler to track the clamped utilization
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) of each CPU based on RUNNABLE tasks currently scheduled on that CPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) When this option is enabled, the user can specify a min and max
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) CPU bandwidth which is allowed for each single task in a group.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) The max bandwidth allows to clamp the maximum frequency a task
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) can use, while the min bandwidth allows to define a minimum
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) frequency a task will always use.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) When task group based utilization clamping is enabled, an eventually
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) specified task-specific clamp value is constrained by the cgroup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) specified clamp value. Both minimum and maximum task clamping cannot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) be bigger than the corresponding clamping defined at task group level.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) config CGROUP_PIDS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) bool "PIDs controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) Provides enforcement of process number limits in the scope of a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) cgroup. Any attempt to fork more processes than is allowed in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) cgroup will fail. PIDs are fundamentally a global resource because it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) is fairly trivial to reach PID exhaustion before you reach even a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) conservative kmemcg limit. As a result, it is possible to grind a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) system to halt without being limited by other cgroup policies. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) PIDs controller is designed to stop this from happening.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) It should be noted that organisational operations (such as attaching
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) to a cgroup hierarchy) will *not* be blocked by the PIDs controller,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) since the PIDs limit only affects a process's ability to fork, not to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) attach to a cgroup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) config CGROUP_RDMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) bool "RDMA controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) Provides enforcement of RDMA resources defined by IB stack.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) It is fairly easy for consumers to exhaust RDMA resources, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) can result into resource unavailability to other consumers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) RDMA controller is designed to stop this from happening.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) Attaching processes with active RDMA resources to the cgroup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) hierarchy is allowed even if can cross the hierarchy's limit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) config CGROUP_FREEZER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) bool "Freezer controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) Provides a way to freeze and unfreeze all tasks in a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) cgroup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) This option affects the ORIGINAL cgroup interface. The cgroup2 memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) controller includes important in-kernel memory consumers per default.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) If you're using cgroup2, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) config CGROUP_HUGETLB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) bool "HugeTLB controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) depends on HUGETLB_PAGE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) select PAGE_COUNTER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) Provides a cgroup controller for HugeTLB pages.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) When you enable this, you can put a per cgroup limit on HugeTLB usage.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) The limit is enforced during page fault. Since HugeTLB doesn't
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) support page reclaim, enforcing the limit at page fault time implies
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) that, the application will get SIGBUS signal if it tries to access
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) HugeTLB pages beyond its limit. This requires the application to know
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) beforehand how much HugeTLB pages it would require for its use. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) control group is tracked in the third page lru pointer. This means
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) that we cannot use the controller with huge page less than 3 pages.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) config CPUSETS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) bool "Cpuset controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) This option will let you create and manage CPUSETs which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) allow dynamically partitioning a system into sets of CPUs and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) Memory Nodes and assigning tasks to run only within those sets.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) This is primarily useful on large SMP or NUMA systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) config PROC_PID_CPUSET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) bool "Include legacy /proc/<pid>/cpuset file"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) depends on CPUSETS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) config CGROUP_DEVICE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) bool "Device controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) Provides a cgroup controller implementing whitelists for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) devices which a process in the cgroup can mknod or open.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) config CGROUP_CPUACCT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) bool "Simple CPU accounting controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) Provides a simple controller for monitoring the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) total CPU consumed by the tasks in a cgroup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) config CGROUP_PERF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) bool "Perf controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) depends on PERF_EVENTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) This option extends the perf per-cpu mode to restrict monitoring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) to threads which belong to the cgroup specified and run on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) designated cpu. Or this can be used to have cgroup ID in samples
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) so that it can monitor performance events among cgroups.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) config CGROUP_BPF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) bool "Support for eBPF programs attached to cgroups"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) depends on BPF_SYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) select SOCK_CGROUP_DATA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) Allow attaching eBPF programs to a cgroup using the bpf(2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) syscall command BPF_PROG_ATTACH.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) In which context these programs are accessed depends on the type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) of attachment. For instance, programs that are attached using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) BPF_CGROUP_INET_INGRESS will be executed on the ingress path of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) inet sockets.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) config CGROUP_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) bool "Debug controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) depends on DEBUG_KERNEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) This option enables a simple controller that exports
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) debugging information about the cgroups framework. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) controller is for control cgroup debugging only. Its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) interfaces are not stable.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) Say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) config SOCK_CGROUP_DATA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) endif # CGROUPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) menuconfig NAMESPACES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) bool "Namespaces support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) depends on MULTIUSER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) default !EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) Provides the way to make tasks work with different objects using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) the same id. For example same IPC id may refer to different objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) or same user id or pid may refer to different tasks when used in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) different namespaces.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) if NAMESPACES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) config UTS_NS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) bool "UTS namespace"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) In this namespace tasks see different info provided with the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) uname() system call
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) config TIME_NS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) bool "TIME namespace"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) depends on GENERIC_VDSO_TIME_NS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) In this namespace boottime and monotonic clocks can be set.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) The time will keep going with the same pace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) config IPC_NS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) bool "IPC namespace"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) depends on (SYSVIPC || POSIX_MQUEUE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) In this namespace tasks work with IPC ids which correspond to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) different IPC objects in different namespaces.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) config USER_NS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) bool "User namespace"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) This allows containers, i.e. vservers, to use user namespaces
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) to provide different user info for different servers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) When user namespaces are enabled in the kernel it is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) recommended that the MEMCG option also be enabled and that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) user-space use the memory control groups to limit the amount
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) of memory a memory unprivileged users can use.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) config PID_NS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) bool "PID Namespaces"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) Support process id namespaces. This allows having multiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) processes with the same pid as long as they are in different
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) pid namespaces. This is a building block of containers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) config NET_NS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) bool "Network namespace"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) depends on NET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) Allow user space to create what appear to be multiple instances
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) of the network stack.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) endif # NAMESPACES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) config CHECKPOINT_RESTORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) bool "Checkpoint/restore support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) select PROC_CHILDREN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) select KCMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) Enables additional kernel features in a sake of checkpoint/restore.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) In particular it adds auxiliary prctl codes to setup process text,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) data and heap segment sizes, and a few additional /proc filesystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) entries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) If unsure, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) config SCHED_AUTOGROUP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) bool "Automatic process group scheduling"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) select CGROUPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) select CGROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) select FAIR_GROUP_SCHED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) This option optimizes the scheduler for common desktop workloads by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) automatically creating and populating task groups. This separation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) of workloads isolates aggressive CPU burners (like build jobs) from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) desktop applications. Task group autogeneration is currently based
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) upon task session.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) config RT_SOFTINT_OPTIMIZATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) bool "Improve RT scheduling during long softint execution"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) depends on ARM64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) Enable an optimization which tries to avoid placing RT tasks on CPUs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) occupied by nonpreemptible tasks, such as a long softint, or CPUs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) which may soon block preemptions, such as a CPU running a ksoftirq
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) thread which handles slow softints.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) config SYSFS_DEPRECATED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) bool "Enable deprecated sysfs features to support old userspace tools"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) depends on SYSFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) This option adds code that switches the layout of the "block" class
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) devices, to not show up in /sys/class/block/, but only in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) /sys/block/.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) This switch is only active when the sysfs.deprecated=1 boot option is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) passed or the SYSFS_DEPRECATED_V2 option is set.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) This option allows new kernels to run on old distributions and tools,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) which might get confused by /sys/class/block/. Since 2007/2008 all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) major distributions and tools handle this just fine.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) Recent distributions and userspace tools after 2009/2010 depend on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) the existence of /sys/class/block/, and will not work with this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) option enabled.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) Only if you are using a new kernel on an old distribution, you might
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) need to say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) config SYSFS_DEPRECATED_V2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) bool "Enable deprecated sysfs features by default"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) depends on SYSFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) depends on SYSFS_DEPRECATED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) Enable deprecated sysfs by default.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) See the CONFIG_SYSFS_DEPRECATED option for more details about this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) option.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) Only if you are using a new kernel on an old distribution, you might
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) need to say Y here. Even then, odds are you would not need it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) enabled, you can always pass the boot option if absolutely necessary.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) config RELAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) bool "Kernel->user space relay support (formerly relayfs)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) select IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) This option enables support for relay interface support in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) certain file systems (such as debugfs).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) It is designed to provide an efficient mechanism for tools and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) facilities to relay large amounts of data from kernel space to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) user space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) config BLK_DEV_INITRD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) The initial RAM filesystem is a ramfs which is loaded by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) boot loader (loadlin or lilo) and that is mounted as root
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) before the normal boot procedure. It is typically used to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) load modules needed to mount the "real" root file system,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) etc. See <file:Documentation/admin-guide/initrd.rst> for details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) If RAM disk support (BLK_DEV_RAM) is also included, this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) also enables initial RAM disk (initrd) support and adds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) 15 Kbytes (more on some other architectures) to the kernel size.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) If unsure say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) if BLK_DEV_INITRD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) source "usr/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) config INITRD_ASYNC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) bool "Initrd async"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) depends on NO_GKI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) Init ramdisk async, can reduce kernel init time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) config INITCALL_ASYNC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) bool "Call initcall async"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) depends on ROCKCHIP_THUNDER_BOOT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) Call same level initcall async in kthread.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) Kernel parameter "initcall_nr_threads" control how many threads.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) initcall_nr_threads default is 0, which disable intcall async.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) initcall_nr_threads=-1, auto selected the number of threads.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) config BOOT_CONFIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) bool "Boot config support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) select BLK_DEV_INITRD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) Extra boot config allows system admin to pass a config file as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) complemental extension of kernel cmdline when booting.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) The boot config file must be attached at the end of initramfs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) with checksum, size and magic word.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) See <file:Documentation/admin-guide/bootconfig.rst> for details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) choice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) prompt "Compiler optimization level"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) default CC_OPTIMIZE_FOR_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) config CC_OPTIMIZE_FOR_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) bool "Optimize for performance (-O2)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) This is the default optimization level for the kernel, building
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) with the "-O2" compiler flag for best performance and most
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) helpful compile-time warnings.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) config CC_OPTIMIZE_FOR_PERFORMANCE_O3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) bool "Optimize more for performance (-O3)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) depends on ARC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) Choosing this option will pass "-O3" to your compiler to optimize
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) the kernel yet more for performance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) config CC_OPTIMIZE_FOR_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) bool "Optimize for size (-Os)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) Choosing this option will pass "-Os" to your compiler resulting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) in a smaller kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) endchoice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) config HAVE_LD_DEAD_CODE_DATA_ELIMINATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) This requires that the arch annotates or otherwise protects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) its external entry points from being discarded. Linker scripts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) must also merge .text.*, .data.*, and .bss.* correctly into
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) output sections. Care must be taken not to pull in unrelated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) sections (e.g., '.text.init'). Typically '.' in section names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) is used to distinguish them from label names / C identifiers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) config LD_DEAD_CODE_DATA_ELIMINATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) bool "Dead code and data elimination (EXPERIMENTAL)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) depends on EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) depends on $(cc-option,-ffunction-sections -fdata-sections)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) depends on $(ld-option,--gc-sections)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) Enable this if you want to do dead code and data elimination with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) the linker by compiling with -ffunction-sections -fdata-sections,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) and linking with --gc-sections.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) This can reduce on disk and in-memory size of the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) code and static data, particularly for small configs and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) on small systems. This has the possibility of introducing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) silently broken kernel if the required annotations are not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) present. This option is not well tested yet, so use at your
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) own risk.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) config LD_ORPHAN_WARN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) depends on ARCH_WANT_LD_ORPHAN_WARN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) depends on !LD_IS_LLD || LLD_VERSION >= 110000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) depends on $(ld-option,--orphan-handling=warn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) config SYSCTL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) config HAVE_UID16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) config SYSCTL_EXCEPTION_TRACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) Enable support for /proc/sys/debug/exception-trace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) config SYSCTL_ARCH_UNALIGN_NO_WARN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) Enable support for /proc/sys/kernel/ignore-unaligned-usertrap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) Allows arch to define/use @no_unaligned_warning to possibly warn
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) about unaligned access emulation going on under the hood.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) config SYSCTL_ARCH_UNALIGN_ALLOW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) Enable support for /proc/sys/kernel/unaligned-trap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) Allows arches to define/use @unaligned_enabled to runtime toggle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) the unaligned access emulation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) see arch/parisc/kernel/unaligned.c for reference
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) config HAVE_PCSPKR_PLATFORM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) # interpreter that classic socket filters depend on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) config BPF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) menuconfig EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) bool "Configure standard kernel features (expert users)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) # Unhide debug options, to make the on-by-default options visible
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) select DEBUG_KERNEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) This option allows certain base kernel options and settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) to be disabled or tweaked. This is for specialized
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) environments which can tolerate a "non-standard" kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) Only use this if you really know what you are doing.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) config UID16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) bool "Enable 16-bit UID system calls" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) depends on HAVE_UID16 && MULTIUSER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) This enables the legacy 16-bit UID syscall wrappers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) config MULTIUSER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) bool "Multiple users, groups and capabilities support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) This option enables support for non-root users, groups and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) capabilities.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) If you say N here, all processes will run with UID 0, GID 0, and all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) possible capabilities. Saying N here also compiles out support for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) system calls related to UIDs, GIDs, and capabilities, such as setuid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) setgid, and capset.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) If unsure, say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) config SGETMASK_SYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) bool "sgetmask/ssetmask syscalls support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) sys_sgetmask and sys_ssetmask are obsolete system calls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) no longer supported in libc but still enabled by default in some
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) architectures.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) If unsure, leave the default option here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) config SYSFS_SYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) bool "Sysfs syscall support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) sys_sysfs is an obsolete system call no longer supported in libc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) Note that disabling this option is more secure but might break
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) compatibility with some systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) If unsure say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) config FHANDLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) bool "open by fhandle syscalls" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) select EXPORTFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) If you say Y here, a user level program will be able to map
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) file names to handle and then later use the handle for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) different file system operations. This is useful in implementing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) userspace file servers, which now track files using handles instead
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) of names. The handle would remain the same even if file names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) syscalls.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) config POSIX_TIMERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) bool "Posix Clocks & timers" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) This includes native support for POSIX timers to the kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) Some embedded systems have no use for them and therefore they
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) can be configured out to reduce the size of the kernel image.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) When this option is disabled, the following syscalls won't be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) available: timer_create, timer_gettime: timer_getoverrun,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) timer_settime, timer_delete, clock_adjtime, getitimer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) setitimer, alarm. Furthermore, the clock_settime, clock_gettime,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) clock_getres and clock_nanosleep syscalls will be limited to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) If unsure say y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) config PRINTK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) bool "Enable support for printk" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) select IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) This option enables normal printk support. Removing it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) eliminates most of the message strings from the kernel image
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) and makes the kernel more or less silent. As this makes it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) very difficult to diagnose system problems, saying N here is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) strongly discouraged.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) config PRINTK_NMI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) depends on PRINTK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) depends on HAVE_NMI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) config BUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) bool "BUG() support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) Disabling this option eliminates support for BUG and WARN, reducing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) the size of your kernel image and potentially quietly ignoring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) numerous fatal conditions. You should only consider disabling this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) option for embedded systems with no facilities for reporting errors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) Just say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) config ELF_CORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) depends on COREDUMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) bool "Enable ELF core dumps" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) Enable support for generating core dumps. Disabling saves about 4k.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) config PCSPKR_PLATFORM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) bool "Enable PC-Speaker support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) depends on HAVE_PCSPKR_PLATFORM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) select I8253_LOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) This option allows to disable the internal PC-Speaker
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) support, saving some memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) config BASE_FULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) bool "Enable full-sized data structures for core" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) Disabling this option reduces the size of miscellaneous core
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) kernel data structures. This saves memory on small machines,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) but may reduce performance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) config FUTEX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) bool "Enable futex support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) imply RT_MUTEXES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) Disabling this option will cause the kernel to be built without
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) support for "fast userspace mutexes". The resulting kernel may not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) run glibc-based applications correctly.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) config FUTEX_PI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) depends on FUTEX && RT_MUTEXES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) config HAVE_FUTEX_CMPXCHG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) depends on FUTEX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) Architectures should select this if futex_atomic_cmpxchg_inatomic()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) is implemented and always working. This removes a couple of runtime
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) checks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) config EPOLL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) bool "Enable eventpoll support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) Disabling this option will cause the kernel to be built without
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) support for epoll family of system calls.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) config SIGNALFD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582) bool "Enable signalfd() system call" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) Enable the signalfd() system call that allows to receive signals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) on a file descriptor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) config TIMERFD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) bool "Enable timerfd() system call" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) Enable the timerfd() system call that allows to receive timer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) events on a file descriptor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) config EVENTFD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) bool "Enable eventfd() system call" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) Enable the eventfd() system call that allows to receive both
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) kernel notification (ie. KAIO) or userspace notifications.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) config SHMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) bool "Use full shmem filesystem" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) depends on MMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) The shmem is an internal filesystem used to manage shared memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) It is backed by swap and manages resource limits. It is also exported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) to userspace as tmpfs if TMPFS is enabled. Disabling this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) option replaces shmem and tmpfs with the much simpler ramfs code,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) which may be appropriate on small systems without swap.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) config AIO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) bool "Enable AIO support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) This option enables POSIX asynchronous I/O which may by used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) by some high performance threaded applications. Disabling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625) this option saves about 7k.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) config IO_URING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) bool "Enable IO uring support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) select IO_WQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) This option enables support for the io_uring interface, enabling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) applications to submit and complete IO through submission and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) completion rings that are shared between the kernel and application.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) config ADVISE_SYSCALLS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) bool "Enable madvise/fadvise syscalls" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) This option enables the madvise and fadvise syscalls, used by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) applications to advise the kernel about their future memory or file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) usage, improving performance. If building an embedded system where no
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) applications use these syscalls, you can disable this option to save
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) config HAVE_ARCH_USERFAULTFD_WP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) Arch has userfaultfd write protection support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) config HAVE_ARCH_USERFAULTFD_MINOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) Arch has userfaultfd minor fault support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) config MEMBARRIER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) bool "Enable membarrier() system call" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) Enable the membarrier() system call that allows issuing memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) barriers across all running threads, which can be used to distribute
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) the cost of user-space memory barriers asymmetrically by transforming
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) pairs of memory barriers into pairs consisting of membarrier() and a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) compiler barrier.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) config KALLSYMS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) bool "Load all symbols for debugging/ksymoops" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) Say Y here to let the kernel print out symbolic crash information and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) symbolic stack backtraces. This increases the size of the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) somewhat, as all symbols have to be loaded into the kernel image.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) config KALLSYMS_ALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) bool "Include all symbols in kallsyms"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) depends on DEBUG_KERNEL && KALLSYMS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) Normally kallsyms only contains the symbols of functions for nicer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) OOPS messages and backtraces (i.e., symbols from the text and inittext
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) sections). This is sufficient for most cases. And only in very rare
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) cases (e.g., when a debugger is used) all symbols are required (e.g.,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) names of variables from the data sections, etc).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) This option makes sure that all symbols are loaded into the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) image (i.e., symbols from all sections) in cost of increased kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) size (depending on the kernel configuration, it may be 300KiB or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) something like this).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) Say N unless you really need all symbols.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) config KALLSYMS_ABSOLUTE_PERCPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) depends on KALLSYMS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) default X86_64 && SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) config KALLSYMS_BASE_RELATIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) depends on KALLSYMS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) default !IA64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) Instead of emitting them as absolute values in the native word size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) emit the symbol references in the kallsyms table as 32-bit entries,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) each containing a relative value in the range [base, base + U32_MAX]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) an absolute value in the range [0, S32_MAX] or a relative value in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) range [base, base + S32_MAX], where base is the lowest relative symbol
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) address encountered in the image.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) On 64-bit builds, this reduces the size of the address table by 50%,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) but more importantly, it results in entries whose values are build
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) time constants, and no relocation pass is required at runtime to fix
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) up the entries based on the runtime load address of the kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) # end of the "standard kernel features (expert users)" menu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) # syscall, maps, verifier
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) config BPF_LSM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) bool "LSM Instrumentation with BPF"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) depends on BPF_EVENTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) depends on BPF_SYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) depends on SECURITY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725) depends on BPF_JIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) Enables instrumentation of the security hooks with eBPF programs for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) implementing dynamic MAC and Audit Policies.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) If you are unsure how to answer this question, answer N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) config BPF_SYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) bool "Enable bpf() system call"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734) select BPF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) select IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) select TASKS_TRACE_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) Enable the bpf() system call that allows to manipulate eBPF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) programs and maps via file descriptors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742) config ARCH_WANT_DEFAULT_BPF_JIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) config BPF_JIT_ALWAYS_ON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) bool "Permanently enable BPF JIT and remove BPF interpreter"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747) depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749) Enables BPF JIT and removes BPF interpreter to avoid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750) speculative execution of BPF instructions by the interpreter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) config BPF_JIT_DEFAULT_ON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753) def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) depends on HAVE_EBPF_JIT && BPF_JIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756) config BPF_UNPRIV_DEFAULT_OFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) bool "Disable unprivileged BPF by default"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) depends on BPF_SYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760) Disables unprivileged BPF by default by setting the corresponding
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) /proc/sys/kernel/unprivileged_bpf_disabled knob to 2. An admin can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) still reenable it by setting it to 0 later on, or permanently
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763) disable it by setting it to 1 (from which no other transition to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) 0 is possible anymore).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766) source "kernel/bpf/preload/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768) config USERFAULTFD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) bool "Enable userfaultfd() system call"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) depends on MMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772) Enable the userfaultfd() system call that allows to intercept and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) handle page faults in userland.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) config ARCH_HAS_MEMBARRIER_CALLBACKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) config ARCH_HAS_MEMBARRIER_SYNC_CORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781) config KCMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782) bool "Enable kcmp() system call" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784) Enable the kernel resource comparison system call. It provides
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) user-space with the ability to compare two processes to see if they
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786) share a common resource, such as a file descriptor or even virtual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) memory space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791) config RSEQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792) bool "Enable rseq() system call" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) depends on HAVE_RSEQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) select MEMBARRIER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) Enable the restartable sequences system call. It provides a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798) user-space cache for the current CPU number value, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) speeds up getting the current CPU number from user-space,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800) as well as an ABI to speed up user-space operations on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) per-CPU data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805) config DEBUG_RSEQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807) bool "Enabled debugging of rseq() system call" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) depends on RSEQ && DEBUG_KERNEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) Enable extra debugging checks for the rseq system call.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) config EMBEDDED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) bool "Embedded system"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816) option allnoconfig_y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) select EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819) This option should be enabled if compiling the kernel for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) an embedded system so certain expert options are available
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821) for configuration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) config HAVE_PERF_EVENTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) See tools/perf/design.txt for details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828) config PERF_USE_VMALLOC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) See tools/perf/design.txt for details
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) config PC104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) bool "PC/104 support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836) Expose PC/104 form factor device drivers and options available for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) selection and configuration. Enable this option if your target
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) machine has a PC/104 bus.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) menu "Kernel Performance Events And Counters"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842) config PERF_EVENTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) bool "Kernel performance events and counters"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844) default y if PROFILING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) depends on HAVE_PERF_EVENTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) select IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847) select SRCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849) Enable kernel support for various performance events provided
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850) by software and hardware.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) Software events are supported either built-in or via the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) use of generic tracepoints.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) Most modern CPUs support performance events via performance
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856) counter registers. These registers count the number of certain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) types of hw events: such as instructions executed, cachemisses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858) suffered, or branches mis-predicted - without slowing down the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859) kernel or applications. These registers can also trigger interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) when a threshold number of events have passed - and can thus be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) used to profile the code that runs on that CPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863) The Linux Performance Event subsystem provides an abstraction of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864) these software and hardware event capabilities, available via a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) system call and used by the "perf" utility in tools/perf/. It
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) provides per task and per CPU counters, and it provides event
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867) capabilities on top of those.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869) Say Y if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871) config DEBUG_PERF_USE_VMALLOC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) bool "Debug: use vmalloc to back perf mmap() buffers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874) depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875) select PERF_USE_VMALLOC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877) Use vmalloc memory to back perf mmap() buffers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879) Mostly useful for debugging the vmalloc code on platforms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880) that don't require it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884) endmenu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) config VM_EVENT_COUNTERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888) bool "Enable VM event counters for /proc/vmstat" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890) VM event counters are needed for event counts to be shown.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) This option allows the disabling of the VM event counters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892) on EXPERT systems. /proc/vmstat will only show page counts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) if VM event counters are disabled.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) config SLUB_SYSFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896) bool "Enable SLUB sysfs interface"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) depends on SLUB && SYSFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) config SLUB_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902) bool "Enable SLUB debugging support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) depends on SLUB && SYSFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905) SLUB has extensive debug support features. Disabling these can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906) result in significant savings in code size. This also disables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) SLUB sysfs support. /sys/slab will not exist and there will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908) no support for cache validation etc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910) config SLUB_MEMCG_SYSFS_ON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) bool "Enable memcg SLUB sysfs support by default" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) depends on SLUB && SYSFS && MEMCG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) SLUB creates a directory under /sys/kernel/slab for each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916) allocation cache to host info and debug files. If memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917) cgroup is enabled, each cache can have per memory cgroup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918) caches. SLUB can create the same sysfs directories for these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919) caches under /sys/kernel/slab/CACHE/cgroup but it can lead
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) to a very high number of debug files being created. This is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) controlled by slub_memcg_sysfs boot parameter and this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) config option determines the parameter's default value.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) config COMPAT_BRK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925) bool "Disable heap randomization"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) Randomizing heap placement makes heap exploits harder, but it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) also breaks ancient binaries (including anything libc5 based).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930) This option changes the bootup default to heap randomization
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931) disabled, and can be overridden at runtime by setting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) /proc/sys/kernel/randomize_va_space to 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) On non-ancient distros (post-2000 ones) N is usually a safe choice.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936) choice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) prompt "Choose SLAB allocator"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) default SLUB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) This option allows to select a slab allocator.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) config SLAB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1943) bool "SLAB"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1944) select HAVE_HARDENED_USERCOPY_ALLOCATOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1945) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1946) The regular slab allocator that is established and known to work
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1947) well in all environments. It organizes cache hot objects in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1948) per cpu and per node queues.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1949)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1950) config SLUB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1951) bool "SLUB (Unqueued Allocator)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1952) select HAVE_HARDENED_USERCOPY_ALLOCATOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1953) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1954) SLUB is a slab allocator that minimizes cache line usage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1955) instead of managing queues of cached objects (SLAB approach).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1956) Per cpu caching is realized using slabs of objects instead
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1957) of queues of objects. SLUB can use memory efficiently
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1958) and has enhanced diagnostics. SLUB is the default choice for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1959) a slab allocator.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1960)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1961) config SLOB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1962) depends on EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1963) bool "SLOB (Simple Allocator)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1964) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1965) SLOB replaces the stock allocator with a drastically simpler
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1966) allocator. SLOB is generally more space efficient but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1967) does not perform as well on large systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1968)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1969) endchoice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1970)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1971) config SLAB_MERGE_DEFAULT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1972) bool "Allow slab caches to be merged"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1973) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1974) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1975) For reduced kernel memory fragmentation, slab caches can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1976) merged when they share the same size and other characteristics.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1977) This carries a risk of kernel heap overflows being able to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1978) overwrite objects from merged caches (and more easily control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1979) cache layout), which makes such heap attacks easier to exploit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1980) by attackers. By keeping caches unmerged, these kinds of exploits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1981) can usually only damage objects in the same cache. To disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1982) merging at runtime, "slab_nomerge" can be passed on the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1983) command line.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1984)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1985) config SLAB_FREELIST_RANDOM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1986) bool "Randomize slab freelist"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1987) depends on SLAB || SLUB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1988) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1989) Randomizes the freelist order used on creating new pages. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1990) security feature reduces the predictability of the kernel slab
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1991) allocator against heap overflows.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1992)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1993) config SLAB_FREELIST_HARDENED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1994) bool "Harden slab freelist metadata"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1995) depends on SLAB || SLUB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1996) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1997) Many kernel heap attacks try to target slab cache metadata and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1998) other infrastructure. This options makes minor performance
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1999) sacrifices to harden the kernel slab allocator against common
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2000) freelist exploit methods. Some slab implementations have more
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2001) sanity-checking than others. This option is most effective with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2002) CONFIG_SLUB.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2004) config SHUFFLE_PAGE_ALLOCATOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2005) bool "Page allocator randomization"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2006) default SLAB_FREELIST_RANDOM && ACPI_NUMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2007) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2008) Randomization of the page allocator improves the average
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2009) utilization of a direct-mapped memory-side-cache. See section
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2010) 5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2011) 6.2a specification for an example of how a platform advertises
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2012) the presence of a memory-side-cache. There are also incidental
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2013) security benefits as it reduces the predictability of page
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2014) allocations to compliment SLAB_FREELIST_RANDOM, but the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2015) default granularity of shuffling on the "MAX_ORDER - 1" i.e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2016) 10th order of pages is selected based on cache utilization
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2017) benefits on x86.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2018)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2019) While the randomization improves cache utilization it may
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2020) negatively impact workloads on platforms without a cache. For
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2021) this reason, by default, the randomization is enabled only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2022) after runtime detection of a direct-mapped memory-side-cache.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2023) Otherwise, the randomization may be force enabled with the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2024) 'page_alloc.shuffle' kernel command line parameter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2025)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2026) Say Y if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2027)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2028) config SLUB_CPU_PARTIAL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2029) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2030) depends on SLUB && SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2031) bool "SLUB per cpu partial cache"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2032) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2033) Per cpu partial caches accelerate objects allocation and freeing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2034) that is local to a processor at the price of more indeterminism
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2035) in the latency of the free. On overflow these caches will be cleared
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2036) which requires the taking of locks that may cause latency spikes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2037) Typically one would choose no for a realtime system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2038)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2039) config MMAP_ALLOW_UNINITIALIZED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2040) bool "Allow mmapped anonymous memory to be uninitialized"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2041) depends on EXPERT && !MMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2042) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2043) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2044) Normally, and according to the Linux spec, anonymous memory obtained
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2045) from mmap() has its contents cleared before it is passed to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2046) userspace. Enabling this config option allows you to request that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2047) mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2048) providing a huge performance boost. If this option is not enabled,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2049) then the flag will be ignored.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2050)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2051) This is taken advantage of by uClibc's malloc(), and also by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2052) ELF-FDPIC binfmt's brk and stack allocator.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2053)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2054) Because of the obvious security issues, this option should only be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2055) enabled on embedded devices where you control what is run in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2056) userspace. Since that isn't generally a problem on no-MMU systems,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2057) it is normally safe to say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2058)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2059) See Documentation/admin-guide/mm/nommu-mmap.rst for more information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2060)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2061) config SYSTEM_DATA_VERIFICATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2062) def_bool n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2063) select SYSTEM_TRUSTED_KEYRING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2064) select KEYS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2065) select CRYPTO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2066) select CRYPTO_RSA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2067) select ASYMMETRIC_KEY_TYPE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2068) select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2069) select ASN1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2070) select OID_REGISTRY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2071) select X509_CERTIFICATE_PARSER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2072) select PKCS7_MESSAGE_PARSER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2073) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2074) Provide PKCS#7 message verification using the contents of the system
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2075) trusted keyring to provide public keys. This then can be used for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2076) module verification, kexec image verification and firmware blob
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2077) verification.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2078)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2079) config PROFILING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2080) bool "Profiling support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2081) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2082) Say Y here to enable the extended profiling support mechanisms used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2083) by profilers such as OProfile.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2084)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2085) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2086) # Place an empty function call at each tracepoint site. Can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2087) # dynamically changed for a probe function.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2088) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2089) config TRACEPOINTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2090) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2091)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2092) endmenu # General setup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2093)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2094) source "arch/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2096) config RT_MUTEXES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2097) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2098)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2099) config BASE_SMALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2100) int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2101) default 0 if BASE_FULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2102) default 1 if !BASE_FULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2104) config MODULE_SIG_FORMAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2105) def_bool n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2106) select SYSTEM_DATA_VERIFICATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2108) menuconfig MODULES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2109) bool "Enable loadable module support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2110) option modules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2111) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2112) Kernel modules are small pieces of compiled code which can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2113) be inserted in the running kernel, rather than being
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2114) permanently built into the kernel. You use the "modprobe"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2115) tool to add (and sometimes remove) them. If you say Y here,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2116) many parts of the kernel can be built as modules (by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2117) answering M instead of Y where indicated): this is most
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2118) useful for infrequently used options which are not required
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2119) for booting. For more information, see the man pages for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2120) modprobe, lsmod, modinfo, insmod and rmmod.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2122) If you say Y here, you will need to run "make
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2123) modules_install" to put the modules under /lib/modules/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2124) where modprobe can find them (you may need to be root to do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2125) this).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2127) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2129) if MODULES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2131) config MODULE_FORCE_LOAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2132) bool "Forced module loading"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2133) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2134) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2135) Allow loading of modules without version information (ie. modprobe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2136) --force). Forced module loading sets the 'F' (forced) taint flag and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2137) is usually a really bad idea.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2139) config MODULE_UNLOAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2140) bool "Module unloading"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2141) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2142) Without this option you will not be able to unload any
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2143) modules (note that some modules may not be unloadable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2144) anyway), which makes your kernel smaller, faster
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2145) and simpler. If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2147) config MODULE_FORCE_UNLOAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2148) bool "Forced module unloading"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2149) depends on MODULE_UNLOAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2150) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2151) This option allows you to force a module to unload, even if the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2152) kernel believes it is unsafe: the kernel will remove the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2153) without waiting for anyone to stop using it (using the -f option to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2154) rmmod). This is mainly for kernel developers and desperate users.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2155) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2157) config MODVERSIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2158) bool "Module versioning support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2159) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2160) Usually, you have to use modules compiled with your kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2161) Saying Y here makes it sometimes possible to use modules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2162) compiled for different kernels, by adding enough information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2163) to the modules to (hopefully) spot any changes which would
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2164) make them incompatible with the kernel you are running. If
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2165) unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2167) config ASM_MODVERSIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2168) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2169) default HAVE_ASM_MODVERSIONS && MODVERSIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2170) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2171) This enables module versioning for exported symbols also from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2172) assembly. This can be enabled only when the target architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2173) supports it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2175) config MODULE_REL_CRCS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2176) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2177) depends on MODVERSIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2179) config MODULE_SRCVERSION_ALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2180) bool "Source checksum for all modules"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2181) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2182) Modules which contain a MODULE_VERSION get an extra "srcversion"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2183) field inserted into their modinfo section, which contains a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2184) sum of the source files which made it. This helps maintainers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2185) see exactly which source was used to build a module (since
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2186) others sometimes change the module source without updating
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2187) the version). With this option, such a "srcversion" field
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2188) will be created for all modules. If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2190) config MODULE_SCMVERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2191) bool "SCM version for modules"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2192) depends on LOCALVERSION_AUTO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2193) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2194) This enables the module attribute "scmversion" which can be used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2195) by developers to identify the SCM version of a given module, e.g.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2196) git sha1 or hg sha1. The SCM version can be queried by modinfo or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2197) via the sysfs node: /sys/modules/MODULENAME/scmversion. This is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2198) useful when the kernel or kernel modules are updated separately
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2199) since that causes the vermagic of the kernel and the module to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2200) differ.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2202) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2204) config MODULE_SIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2205) bool "Module signature verification"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2206) select MODULE_SIG_FORMAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2207) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2208) Check modules for valid signatures upon load: the signature
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2209) is simply appended to the module. For more information see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2210) <file:Documentation/admin-guide/module-signing.rst>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2212) Note that this option adds the OpenSSL development packages as a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2213) kernel build dependency so that the signing tool can use its crypto
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2214) library.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2216) You should enable this option if you wish to use either
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2217) CONFIG_SECURITY_LOCKDOWN_LSM or lockdown functionality imposed via
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2218) another LSM - otherwise unsigned modules will be loadable regardless
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2219) of the lockdown policy.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2221) !!!WARNING!!! If you enable this option, you MUST make sure that the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2222) module DOES NOT get stripped after being signed. This includes the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2223) debuginfo strip done by some packagers (such as rpmbuild) and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2224) inclusion into an initramfs that wants the module size reduced.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2225)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2226) config MODULE_SIG_FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2227) bool "Require modules to be validly signed"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2228) depends on MODULE_SIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2229) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2230) Reject unsigned modules or signed modules for which we don't have a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2231) key. Without this, such modules will simply taint the kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2233) config MODULE_SIG_ALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2234) bool "Automatically sign all modules"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2235) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2236) depends on MODULE_SIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2237) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2238) Sign all modules during make modules_install. Without this option,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2239) modules must be signed manually, using the scripts/sign-file tool.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2241) comment "Do not forget to sign required modules with scripts/sign-file"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2242) depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2243)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2244) choice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2245) prompt "Which hash algorithm should modules be signed with?"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2246) depends on MODULE_SIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2247) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2248) This determines which sort of hashing algorithm will be used during
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2249) signature generation. This algorithm _must_ be built into the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2250) directly so that signature verification can take place. It is not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2251) possible to load a signed module containing the algorithm to check
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2252) the signature on that module.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2253)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2254) config MODULE_SIG_SHA1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2255) bool "Sign modules with SHA-1"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2256) select CRYPTO_SHA1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2257)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2258) config MODULE_SIG_SHA224
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2259) bool "Sign modules with SHA-224"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2260) select CRYPTO_SHA256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2261)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2262) config MODULE_SIG_SHA256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2263) bool "Sign modules with SHA-256"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2264) select CRYPTO_SHA256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2265)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2266) config MODULE_SIG_SHA384
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2267) bool "Sign modules with SHA-384"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2268) select CRYPTO_SHA512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2269)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2270) config MODULE_SIG_SHA512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2271) bool "Sign modules with SHA-512"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2272) select CRYPTO_SHA512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2273)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2274) endchoice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2275)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2276) config MODULE_SIG_HASH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2277) string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2278) depends on MODULE_SIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2279) default "sha1" if MODULE_SIG_SHA1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2280) default "sha224" if MODULE_SIG_SHA224
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2281) default "sha256" if MODULE_SIG_SHA256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2282) default "sha384" if MODULE_SIG_SHA384
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2283) default "sha512" if MODULE_SIG_SHA512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2284)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2285) config MODULE_COMPRESS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2286) bool "Compress modules on installation"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2287) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2288)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2289) Compresses kernel modules when 'make modules_install' is run; gzip or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2290) xz depending on "Compression algorithm" below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2291)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2292) module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2293)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2294) Out-of-tree kernel modules installed using Kbuild will also be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2295) compressed upon installation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2296)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2297) Note: for modules inside an initrd or initramfs, it's more efficient
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2298) to compress the whole initrd or initramfs instead.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2300) Note: This is fully compatible with signed modules.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2301)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2302) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2303)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2304) choice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2305) prompt "Compression algorithm"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2306) depends on MODULE_COMPRESS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2307) default MODULE_COMPRESS_GZIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2308) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2309) This determines which sort of compression will be used during
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2310) 'make modules_install'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2311)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2312) GZIP (default) and XZ are supported.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2313)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2314) config MODULE_COMPRESS_GZIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2315) bool "GZIP"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2316)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2317) config MODULE_COMPRESS_XZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2318) bool "XZ"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2319)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2320) endchoice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2322) config MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2323) bool "Allow loading of modules with missing namespace imports"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2324) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2325) Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2326) a namespace. A module that makes use of a symbol exported with such a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2327) namespace is required to import the namespace via MODULE_IMPORT_NS().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2328) There is no technical reason to enforce correct namespace imports,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2329) but it creates consistency between symbols defining namespaces and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2330) users importing namespaces they make use of. This option relaxes this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2331) requirement and lifts the enforcement when loading a module.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2332)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2333) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2335) config UNUSED_SYMBOLS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2336) bool "Enable unused/obsolete exported symbols"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2337) default y if X86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2338) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2339) Unused but exported symbols make the kernel needlessly bigger. For
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2340) that reason most of these unused exports will soon be removed. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2341) option is provided temporarily to provide a transition period in case
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2342) some external kernel module needs one of these symbols anyway. If you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2343) encounter such a case in your module, consider if you are actually
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2344) using the right API. (rationale: since nobody in the kernel is using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2345) this in a module, there is a pretty good chance it's actually the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2346) wrong interface to use). If you really need the symbol, please send a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2347) mail to the linux kernel mailing list mentioning the symbol and why
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2348) you really need it, and what the merge plan to the mainline kernel for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2349) your module is.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2350)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2351) config TRIM_UNUSED_KSYMS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2352) bool "Trim unused exported kernel symbols"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2353) depends on !UNUSED_SYMBOLS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2354) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2355) The kernel and some modules make many symbols available for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2356) other modules to use via EXPORT_SYMBOL() and variants. Depending
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2357) on the set of modules being selected in your kernel configuration,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2358) many of those exported symbols might never be used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2359)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2360) This option allows for unused exported symbols to be dropped from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2361) the build. In turn, this provides the compiler more opportunities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2362) (especially when using LTO) for optimizing the code and reducing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2363) binary size. This might have some security advantages as well.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2365) If unsure, or if you need to build out-of-tree modules, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2367) config UNUSED_KSYMS_WHITELIST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2368) string "Whitelist of symbols to keep in ksymtab"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2369) depends on TRIM_UNUSED_KSYMS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2370) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2371) By default, all unused exported symbols will be un-exported from the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2372) build when TRIM_UNUSED_KSYMS is selected.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2374) UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2375) exported at all times, even in absence of in-tree users. The value to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2376) set here is the path to a text file containing the list of symbols,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2377) one per line. The path can be absolute, or relative to the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2378) source tree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2379)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2380) endif # MODULES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2381)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2382) config MODULES_TREE_LOOKUP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2383) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2384) depends on PERF_EVENTS || TRACING || CFI_CLANG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2385)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2386) config INIT_ALL_POSSIBLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2387) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2388) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2389) Back when each arch used to define their own cpu_online_mask and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2390) cpu_possible_mask, some of them chose to initialize cpu_possible_mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2391) with all 1s, and others with all 0s. When they were centralised,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2392) it was better to provide this option than to break all the archs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2393) and have several arch maintainers pursuing me down dark alleys.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2394)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2395) source "block/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2396)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2397) config PREEMPT_NOTIFIERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2398) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2399)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2400) config PADATA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2401) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2402) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2403)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2404) config ASN1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2405) tristate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2406) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2407) Build a simple ASN.1 grammar compiler that produces a bytecode output
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2408) that can be interpreted by the ASN.1 stream decoder and used to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2409) inform it as to what tags are to be expected in a stream and what
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2410) functions to call on what tags.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2411)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2412) source "kernel/Kconfig.locks"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2413)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2414) config ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2415) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2416)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2417) config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2418) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2419)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2420) # It may be useful for an architecture to override the definitions of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2421) # SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2422) # and the COMPAT_ variants in <linux/compat.h>, in particular to use a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2423) # different calling convention for syscalls. They can also override the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2424) # macros for not-implemented syscalls in kernel/sys_ni.c and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2425) # kernel/time/posix-stubs.c. All these overrides need to be available in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2426) # <asm/syscall_wrapper.h>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2427) config ARCH_HAS_SYSCALL_WRAPPER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2428) def_bool n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2429)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2430) if !ROCKCHIP_MINI_KERNEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2431) source "init/Kconfig.gki"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2432) endif