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