13d0407baSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
23d0407baSopenharmony_ciconfig DEFCONFIG_LIST
33d0407baSopenharmony_ci	string
43d0407baSopenharmony_ci	depends on !UML
53d0407baSopenharmony_ci	option defconfig_list
63d0407baSopenharmony_ci	default "/lib/modules/$(shell,uname -r)/.config"
73d0407baSopenharmony_ci	default "/etc/kernel-config"
83d0407baSopenharmony_ci	default "/boot/config-$(shell,uname -r)"
93d0407baSopenharmony_ci	default "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)"
103d0407baSopenharmony_ci
113d0407baSopenharmony_ciconfig CC_VERSION_TEXT
123d0407baSopenharmony_ci	string
133d0407baSopenharmony_ci	default "$(CC_VERSION_TEXT)"
143d0407baSopenharmony_ci	help
153d0407baSopenharmony_ci	  This is used in unclear ways:
163d0407baSopenharmony_ci
173d0407baSopenharmony_ci	  - Re-run Kconfig when the compiler is updated
183d0407baSopenharmony_ci	    The 'default' property references the environment variable,
193d0407baSopenharmony_ci	    CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd.
203d0407baSopenharmony_ci	    When the compiler is updated, Kconfig will be invoked.
213d0407baSopenharmony_ci
223d0407baSopenharmony_ci	  - Ensure full rebuild when the compier is updated
233d0407baSopenharmony_ci	    include/linux/kconfig.h contains this option in the comment line so
243d0407baSopenharmony_ci	    fixdep adds include/config/cc/version/text.h into the auto-generated
253d0407baSopenharmony_ci	    dependency. When the compiler is updated, syncconfig will touch it
263d0407baSopenharmony_ci	    and then every file will be rebuilt.
273d0407baSopenharmony_ci
283d0407baSopenharmony_ciconfig CC_IS_GCC
293d0407baSopenharmony_ci	def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc)
303d0407baSopenharmony_ci
313d0407baSopenharmony_ciconfig GCC_VERSION
323d0407baSopenharmony_ci	int
333d0407baSopenharmony_ci	default $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) if CC_IS_GCC
343d0407baSopenharmony_ci	default 0
353d0407baSopenharmony_ci
363d0407baSopenharmony_ciconfig LD_VERSION
373d0407baSopenharmony_ci	int
383d0407baSopenharmony_ci	default $(shell,$(LD) --version | $(srctree)/scripts/ld-version.sh)
393d0407baSopenharmony_ci
403d0407baSopenharmony_ciconfig CC_IS_CLANG
413d0407baSopenharmony_ci	def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q clang)
423d0407baSopenharmony_ci
433d0407baSopenharmony_ciconfig LD_IS_LLD
443d0407baSopenharmony_ci	def_bool $(success,$(LD) -v | head -n 1 | grep -q LLD)
453d0407baSopenharmony_ci
463d0407baSopenharmony_ciconfig CLANG_VERSION
473d0407baSopenharmony_ci	int
483d0407baSopenharmony_ci	default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
493d0407baSopenharmony_ci
503d0407baSopenharmony_ciconfig LLD_VERSION
513d0407baSopenharmony_ci	int
523d0407baSopenharmony_ci	default $(shell,$(srctree)/scripts/lld-version.sh $(LD))
533d0407baSopenharmony_ci
543d0407baSopenharmony_ciconfig CC_CAN_LINK
553d0407baSopenharmony_ci	bool
563d0407baSopenharmony_ci	default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag)) if 64BIT
573d0407baSopenharmony_ci	default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag))
583d0407baSopenharmony_ci
593d0407baSopenharmony_ciconfig CC_CAN_LINK_STATIC
603d0407baSopenharmony_ci	bool
613d0407baSopenharmony_ci	default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag) -static) if 64BIT
623d0407baSopenharmony_ci	default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag) -static)
633d0407baSopenharmony_ci
643d0407baSopenharmony_ciconfig CC_HAS_ASM_GOTO
653d0407baSopenharmony_ci	def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC))
663d0407baSopenharmony_ci
673d0407baSopenharmony_ciconfig CC_HAS_ASM_GOTO_OUTPUT
683d0407baSopenharmony_ci	depends on CC_HAS_ASM_GOTO
693d0407baSopenharmony_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)
703d0407baSopenharmony_ci
713d0407baSopenharmony_ciconfig CC_HAS_ASM_GOTO_TIED_OUTPUT
723d0407baSopenharmony_ci	depends on CC_HAS_ASM_GOTO_OUTPUT
733d0407baSopenharmony_ci	# Detect buggy gcc and clang, fixed in gcc-11 clang-14.
743d0407baSopenharmony_ci	def_bool $(success,echo 'int foo(int *x) { asm goto (".long (%l[bar]) - .\n": "+m"(*x) ::: bar); return *x; bar: return 0; }' | $CC -x c - -c -o /dev/null)
753d0407baSopenharmony_ci
763d0407baSopenharmony_ciconfig TOOLS_SUPPORT_RELR
773d0407baSopenharmony_ci	def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh)
783d0407baSopenharmony_ci
793d0407baSopenharmony_ciconfig CC_HAS_ASM_INLINE
803d0407baSopenharmony_ci	def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
813d0407baSopenharmony_ci
823d0407baSopenharmony_ciconfig CONSTRUCTORS
833d0407baSopenharmony_ci	bool
843d0407baSopenharmony_ci	depends on !UML
853d0407baSopenharmony_ci
863d0407baSopenharmony_ciconfig IRQ_WORK
873d0407baSopenharmony_ci	bool
883d0407baSopenharmony_ci
893d0407baSopenharmony_ciconfig BUILDTIME_TABLE_SORT
903d0407baSopenharmony_ci	bool
913d0407baSopenharmony_ci
923d0407baSopenharmony_ciconfig THREAD_INFO_IN_TASK
933d0407baSopenharmony_ci	bool
943d0407baSopenharmony_ci	help
953d0407baSopenharmony_ci	  Select this to move thread_info off the stack into task_struct.  To
963d0407baSopenharmony_ci	  make this work, an arch will need to remove all thread_info fields
973d0407baSopenharmony_ci	  except flags and fix any runtime bugs.
983d0407baSopenharmony_ci
993d0407baSopenharmony_ci	  One subtle change that will be needed is to use try_get_task_stack()
1003d0407baSopenharmony_ci	  and put_task_stack() in save_thread_stack_tsk() and get_wchan().
1013d0407baSopenharmony_ci
1023d0407baSopenharmony_cimenu "General setup"
1033d0407baSopenharmony_ci
1043d0407baSopenharmony_ciconfig BROKEN
1053d0407baSopenharmony_ci	bool
1063d0407baSopenharmony_ci
1073d0407baSopenharmony_ciconfig BROKEN_ON_SMP
1083d0407baSopenharmony_ci	bool
1093d0407baSopenharmony_ci	depends on BROKEN || !SMP
1103d0407baSopenharmony_ci	default y
1113d0407baSopenharmony_ci
1123d0407baSopenharmony_ciconfig INIT_ENV_ARG_LIMIT
1133d0407baSopenharmony_ci	int
1143d0407baSopenharmony_ci	default 32 if !UML
1153d0407baSopenharmony_ci	default 128 if UML
1163d0407baSopenharmony_ci	help
1173d0407baSopenharmony_ci	  Maximum of each of the number of arguments and environment
1183d0407baSopenharmony_ci	  variables passed to init from the kernel command line.
1193d0407baSopenharmony_ci
1203d0407baSopenharmony_ciconfig COMPILE_TEST
1213d0407baSopenharmony_ci	bool "Compile also drivers which will not load"
1223d0407baSopenharmony_ci	depends on HAS_IOMEM
1233d0407baSopenharmony_ci	help
1243d0407baSopenharmony_ci	  Some drivers can be compiled on a different platform than they are
1253d0407baSopenharmony_ci	  intended to be run on. Despite they cannot be loaded there (or even
1263d0407baSopenharmony_ci	  when they load they cannot be used due to missing HW support),
1273d0407baSopenharmony_ci	  developers still, opposing to distributors, might want to build such
1283d0407baSopenharmony_ci	  drivers to compile-test them.
1293d0407baSopenharmony_ci
1303d0407baSopenharmony_ci	  If you are a developer and want to build everything available, say Y
1313d0407baSopenharmony_ci	  here. If you are a user/distributor, say N here to exclude useless
1323d0407baSopenharmony_ci	  drivers to be distributed.
1333d0407baSopenharmony_ci
1343d0407baSopenharmony_ciconfig UAPI_HEADER_TEST
1353d0407baSopenharmony_ci	bool "Compile test UAPI headers"
1363d0407baSopenharmony_ci	depends on HEADERS_INSTALL && CC_CAN_LINK
1373d0407baSopenharmony_ci	help
1383d0407baSopenharmony_ci	  Compile test headers exported to user-space to ensure they are
1393d0407baSopenharmony_ci	  self-contained, i.e. compilable as standalone units.
1403d0407baSopenharmony_ci
1413d0407baSopenharmony_ci	  If you are a developer or tester and want to ensure the exported
1423d0407baSopenharmony_ci	  headers are self-contained, say Y here. Otherwise, choose N.
1433d0407baSopenharmony_ci
1443d0407baSopenharmony_ciconfig LOCALVERSION
1453d0407baSopenharmony_ci	string "Local version - append to kernel release"
1463d0407baSopenharmony_ci	help
1473d0407baSopenharmony_ci	  Append an extra string to the end of your kernel version.
1483d0407baSopenharmony_ci	  This will show up when you type uname, for example.
1493d0407baSopenharmony_ci	  The string you set here will be appended after the contents of
1503d0407baSopenharmony_ci	  any files with a filename matching localversion* in your
1513d0407baSopenharmony_ci	  object and source tree, in that order.  Your total string can
1523d0407baSopenharmony_ci	  be a maximum of 64 characters.
1533d0407baSopenharmony_ci
1543d0407baSopenharmony_ciconfig LOCALVERSION_AUTO
1553d0407baSopenharmony_ci	bool "Automatically append version information to the version string"
1563d0407baSopenharmony_ci	default y
1573d0407baSopenharmony_ci	depends on !COMPILE_TEST
1583d0407baSopenharmony_ci	help
1593d0407baSopenharmony_ci	  This will try to automatically determine if the current tree is a
1603d0407baSopenharmony_ci	  release tree by looking for git tags that belong to the current
1613d0407baSopenharmony_ci	  top of tree revision.
1623d0407baSopenharmony_ci
1633d0407baSopenharmony_ci	  A string of the format -gxxxxxxxx will be added to the localversion
1643d0407baSopenharmony_ci	  if a git-based tree is found.  The string generated by this will be
1653d0407baSopenharmony_ci	  appended after any matching localversion* files, and after the value
1663d0407baSopenharmony_ci	  set in CONFIG_LOCALVERSION.
1673d0407baSopenharmony_ci
1683d0407baSopenharmony_ci	  (The actual string used here is the first eight characters produced
1693d0407baSopenharmony_ci	  by running the command:
1703d0407baSopenharmony_ci
1713d0407baSopenharmony_ci	    $ git rev-parse --verify HEAD
1723d0407baSopenharmony_ci
1733d0407baSopenharmony_ci	  which is done within the script "scripts/setlocalversion".)
1743d0407baSopenharmony_ci
1753d0407baSopenharmony_ciconfig BUILD_SALT
1763d0407baSopenharmony_ci	string "Build ID Salt"
1773d0407baSopenharmony_ci	default ""
1783d0407baSopenharmony_ci	help
1793d0407baSopenharmony_ci	  The build ID is used to link binaries and their debug info. Setting
1803d0407baSopenharmony_ci	  this option will use the value in the calculation of the build id.
1813d0407baSopenharmony_ci	  This is mostly useful for distributions which want to ensure the
1823d0407baSopenharmony_ci	  build is unique between builds. It's safe to leave the default.
1833d0407baSopenharmony_ci
1843d0407baSopenharmony_ciconfig HAVE_KERNEL_GZIP
1853d0407baSopenharmony_ci	bool
1863d0407baSopenharmony_ci
1873d0407baSopenharmony_ciconfig HAVE_KERNEL_BZIP2
1883d0407baSopenharmony_ci	bool
1893d0407baSopenharmony_ci
1903d0407baSopenharmony_ciconfig HAVE_KERNEL_LZMA
1913d0407baSopenharmony_ci	bool
1923d0407baSopenharmony_ci
1933d0407baSopenharmony_ciconfig HAVE_KERNEL_XZ
1943d0407baSopenharmony_ci	bool
1953d0407baSopenharmony_ci
1963d0407baSopenharmony_ciconfig HAVE_KERNEL_LZO
1973d0407baSopenharmony_ci	bool
1983d0407baSopenharmony_ci
1993d0407baSopenharmony_ciconfig HAVE_KERNEL_LZ4
2003d0407baSopenharmony_ci	bool
2013d0407baSopenharmony_ci
2023d0407baSopenharmony_ciconfig HAVE_KERNEL_ZSTD
2033d0407baSopenharmony_ci	bool
2043d0407baSopenharmony_ci
2053d0407baSopenharmony_ciconfig HAVE_KERNEL_UNCOMPRESSED
2063d0407baSopenharmony_ci	bool
2073d0407baSopenharmony_ci
2083d0407baSopenharmony_cichoice
2093d0407baSopenharmony_ci	prompt "Kernel compression mode"
2103d0407baSopenharmony_ci	default KERNEL_GZIP
2113d0407baSopenharmony_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
2123d0407baSopenharmony_ci	help
2133d0407baSopenharmony_ci	  The linux kernel is a kind of self-extracting executable.
2143d0407baSopenharmony_ci	  Several compression algorithms are available, which differ
2153d0407baSopenharmony_ci	  in efficiency, compression and decompression speed.
2163d0407baSopenharmony_ci	  Compression speed is only relevant when building a kernel.
2173d0407baSopenharmony_ci	  Decompression speed is relevant at each boot.
2183d0407baSopenharmony_ci
2193d0407baSopenharmony_ci	  If you have any problems with bzip2 or lzma compressed
2203d0407baSopenharmony_ci	  kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
2213d0407baSopenharmony_ci	  version of this functionality (bzip2 only), for 2.4, was
2223d0407baSopenharmony_ci	  supplied by Christian Ludwig)
2233d0407baSopenharmony_ci
2243d0407baSopenharmony_ci	  High compression options are mostly useful for users, who
2253d0407baSopenharmony_ci	  are low on disk space (embedded systems), but for whom ram
2263d0407baSopenharmony_ci	  size matters less.
2273d0407baSopenharmony_ci
2283d0407baSopenharmony_ci	  If in doubt, select 'gzip'
2293d0407baSopenharmony_ci
2303d0407baSopenharmony_ciconfig KERNEL_GZIP
2313d0407baSopenharmony_ci	bool "Gzip"
2323d0407baSopenharmony_ci	depends on HAVE_KERNEL_GZIP
2333d0407baSopenharmony_ci	help
2343d0407baSopenharmony_ci	  The old and tried gzip compression. It provides a good balance
2353d0407baSopenharmony_ci	  between compression ratio and decompression speed.
2363d0407baSopenharmony_ci
2373d0407baSopenharmony_ciconfig KERNEL_BZIP2
2383d0407baSopenharmony_ci	bool "Bzip2"
2393d0407baSopenharmony_ci	depends on HAVE_KERNEL_BZIP2
2403d0407baSopenharmony_ci	help
2413d0407baSopenharmony_ci	  Its compression ratio and speed is intermediate.
2423d0407baSopenharmony_ci	  Decompression speed is slowest among the choices.  The kernel
2433d0407baSopenharmony_ci	  size is about 10% smaller with bzip2, in comparison to gzip.
2443d0407baSopenharmony_ci	  Bzip2 uses a large amount of memory. For modern kernels you
2453d0407baSopenharmony_ci	  will need at least 8MB RAM or more for booting.
2463d0407baSopenharmony_ci
2473d0407baSopenharmony_ciconfig KERNEL_LZMA
2483d0407baSopenharmony_ci	bool "LZMA"
2493d0407baSopenharmony_ci	depends on HAVE_KERNEL_LZMA
2503d0407baSopenharmony_ci	help
2513d0407baSopenharmony_ci	  This compression algorithm's ratio is best.  Decompression speed
2523d0407baSopenharmony_ci	  is between gzip and bzip2.  Compression is slowest.
2533d0407baSopenharmony_ci	  The kernel size is about 33% smaller with LZMA in comparison to gzip.
2543d0407baSopenharmony_ci
2553d0407baSopenharmony_ciconfig KERNEL_XZ
2563d0407baSopenharmony_ci	bool "XZ"
2573d0407baSopenharmony_ci	depends on HAVE_KERNEL_XZ
2583d0407baSopenharmony_ci	help
2593d0407baSopenharmony_ci	  XZ uses the LZMA2 algorithm and instruction set specific
2603d0407baSopenharmony_ci	  BCJ filters which can improve compression ratio of executable
2613d0407baSopenharmony_ci	  code. The size of the kernel is about 30% smaller with XZ in
2623d0407baSopenharmony_ci	  comparison to gzip. On architectures for which there is a BCJ
2633d0407baSopenharmony_ci	  filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
2643d0407baSopenharmony_ci	  will create a few percent smaller kernel than plain LZMA.
2653d0407baSopenharmony_ci
2663d0407baSopenharmony_ci	  The speed is about the same as with LZMA: The decompression
2673d0407baSopenharmony_ci	  speed of XZ is better than that of bzip2 but worse than gzip
2683d0407baSopenharmony_ci	  and LZO. Compression is slow.
2693d0407baSopenharmony_ci
2703d0407baSopenharmony_ciconfig KERNEL_LZO
2713d0407baSopenharmony_ci	bool "LZO"
2723d0407baSopenharmony_ci	depends on HAVE_KERNEL_LZO
2733d0407baSopenharmony_ci	help
2743d0407baSopenharmony_ci	  Its compression ratio is the poorest among the choices. The kernel
2753d0407baSopenharmony_ci	  size is about 10% bigger than gzip; however its speed
2763d0407baSopenharmony_ci	  (both compression and decompression) is the fastest.
2773d0407baSopenharmony_ci
2783d0407baSopenharmony_ciconfig KERNEL_LZ4
2793d0407baSopenharmony_ci	bool "LZ4"
2803d0407baSopenharmony_ci	depends on HAVE_KERNEL_LZ4
2813d0407baSopenharmony_ci	help
2823d0407baSopenharmony_ci	  LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
2833d0407baSopenharmony_ci	  A preliminary version of LZ4 de/compression tool is available at
2843d0407baSopenharmony_ci	  <https://code.google.com/p/lz4/>.
2853d0407baSopenharmony_ci
2863d0407baSopenharmony_ci	  Its compression ratio is worse than LZO. The size of the kernel
2873d0407baSopenharmony_ci	  is about 8% bigger than LZO. But the decompression speed is
2883d0407baSopenharmony_ci	  faster than LZO.
2893d0407baSopenharmony_ci
2903d0407baSopenharmony_ciconfig KERNEL_ZSTD
2913d0407baSopenharmony_ci	bool "ZSTD"
2923d0407baSopenharmony_ci	depends on HAVE_KERNEL_ZSTD
2933d0407baSopenharmony_ci	help
2943d0407baSopenharmony_ci	  ZSTD is a compression algorithm targeting intermediate compression
2953d0407baSopenharmony_ci	  with fast decompression speed. It will compress better than GZIP and
2963d0407baSopenharmony_ci	  decompress around the same speed as LZO, but slower than LZ4. You
2973d0407baSopenharmony_ci	  will need at least 192 KB RAM or more for booting. The zstd command
2983d0407baSopenharmony_ci	  line tool is required for compression.
2993d0407baSopenharmony_ci
3003d0407baSopenharmony_ciconfig KERNEL_UNCOMPRESSED
3013d0407baSopenharmony_ci	bool "None"
3023d0407baSopenharmony_ci	depends on HAVE_KERNEL_UNCOMPRESSED
3033d0407baSopenharmony_ci	help
3043d0407baSopenharmony_ci	  Produce uncompressed kernel image. This option is usually not what
3053d0407baSopenharmony_ci	  you want. It is useful for debugging the kernel in slow simulation
3063d0407baSopenharmony_ci	  environments, where decompressing and moving the kernel is awfully
3073d0407baSopenharmony_ci	  slow. This option allows early boot code to skip the decompressor
3083d0407baSopenharmony_ci	  and jump right at uncompressed kernel image.
3093d0407baSopenharmony_ci
3103d0407baSopenharmony_ciendchoice
3113d0407baSopenharmony_ci
3123d0407baSopenharmony_ciconfig DEFAULT_INIT
3133d0407baSopenharmony_ci	string "Default init path"
3143d0407baSopenharmony_ci	default ""
3153d0407baSopenharmony_ci	help
3163d0407baSopenharmony_ci	  This option determines the default init for the system if no init=
3173d0407baSopenharmony_ci	  option is passed on the kernel command line. If the requested path is
3183d0407baSopenharmony_ci	  not present, we will still then move on to attempting further
3193d0407baSopenharmony_ci	  locations (e.g. /sbin/init, etc). If this is empty, we will just use
3203d0407baSopenharmony_ci	  the fallback list when init= is not passed.
3213d0407baSopenharmony_ci
3223d0407baSopenharmony_ciconfig DEFAULT_HOSTNAME
3233d0407baSopenharmony_ci	string "Default hostname"
3243d0407baSopenharmony_ci	default "(none)"
3253d0407baSopenharmony_ci	help
3263d0407baSopenharmony_ci	  This option determines the default system hostname before userspace
3273d0407baSopenharmony_ci	  calls sethostname(2). The kernel traditionally uses "(none)" here,
3283d0407baSopenharmony_ci	  but you may wish to use a different default here to make a minimal
3293d0407baSopenharmony_ci	  system more usable with less configuration.
3303d0407baSopenharmony_ci
3313d0407baSopenharmony_ci#
3323d0407baSopenharmony_ci# For some reason microblaze and nios2 hard code SWAP=n.  Hopefully we can
3333d0407baSopenharmony_ci# add proper SWAP support to them, in which case this can be remove.
3343d0407baSopenharmony_ci#
3353d0407baSopenharmony_ciconfig ARCH_NO_SWAP
3363d0407baSopenharmony_ci	bool
3373d0407baSopenharmony_ci
3383d0407baSopenharmony_ciconfig SWAP
3393d0407baSopenharmony_ci	bool "Support for paging of anonymous memory (swap)"
3403d0407baSopenharmony_ci	depends on MMU && BLOCK && !ARCH_NO_SWAP
3413d0407baSopenharmony_ci	default y
3423d0407baSopenharmony_ci	help
3433d0407baSopenharmony_ci	  This option allows you to choose whether you want to have support
3443d0407baSopenharmony_ci	  for so called swap devices or swap files in your kernel that are
3453d0407baSopenharmony_ci	  used to provide more virtual memory than the actual RAM present
3463d0407baSopenharmony_ci	  in your computer.  If unsure say Y.
3473d0407baSopenharmony_ci
3483d0407baSopenharmony_ciconfig SYSVIPC
3493d0407baSopenharmony_ci	bool "System V IPC"
3503d0407baSopenharmony_ci	help
3513d0407baSopenharmony_ci	  Inter Process Communication is a suite of library functions and
3523d0407baSopenharmony_ci	  system calls which let processes (running programs) synchronize and
3533d0407baSopenharmony_ci	  exchange information. It is generally considered to be a good thing,
3543d0407baSopenharmony_ci	  and some programs won't run unless you say Y here. In particular, if
3553d0407baSopenharmony_ci	  you want to run the DOS emulator dosemu under Linux (read the
3563d0407baSopenharmony_ci	  DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
3573d0407baSopenharmony_ci	  you'll need to say Y here.
3583d0407baSopenharmony_ci
3593d0407baSopenharmony_ci	  You can find documentation about IPC with "info ipc" and also in
3603d0407baSopenharmony_ci	  section 6.4 of the Linux Programmer's Guide, available from
3613d0407baSopenharmony_ci	  <http://www.tldp.org/guides.html>.
3623d0407baSopenharmony_ci
3633d0407baSopenharmony_ciconfig SYSVIPC_SYSCTL
3643d0407baSopenharmony_ci	bool
3653d0407baSopenharmony_ci	depends on SYSVIPC
3663d0407baSopenharmony_ci	depends on SYSCTL
3673d0407baSopenharmony_ci	default y
3683d0407baSopenharmony_ci
3693d0407baSopenharmony_ciconfig POSIX_MQUEUE
3703d0407baSopenharmony_ci	bool "POSIX Message Queues"
3713d0407baSopenharmony_ci	depends on NET
3723d0407baSopenharmony_ci	help
3733d0407baSopenharmony_ci	  POSIX variant of message queues is a part of IPC. In POSIX message
3743d0407baSopenharmony_ci	  queues every message has a priority which decides about succession
3753d0407baSopenharmony_ci	  of receiving it by a process. If you want to compile and run
3763d0407baSopenharmony_ci	  programs written e.g. for Solaris with use of its POSIX message
3773d0407baSopenharmony_ci	  queues (functions mq_*) say Y here.
3783d0407baSopenharmony_ci
3793d0407baSopenharmony_ci	  POSIX message queues are visible as a filesystem called 'mqueue'
3803d0407baSopenharmony_ci	  and can be mounted somewhere if you want to do filesystem
3813d0407baSopenharmony_ci	  operations on message queues.
3823d0407baSopenharmony_ci
3833d0407baSopenharmony_ci	  If unsure, say Y.
3843d0407baSopenharmony_ci
3853d0407baSopenharmony_ciconfig POSIX_MQUEUE_SYSCTL
3863d0407baSopenharmony_ci	bool
3873d0407baSopenharmony_ci	depends on POSIX_MQUEUE
3883d0407baSopenharmony_ci	depends on SYSCTL
3893d0407baSopenharmony_ci	default y
3903d0407baSopenharmony_ci
3913d0407baSopenharmony_ciconfig WATCH_QUEUE
3923d0407baSopenharmony_ci	bool "General notification queue"
3933d0407baSopenharmony_ci	default n
3943d0407baSopenharmony_ci	help
3953d0407baSopenharmony_ci
3963d0407baSopenharmony_ci	  This is a general notification queue for the kernel to pass events to
3973d0407baSopenharmony_ci	  userspace by splicing them into pipes.  It can be used in conjunction
3983d0407baSopenharmony_ci	  with watches for key/keyring change notifications and device
3993d0407baSopenharmony_ci	  notifications.
4003d0407baSopenharmony_ci
4013d0407baSopenharmony_ci	  See Documentation/watch_queue.rst
4023d0407baSopenharmony_ci
4033d0407baSopenharmony_ciconfig CROSS_MEMORY_ATTACH
4043d0407baSopenharmony_ci	bool "Enable process_vm_readv/writev syscalls"
4053d0407baSopenharmony_ci	depends on MMU
4063d0407baSopenharmony_ci	default y
4073d0407baSopenharmony_ci	help
4083d0407baSopenharmony_ci	  Enabling this option adds the system calls process_vm_readv and
4093d0407baSopenharmony_ci	  process_vm_writev which allow a process with the correct privileges
4103d0407baSopenharmony_ci	  to directly read from or write to another process' address space.
4113d0407baSopenharmony_ci	  See the man page for more details.
4123d0407baSopenharmony_ci
4133d0407baSopenharmony_ciconfig USELIB
4143d0407baSopenharmony_ci	bool "uselib syscall"
4153d0407baSopenharmony_ci	def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
4163d0407baSopenharmony_ci	help
4173d0407baSopenharmony_ci	  This option enables the uselib syscall, a system call used in the
4183d0407baSopenharmony_ci	  dynamic linker from libc5 and earlier.  glibc does not use this
4193d0407baSopenharmony_ci	  system call.  If you intend to run programs built on libc5 or
4203d0407baSopenharmony_ci	  earlier, you may need to enable this syscall.  Current systems
4213d0407baSopenharmony_ci	  running glibc can safely disable this.
4223d0407baSopenharmony_ci
4233d0407baSopenharmony_ciconfig AUDIT
4243d0407baSopenharmony_ci	bool "Auditing support"
4253d0407baSopenharmony_ci	depends on NET
4263d0407baSopenharmony_ci	help
4273d0407baSopenharmony_ci	  Enable auditing infrastructure that can be used with another
4283d0407baSopenharmony_ci	  kernel subsystem, such as SELinux (which requires this for
4293d0407baSopenharmony_ci	  logging of avc messages output).  System call auditing is included
4303d0407baSopenharmony_ci	  on architectures which support it.
4313d0407baSopenharmony_ci
4323d0407baSopenharmony_ciconfig HAVE_ARCH_AUDITSYSCALL
4333d0407baSopenharmony_ci	bool
4343d0407baSopenharmony_ci
4353d0407baSopenharmony_ciconfig AUDITSYSCALL
4363d0407baSopenharmony_ci	def_bool y
4373d0407baSopenharmony_ci	depends on AUDIT && HAVE_ARCH_AUDITSYSCALL
4383d0407baSopenharmony_ci	select FSNOTIFY
4393d0407baSopenharmony_ci
4403d0407baSopenharmony_cisource "kernel/irq/Kconfig"
4413d0407baSopenharmony_cisource "kernel/time/Kconfig"
4423d0407baSopenharmony_cisource "kernel/Kconfig.preempt"
4433d0407baSopenharmony_ci
4443d0407baSopenharmony_cimenu "CPU/Task time and stats accounting"
4453d0407baSopenharmony_ci
4463d0407baSopenharmony_ciconfig VIRT_CPU_ACCOUNTING
4473d0407baSopenharmony_ci	bool
4483d0407baSopenharmony_ci
4493d0407baSopenharmony_cichoice
4503d0407baSopenharmony_ci	prompt "Cputime accounting"
4513d0407baSopenharmony_ci	default TICK_CPU_ACCOUNTING if !PPC64
4523d0407baSopenharmony_ci	default VIRT_CPU_ACCOUNTING_NATIVE if PPC64
4533d0407baSopenharmony_ci
4543d0407baSopenharmony_ci# Kind of a stub config for the pure tick based cputime accounting
4553d0407baSopenharmony_ciconfig TICK_CPU_ACCOUNTING
4563d0407baSopenharmony_ci	bool "Simple tick based cputime accounting"
4573d0407baSopenharmony_ci	depends on !S390 && !NO_HZ_FULL
4583d0407baSopenharmony_ci	help
4593d0407baSopenharmony_ci	  This is the basic tick based cputime accounting that maintains
4603d0407baSopenharmony_ci	  statistics about user, system and idle time spent on per jiffies
4613d0407baSopenharmony_ci	  granularity.
4623d0407baSopenharmony_ci
4633d0407baSopenharmony_ci	  If unsure, say Y.
4643d0407baSopenharmony_ci
4653d0407baSopenharmony_ciconfig VIRT_CPU_ACCOUNTING_NATIVE
4663d0407baSopenharmony_ci	bool "Deterministic task and CPU time accounting"
4673d0407baSopenharmony_ci	depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL
4683d0407baSopenharmony_ci	select VIRT_CPU_ACCOUNTING
4693d0407baSopenharmony_ci	help
4703d0407baSopenharmony_ci	  Select this option to enable more accurate task and CPU time
4713d0407baSopenharmony_ci	  accounting.  This is done by reading a CPU counter on each
4723d0407baSopenharmony_ci	  kernel entry and exit and on transitions within the kernel
4733d0407baSopenharmony_ci	  between system, softirq and hardirq state, so there is a
4743d0407baSopenharmony_ci	  small performance impact.  In the case of s390 or IBM POWER > 5,
4753d0407baSopenharmony_ci	  this also enables accounting of stolen time on logically-partitioned
4763d0407baSopenharmony_ci	  systems.
4773d0407baSopenharmony_ci
4783d0407baSopenharmony_ciconfig VIRT_CPU_ACCOUNTING_GEN
4793d0407baSopenharmony_ci	bool "Full dynticks CPU time accounting"
4803d0407baSopenharmony_ci	depends on HAVE_CONTEXT_TRACKING
4813d0407baSopenharmony_ci	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
4823d0407baSopenharmony_ci	depends on GENERIC_CLOCKEVENTS
4833d0407baSopenharmony_ci	select VIRT_CPU_ACCOUNTING
4843d0407baSopenharmony_ci	select CONTEXT_TRACKING
4853d0407baSopenharmony_ci	help
4863d0407baSopenharmony_ci	  Select this option to enable task and CPU time accounting on full
4873d0407baSopenharmony_ci	  dynticks systems. This accounting is implemented by watching every
4883d0407baSopenharmony_ci	  kernel-user boundaries using the context tracking subsystem.
4893d0407baSopenharmony_ci	  The accounting is thus performed at the expense of some significant
4903d0407baSopenharmony_ci	  overhead.
4913d0407baSopenharmony_ci
4923d0407baSopenharmony_ci	  For now this is only useful if you are working on the full
4933d0407baSopenharmony_ci	  dynticks subsystem development.
4943d0407baSopenharmony_ci
4953d0407baSopenharmony_ci	  If unsure, say N.
4963d0407baSopenharmony_ci
4973d0407baSopenharmony_ciendchoice
4983d0407baSopenharmony_ci
4993d0407baSopenharmony_ciconfig IRQ_TIME_ACCOUNTING
5003d0407baSopenharmony_ci	bool "Fine granularity task level IRQ time accounting"
5013d0407baSopenharmony_ci	depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE
5023d0407baSopenharmony_ci	help
5033d0407baSopenharmony_ci	  Select this option to enable fine granularity task irq time
5043d0407baSopenharmony_ci	  accounting. This is done by reading a timestamp on each
5053d0407baSopenharmony_ci	  transitions between softirq and hardirq state, so there can be a
5063d0407baSopenharmony_ci	  small performance impact.
5073d0407baSopenharmony_ci
5083d0407baSopenharmony_ci	  If in doubt, say N here.
5093d0407baSopenharmony_ci
5103d0407baSopenharmony_ciconfig HAVE_SCHED_AVG_IRQ
5113d0407baSopenharmony_ci	def_bool y
5123d0407baSopenharmony_ci	depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING
5133d0407baSopenharmony_ci	depends on SMP
5143d0407baSopenharmony_ci
5153d0407baSopenharmony_ciconfig SCHED_THERMAL_PRESSURE
5163d0407baSopenharmony_ci	bool
5173d0407baSopenharmony_ci	default y if ARM && ARM_CPU_TOPOLOGY
5183d0407baSopenharmony_ci	default y if ARM64
5193d0407baSopenharmony_ci	depends on SMP
5203d0407baSopenharmony_ci	depends on CPU_FREQ_THERMAL
5213d0407baSopenharmony_ci	help
5223d0407baSopenharmony_ci	  Select this option to enable thermal pressure accounting in the
5233d0407baSopenharmony_ci	  scheduler. Thermal pressure is the value conveyed to the scheduler
5243d0407baSopenharmony_ci	  that reflects the reduction in CPU compute capacity resulted from
5253d0407baSopenharmony_ci	  thermal throttling. Thermal throttling occurs when the performance of
5263d0407baSopenharmony_ci	  a CPU is capped due to high operating temperatures.
5273d0407baSopenharmony_ci
5283d0407baSopenharmony_ci	  If selected, the scheduler will be able to balance tasks accordingly,
5293d0407baSopenharmony_ci	  i.e. put less load on throttled CPUs than on non/less throttled ones.
5303d0407baSopenharmony_ci
5313d0407baSopenharmony_ci	  This requires the architecture to implement
5323d0407baSopenharmony_ci	  arch_set_thermal_pressure() and arch_get_thermal_pressure().
5333d0407baSopenharmony_ci
5343d0407baSopenharmony_ciconfig SCHED_WALT
5353d0407baSopenharmony_ci	bool "Support window based load tracking"
5363d0407baSopenharmony_ci	depends on SMP
5373d0407baSopenharmony_ci	help
5383d0407baSopenharmony_ci	This feature will allow the scheduler to maintain a tunable window
5393d0407baSopenharmony_ci	based set of metrics for tasks and runqueues. These metrics can be
5403d0407baSopenharmony_ci	used to guide task placement as well as task frequency requirements
5413d0407baSopenharmony_ci	for cpufreq governors.
5423d0407baSopenharmony_ci
5433d0407baSopenharmony_ciconfig BSD_PROCESS_ACCT
5443d0407baSopenharmony_ci	bool "BSD Process Accounting"
5453d0407baSopenharmony_ci	depends on MULTIUSER
5463d0407baSopenharmony_ci	help
5473d0407baSopenharmony_ci	  If you say Y here, a user level program will be able to instruct the
5483d0407baSopenharmony_ci	  kernel (via a special system call) to write process accounting
5493d0407baSopenharmony_ci	  information to a file: whenever a process exits, information about
5503d0407baSopenharmony_ci	  that process will be appended to the file by the kernel.  The
5513d0407baSopenharmony_ci	  information includes things such as creation time, owning user,
5523d0407baSopenharmony_ci	  command name, memory usage, controlling terminal etc. (the complete
5533d0407baSopenharmony_ci	  list is in the struct acct in <file:include/linux/acct.h>).  It is
5543d0407baSopenharmony_ci	  up to the user level program to do useful things with this
5553d0407baSopenharmony_ci	  information.  This is generally a good idea, so say Y.
5563d0407baSopenharmony_ci
5573d0407baSopenharmony_ciconfig BSD_PROCESS_ACCT_V3
5583d0407baSopenharmony_ci	bool "BSD Process Accounting version 3 file format"
5593d0407baSopenharmony_ci	depends on BSD_PROCESS_ACCT
5603d0407baSopenharmony_ci	default n
5613d0407baSopenharmony_ci	help
5623d0407baSopenharmony_ci	  If you say Y here, the process accounting information is written
5633d0407baSopenharmony_ci	  in a new file format that also logs the process IDs of each
5643d0407baSopenharmony_ci	  process and its parent. Note that this file format is incompatible
5653d0407baSopenharmony_ci	  with previous v0/v1/v2 file formats, so you will need updated tools
5663d0407baSopenharmony_ci	  for processing it. A preliminary version of these tools is available
5673d0407baSopenharmony_ci	  at <http://www.gnu.org/software/acct/>.
5683d0407baSopenharmony_ci
5693d0407baSopenharmony_ciconfig TASKSTATS
5703d0407baSopenharmony_ci	bool "Export task/process statistics through netlink"
5713d0407baSopenharmony_ci	depends on NET
5723d0407baSopenharmony_ci	depends on MULTIUSER
5733d0407baSopenharmony_ci	default n
5743d0407baSopenharmony_ci	help
5753d0407baSopenharmony_ci	  Export selected statistics for tasks/processes through the
5763d0407baSopenharmony_ci	  generic netlink interface. Unlike BSD process accounting, the
5773d0407baSopenharmony_ci	  statistics are available during the lifetime of tasks/processes as
5783d0407baSopenharmony_ci	  responses to commands. Like BSD accounting, they are sent to user
5793d0407baSopenharmony_ci	  space on task exit.
5803d0407baSopenharmony_ci
5813d0407baSopenharmony_ci	  Say N if unsure.
5823d0407baSopenharmony_ci
5833d0407baSopenharmony_ciconfig TASK_DELAY_ACCT
5843d0407baSopenharmony_ci	bool "Enable per-task delay accounting"
5853d0407baSopenharmony_ci	depends on TASKSTATS
5863d0407baSopenharmony_ci	select SCHED_INFO
5873d0407baSopenharmony_ci	help
5883d0407baSopenharmony_ci	  Collect information on time spent by a task waiting for system
5893d0407baSopenharmony_ci	  resources like cpu, synchronous block I/O completion and swapping
5903d0407baSopenharmony_ci	  in pages. Such statistics can help in setting a task's priorities
5913d0407baSopenharmony_ci	  relative to other tasks for cpu, io, rss limits etc.
5923d0407baSopenharmony_ci
5933d0407baSopenharmony_ci	  Say N if unsure.
5943d0407baSopenharmony_ci
5953d0407baSopenharmony_ciconfig TASK_XACCT
5963d0407baSopenharmony_ci	bool "Enable extended accounting over taskstats"
5973d0407baSopenharmony_ci	depends on TASKSTATS
5983d0407baSopenharmony_ci	help
5993d0407baSopenharmony_ci	  Collect extended task accounting data and send the data
6003d0407baSopenharmony_ci	  to userland for processing over the taskstats interface.
6013d0407baSopenharmony_ci
6023d0407baSopenharmony_ci	  Say N if unsure.
6033d0407baSopenharmony_ci
6043d0407baSopenharmony_ciconfig TASK_IO_ACCOUNTING
6053d0407baSopenharmony_ci	bool "Enable per-task storage I/O accounting"
6063d0407baSopenharmony_ci	depends on TASK_XACCT
6073d0407baSopenharmony_ci	help
6083d0407baSopenharmony_ci	  Collect information on the number of bytes of storage I/O which this
6093d0407baSopenharmony_ci	  task has caused.
6103d0407baSopenharmony_ci
6113d0407baSopenharmony_ci	  Say N if unsure.
6123d0407baSopenharmony_ci
6133d0407baSopenharmony_ciconfig PSI
6143d0407baSopenharmony_ci	bool "Pressure stall information tracking"
6153d0407baSopenharmony_ci	help
6163d0407baSopenharmony_ci	  Collect metrics that indicate how overcommitted the CPU, memory,
6173d0407baSopenharmony_ci	  and IO capacity are in the system.
6183d0407baSopenharmony_ci
6193d0407baSopenharmony_ci	  If you say Y here, the kernel will create /proc/pressure/ with the
6203d0407baSopenharmony_ci	  pressure statistics files cpu, memory, and io. These will indicate
6213d0407baSopenharmony_ci	  the share of walltime in which some or all tasks in the system are
6223d0407baSopenharmony_ci	  delayed due to contention of the respective resource.
6233d0407baSopenharmony_ci
6243d0407baSopenharmony_ci	  In kernels with cgroup support, cgroups (cgroup2 only) will
6253d0407baSopenharmony_ci	  have cpu.pressure, memory.pressure, and io.pressure files,
6263d0407baSopenharmony_ci	  which aggregate pressure stalls for the grouped tasks only.
6273d0407baSopenharmony_ci
6283d0407baSopenharmony_ci	  For more details see Documentation/accounting/psi.rst.
6293d0407baSopenharmony_ci
6303d0407baSopenharmony_ci	  Say N if unsure.
6313d0407baSopenharmony_ci
6323d0407baSopenharmony_ciconfig PSI_DEFAULT_DISABLED
6333d0407baSopenharmony_ci	bool "Require boot parameter to enable pressure stall information tracking"
6343d0407baSopenharmony_ci	default n
6353d0407baSopenharmony_ci	depends on PSI
6363d0407baSopenharmony_ci	help
6373d0407baSopenharmony_ci	  If set, pressure stall information tracking will be disabled
6383d0407baSopenharmony_ci	  per default but can be enabled through passing psi=1 on the
6393d0407baSopenharmony_ci	  kernel commandline during boot.
6403d0407baSopenharmony_ci
6413d0407baSopenharmony_ci	  This feature adds some code to the task wakeup and sleep
6423d0407baSopenharmony_ci	  paths of the scheduler. The overhead is too low to affect
6433d0407baSopenharmony_ci	  common scheduling-intense workloads in practice (such as
6443d0407baSopenharmony_ci	  webservers, memcache), but it does show up in artificial
6453d0407baSopenharmony_ci	  scheduler stress tests, such as hackbench.
6463d0407baSopenharmony_ci
6473d0407baSopenharmony_ci	  If you are paranoid and not sure what the kernel will be
6483d0407baSopenharmony_ci	  used for, say Y.
6493d0407baSopenharmony_ci
6503d0407baSopenharmony_ci	  Say N if unsure.
6513d0407baSopenharmony_ci
6523d0407baSopenharmony_ciendmenu # "CPU/Task time and stats accounting"
6533d0407baSopenharmony_ci
6543d0407baSopenharmony_ciconfig CPU_ISOLATION
6553d0407baSopenharmony_ci	bool "CPU isolation"
6563d0407baSopenharmony_ci	depends on SMP || COMPILE_TEST
6573d0407baSopenharmony_ci	default y
6583d0407baSopenharmony_ci	help
6593d0407baSopenharmony_ci	  Make sure that CPUs running critical tasks are not disturbed by
6603d0407baSopenharmony_ci	  any source of "noise" such as unbound workqueues, timers, kthreads...
6613d0407baSopenharmony_ci	  Unbound jobs get offloaded to housekeeping CPUs. This is driven by
6623d0407baSopenharmony_ci	  the "isolcpus=" boot parameter.
6633d0407baSopenharmony_ci
6643d0407baSopenharmony_ci	  Say Y if unsure.
6653d0407baSopenharmony_ci
6663d0407baSopenharmony_ciconfig SCHED_RUNNING_AVG
6673d0407baSopenharmony_ci	bool "per-rq and per-cluster running average statistics"
6683d0407baSopenharmony_ci	default n
6693d0407baSopenharmony_ci
6703d0407baSopenharmony_ciconfig CPU_ISOLATION_OPT
6713d0407baSopenharmony_ci	bool "CPU isolation optimization"
6723d0407baSopenharmony_ci	depends on SMP
6733d0407baSopenharmony_ci	default n
6743d0407baSopenharmony_ci	help
6753d0407baSopenharmony_ci	  This option enables cpu isolation optimization, which allows
6763d0407baSopenharmony_ci	  to isolate cpu dynamically. The isolated cpu will be unavailable
6773d0407baSopenharmony_ci	  to scheduler and load balancer, and all its non-pinned timers,
6783d0407baSopenharmony_ci	  IRQs and tasks will be migrated to other cpus, only pinned
6793d0407baSopenharmony_ci	  kthread and IRQS are still allowed to run, this achieves
6803d0407baSopenharmony_ci	  similar effect as hotplug but at lower latency cost.
6813d0407baSopenharmony_ci
6823d0407baSopenharmony_ciconfig SCHED_CORE_CTRL
6833d0407baSopenharmony_ci	bool "Core control"
6843d0407baSopenharmony_ci	depends on CPU_ISOLATION_OPT
6853d0407baSopenharmony_ci	select SCHED_RUNNING_AVG
6863d0407baSopenharmony_ci	default n
6873d0407baSopenharmony_ci	help
6883d0407baSopenharmony_ci	  This option enables the core control functionality in
6893d0407baSopenharmony_ci	  the scheduler. Core control automatically isolate and
6903d0407baSopenharmony_ci	  unisolate cores based on cpu load and utilization.
6913d0407baSopenharmony_ci
6923d0407baSopenharmony_cisource "kernel/rcu/Kconfig"
6933d0407baSopenharmony_ci
6943d0407baSopenharmony_ciconfig BUILD_BIN2C
6953d0407baSopenharmony_ci	bool
6963d0407baSopenharmony_ci	default n
6973d0407baSopenharmony_ci
6983d0407baSopenharmony_ciconfig IKCONFIG
6993d0407baSopenharmony_ci	tristate "Kernel .config support"
7003d0407baSopenharmony_ci	help
7013d0407baSopenharmony_ci	  This option enables the complete Linux kernel ".config" file
7023d0407baSopenharmony_ci	  contents to be saved in the kernel. It provides documentation
7033d0407baSopenharmony_ci	  of which kernel options are used in a running kernel or in an
7043d0407baSopenharmony_ci	  on-disk kernel.  This information can be extracted from the kernel
7053d0407baSopenharmony_ci	  image file with the script scripts/extract-ikconfig and used as
7063d0407baSopenharmony_ci	  input to rebuild the current kernel or to build another kernel.
7073d0407baSopenharmony_ci	  It can also be extracted from a running kernel by reading
7083d0407baSopenharmony_ci	  /proc/config.gz if enabled (below).
7093d0407baSopenharmony_ci
7103d0407baSopenharmony_ciconfig IKCONFIG_PROC
7113d0407baSopenharmony_ci	bool "Enable access to .config through /proc/config.gz"
7123d0407baSopenharmony_ci	depends on IKCONFIG && PROC_FS
7133d0407baSopenharmony_ci	help
7143d0407baSopenharmony_ci	  This option enables access to the kernel configuration file
7153d0407baSopenharmony_ci	  through /proc/config.gz.
7163d0407baSopenharmony_ci
7173d0407baSopenharmony_ciconfig IKHEADERS
7183d0407baSopenharmony_ci	tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz"
7193d0407baSopenharmony_ci	depends on SYSFS
7203d0407baSopenharmony_ci	help
7213d0407baSopenharmony_ci	  This option enables access to the in-kernel headers that are generated during
7223d0407baSopenharmony_ci	  the build process. These can be used to build eBPF tracing programs,
7233d0407baSopenharmony_ci	  or similar programs.  If you build the headers as a module, a module called
7243d0407baSopenharmony_ci	  kheaders.ko is built which can be loaded on-demand to get access to headers.
7253d0407baSopenharmony_ci
7263d0407baSopenharmony_ciconfig LOG_BUF_SHIFT
7273d0407baSopenharmony_ci	int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
7283d0407baSopenharmony_ci	range 12 25 if !H8300
7293d0407baSopenharmony_ci	range 12 19 if H8300
7303d0407baSopenharmony_ci	default 17
7313d0407baSopenharmony_ci	depends on PRINTK
7323d0407baSopenharmony_ci	help
7333d0407baSopenharmony_ci	  Select the minimal kernel log buffer size as a power of 2.
7343d0407baSopenharmony_ci	  The final size is affected by LOG_CPU_MAX_BUF_SHIFT config
7353d0407baSopenharmony_ci	  parameter, see below. Any higher size also might be forced
7363d0407baSopenharmony_ci	  by "log_buf_len" boot parameter.
7373d0407baSopenharmony_ci
7383d0407baSopenharmony_ci	  Examples:
7393d0407baSopenharmony_ci		     17 => 128 KB
7403d0407baSopenharmony_ci		     16 => 64 KB
7413d0407baSopenharmony_ci		     15 => 32 KB
7423d0407baSopenharmony_ci		     14 => 16 KB
7433d0407baSopenharmony_ci		     13 =>  8 KB
7443d0407baSopenharmony_ci		     12 =>  4 KB
7453d0407baSopenharmony_ci
7463d0407baSopenharmony_ciconfig LOG_CPU_MAX_BUF_SHIFT
7473d0407baSopenharmony_ci	int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"
7483d0407baSopenharmony_ci	depends on SMP
7493d0407baSopenharmony_ci	range 0 21
7503d0407baSopenharmony_ci	default 12 if !BASE_SMALL
7513d0407baSopenharmony_ci	default 0 if BASE_SMALL
7523d0407baSopenharmony_ci	depends on PRINTK
7533d0407baSopenharmony_ci	help
7543d0407baSopenharmony_ci	  This option allows to increase the default ring buffer size
7553d0407baSopenharmony_ci	  according to the number of CPUs. The value defines the contribution
7563d0407baSopenharmony_ci	  of each CPU as a power of 2. The used space is typically only few
7573d0407baSopenharmony_ci	  lines however it might be much more when problems are reported,
7583d0407baSopenharmony_ci	  e.g. backtraces.
7593d0407baSopenharmony_ci
7603d0407baSopenharmony_ci	  The increased size means that a new buffer has to be allocated and
7613d0407baSopenharmony_ci	  the original static one is unused. It makes sense only on systems
7623d0407baSopenharmony_ci	  with more CPUs. Therefore this value is used only when the sum of
7633d0407baSopenharmony_ci	  contributions is greater than the half of the default kernel ring
7643d0407baSopenharmony_ci	  buffer as defined by LOG_BUF_SHIFT. The default values are set
7653d0407baSopenharmony_ci	  so that more than 16 CPUs are needed to trigger the allocation.
7663d0407baSopenharmony_ci
7673d0407baSopenharmony_ci	  Also this option is ignored when "log_buf_len" kernel parameter is
7683d0407baSopenharmony_ci	  used as it forces an exact (power of two) size of the ring buffer.
7693d0407baSopenharmony_ci
7703d0407baSopenharmony_ci	  The number of possible CPUs is used for this computation ignoring
7713d0407baSopenharmony_ci	  hotplugging making the computation optimal for the worst case
7723d0407baSopenharmony_ci	  scenario while allowing a simple algorithm to be used from bootup.
7733d0407baSopenharmony_ci
7743d0407baSopenharmony_ci	  Examples shift values and their meaning:
7753d0407baSopenharmony_ci		     17 => 128 KB for each CPU
7763d0407baSopenharmony_ci		     16 =>  64 KB for each CPU
7773d0407baSopenharmony_ci		     15 =>  32 KB for each CPU
7783d0407baSopenharmony_ci		     14 =>  16 KB for each CPU
7793d0407baSopenharmony_ci		     13 =>   8 KB for each CPU
7803d0407baSopenharmony_ci		     12 =>   4 KB for each CPU
7813d0407baSopenharmony_ci
7823d0407baSopenharmony_ciconfig PRINTK_SAFE_LOG_BUF_SHIFT
7833d0407baSopenharmony_ci	int "Temporary per-CPU printk log buffer size (12 => 4KB, 13 => 8KB)"
7843d0407baSopenharmony_ci	range 10 21
7853d0407baSopenharmony_ci	default 13
7863d0407baSopenharmony_ci	depends on PRINTK
7873d0407baSopenharmony_ci	help
7883d0407baSopenharmony_ci	  Select the size of an alternate printk per-CPU buffer where messages
7893d0407baSopenharmony_ci	  printed from usafe contexts are temporary stored. One example would
7903d0407baSopenharmony_ci	  be NMI messages, another one - printk recursion. The messages are
7913d0407baSopenharmony_ci	  copied to the main log buffer in a safe context to avoid a deadlock.
7923d0407baSopenharmony_ci	  The value defines the size as a power of 2.
7933d0407baSopenharmony_ci
7943d0407baSopenharmony_ci	  Those messages are rare and limited. The largest one is when
7953d0407baSopenharmony_ci	  a backtrace is printed. It usually fits into 4KB. Select
7963d0407baSopenharmony_ci	  8KB if you want to be on the safe side.
7973d0407baSopenharmony_ci
7983d0407baSopenharmony_ci	  Examples:
7993d0407baSopenharmony_ci		     17 => 128 KB for each CPU
8003d0407baSopenharmony_ci		     16 =>  64 KB for each CPU
8013d0407baSopenharmony_ci		     15 =>  32 KB for each CPU
8023d0407baSopenharmony_ci		     14 =>  16 KB for each CPU
8033d0407baSopenharmony_ci		     13 =>   8 KB for each CPU
8043d0407baSopenharmony_ci		     12 =>   4 KB for each CPU
8053d0407baSopenharmony_ci
8063d0407baSopenharmony_ci#
8073d0407baSopenharmony_ci# Architectures with an unreliable sched_clock() should select this:
8083d0407baSopenharmony_ci#
8093d0407baSopenharmony_ciconfig HAVE_UNSTABLE_SCHED_CLOCK
8103d0407baSopenharmony_ci	bool
8113d0407baSopenharmony_ci
8123d0407baSopenharmony_ciconfig GENERIC_SCHED_CLOCK
8133d0407baSopenharmony_ci	bool
8143d0407baSopenharmony_ci
8153d0407baSopenharmony_cimenu "Scheduler features"
8163d0407baSopenharmony_ci
8173d0407baSopenharmony_ciconfig UCLAMP_TASK
8183d0407baSopenharmony_ci	bool "Enable utilization clamping for RT/FAIR tasks"
8193d0407baSopenharmony_ci	depends on CPU_FREQ_GOV_SCHEDUTIL
8203d0407baSopenharmony_ci	help
8213d0407baSopenharmony_ci	  This feature enables the scheduler to track the clamped utilization
8223d0407baSopenharmony_ci	  of each CPU based on RUNNABLE tasks scheduled on that CPU.
8233d0407baSopenharmony_ci
8243d0407baSopenharmony_ci	  With this option, the user can specify the min and max CPU
8253d0407baSopenharmony_ci	  utilization allowed for RUNNABLE tasks. The max utilization defines
8263d0407baSopenharmony_ci	  the maximum frequency a task should use while the min utilization
8273d0407baSopenharmony_ci	  defines the minimum frequency it should use.
8283d0407baSopenharmony_ci
8293d0407baSopenharmony_ci	  Both min and max utilization clamp values are hints to the scheduler,
8303d0407baSopenharmony_ci	  aiming at improving its frequency selection policy, but they do not
8313d0407baSopenharmony_ci	  enforce or grant any specific bandwidth for tasks.
8323d0407baSopenharmony_ci
8333d0407baSopenharmony_ci	  If in doubt, say N.
8343d0407baSopenharmony_ci
8353d0407baSopenharmony_ciconfig UCLAMP_BUCKETS_COUNT
8363d0407baSopenharmony_ci	int "Number of supported utilization clamp buckets"
8373d0407baSopenharmony_ci	range 5 20
8383d0407baSopenharmony_ci	default 5
8393d0407baSopenharmony_ci	depends on UCLAMP_TASK
8403d0407baSopenharmony_ci	help
8413d0407baSopenharmony_ci	  Defines the number of clamp buckets to use. The range of each bucket
8423d0407baSopenharmony_ci	  will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the
8433d0407baSopenharmony_ci	  number of clamp buckets the finer their granularity and the higher
8443d0407baSopenharmony_ci	  the precision of clamping aggregation and tracking at run-time.
8453d0407baSopenharmony_ci
8463d0407baSopenharmony_ci	  For example, with the minimum configuration value we will have 5
8473d0407baSopenharmony_ci	  clamp buckets tracking 20% utilization each. A 25% boosted tasks will
8483d0407baSopenharmony_ci	  be refcounted in the [20..39]% bucket and will set the bucket clamp
8493d0407baSopenharmony_ci	  effective value to 25%.
8503d0407baSopenharmony_ci	  If a second 30% boosted task should be co-scheduled on the same CPU,
8513d0407baSopenharmony_ci	  that task will be refcounted in the same bucket of the first task and
8523d0407baSopenharmony_ci	  it will boost the bucket clamp effective value to 30%.
8533d0407baSopenharmony_ci	  The clamp effective value of a bucket is reset to its nominal value
8543d0407baSopenharmony_ci	  (20% in the example above) when there are no more tasks refcounted in
8553d0407baSopenharmony_ci	  that bucket.
8563d0407baSopenharmony_ci
8573d0407baSopenharmony_ci	  An additional boost/capping margin can be added to some tasks. In the
8583d0407baSopenharmony_ci	  example above the 25% task will be boosted to 30% until it exits the
8593d0407baSopenharmony_ci	  CPU. If that should be considered not acceptable on certain systems,
8603d0407baSopenharmony_ci	  it's always possible to reduce the margin by increasing the number of
8613d0407baSopenharmony_ci	  clamp buckets to trade off used memory for run-time tracking
8623d0407baSopenharmony_ci	  precision.
8633d0407baSopenharmony_ci
8643d0407baSopenharmony_ci	  If in doubt, use the default value.
8653d0407baSopenharmony_ci
8663d0407baSopenharmony_ciconfig SCHED_LATENCY_NICE
8673d0407baSopenharmony_ci	bool "Enable latency feature for FAIR tasks"
8683d0407baSopenharmony_ci	default n
8693d0407baSopenharmony_ci	help
8703d0407baSopenharmony_ci	  This feature use latency nice priority to decide if a cfs task can
8713d0407baSopenharmony_ci	  preempt the current running task.
8723d0407baSopenharmony_cisource "kernel/sched/rtg/Kconfig"
8733d0407baSopenharmony_ci
8743d0407baSopenharmony_ciconfig SCHED_EAS
8753d0407baSopenharmony_ci	bool "EAS scheduler optimization"
8763d0407baSopenharmony_ci	default n
8773d0407baSopenharmony_ci	help
8783d0407baSopenharmony_ci	  Check and migrate the CFS process to a more suitable CPU in the tick.
8793d0407baSopenharmony_ci
8803d0407baSopenharmony_ciconfig SCHED_RT_CAS
8813d0407baSopenharmony_ci	bool "rt-cas optimization"
8823d0407baSopenharmony_ci	depends on SCHED_EAS
8833d0407baSopenharmony_ci	default n
8843d0407baSopenharmony_ci	help
8853d0407baSopenharmony_ci	  RT task detects capacity during CPU selection
8863d0407baSopenharmony_ci
8873d0407baSopenharmony_ciconfig SCHED_RT_ACTIVE_LB
8883d0407baSopenharmony_ci	bool "RT Capacity Aware Misfit Task"
8893d0407baSopenharmony_ci	depends on SCHED_EAS
8903d0407baSopenharmony_ci	default n
8913d0407baSopenharmony_ci	help
8923d0407baSopenharmony_ci	  Check and migrate the RT process to a more suitable CPU in the tick.
8933d0407baSopenharmony_ci
8943d0407baSopenharmony_ciendmenu
8953d0407baSopenharmony_ci
8963d0407baSopenharmony_ci#
8973d0407baSopenharmony_ci# For architectures that want to enable the support for NUMA-affine scheduler
8983d0407baSopenharmony_ci# balancing logic:
8993d0407baSopenharmony_ci#
9003d0407baSopenharmony_ciconfig ARCH_SUPPORTS_NUMA_BALANCING
9013d0407baSopenharmony_ci	bool
9023d0407baSopenharmony_ci
9033d0407baSopenharmony_ci#
9043d0407baSopenharmony_ci# For architectures that prefer to flush all TLBs after a number of pages
9053d0407baSopenharmony_ci# are unmapped instead of sending one IPI per page to flush. The architecture
9063d0407baSopenharmony_ci# must provide guarantees on what happens if a clean TLB cache entry is
9073d0407baSopenharmony_ci# written after the unmap. Details are in mm/rmap.c near the check for
9083d0407baSopenharmony_ci# should_defer_flush. The architecture should also consider if the full flush
9093d0407baSopenharmony_ci# and the refill costs are offset by the savings of sending fewer IPIs.
9103d0407baSopenharmony_ciconfig ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
9113d0407baSopenharmony_ci	bool
9123d0407baSopenharmony_ci
9133d0407baSopenharmony_ciconfig CC_HAS_INT128
9143d0407baSopenharmony_ci	def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT
9153d0407baSopenharmony_ci
9163d0407baSopenharmony_ci#
9173d0407baSopenharmony_ci# For architectures that know their GCC __int128 support is sound
9183d0407baSopenharmony_ci#
9193d0407baSopenharmony_ciconfig ARCH_SUPPORTS_INT128
9203d0407baSopenharmony_ci	bool
9213d0407baSopenharmony_ci
9223d0407baSopenharmony_ci# For architectures that (ab)use NUMA to represent different memory regions
9233d0407baSopenharmony_ci# all cpu-local but of different latencies, such as SuperH.
9243d0407baSopenharmony_ci#
9253d0407baSopenharmony_ciconfig ARCH_WANT_NUMA_VARIABLE_LOCALITY
9263d0407baSopenharmony_ci	bool
9273d0407baSopenharmony_ci
9283d0407baSopenharmony_ciconfig NUMA_BALANCING
9293d0407baSopenharmony_ci	bool "Memory placement aware NUMA scheduler"
9303d0407baSopenharmony_ci	depends on ARCH_SUPPORTS_NUMA_BALANCING
9313d0407baSopenharmony_ci	depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
9323d0407baSopenharmony_ci	depends on SMP && NUMA && MIGRATION
9333d0407baSopenharmony_ci	help
9343d0407baSopenharmony_ci	  This option adds support for automatic NUMA aware memory/task placement.
9353d0407baSopenharmony_ci	  The mechanism is quite primitive and is based on migrating memory when
9363d0407baSopenharmony_ci	  it has references to the node the task is running on.
9373d0407baSopenharmony_ci
9383d0407baSopenharmony_ci	  This system will be inactive on UMA systems.
9393d0407baSopenharmony_ci
9403d0407baSopenharmony_ciconfig NUMA_BALANCING_DEFAULT_ENABLED
9413d0407baSopenharmony_ci	bool "Automatically enable NUMA aware memory/task placement"
9423d0407baSopenharmony_ci	default y
9433d0407baSopenharmony_ci	depends on NUMA_BALANCING
9443d0407baSopenharmony_ci	help
9453d0407baSopenharmony_ci	  If set, automatic NUMA balancing will be enabled if running on a NUMA
9463d0407baSopenharmony_ci	  machine.
9473d0407baSopenharmony_ci
9483d0407baSopenharmony_cimenuconfig CGROUPS
9493d0407baSopenharmony_ci	bool "Control Group support"
9503d0407baSopenharmony_ci	select KERNFS
9513d0407baSopenharmony_ci	help
9523d0407baSopenharmony_ci	  This option adds support for grouping sets of processes together, for
9533d0407baSopenharmony_ci	  use with process control subsystems such as Cpusets, CFS, memory
9543d0407baSopenharmony_ci	  controls or device isolation.
9553d0407baSopenharmony_ci	  See
9563d0407baSopenharmony_ci		- Documentation/scheduler/sched-design-CFS.rst	(CFS)
9573d0407baSopenharmony_ci		- Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation
9583d0407baSopenharmony_ci					  and resource control)
9593d0407baSopenharmony_ci
9603d0407baSopenharmony_ci	  Say N if unsure.
9613d0407baSopenharmony_ci
9623d0407baSopenharmony_ciif CGROUPS
9633d0407baSopenharmony_ci
9643d0407baSopenharmony_ciconfig PAGE_COUNTER
9653d0407baSopenharmony_ci	bool
9663d0407baSopenharmony_ci
9673d0407baSopenharmony_ciconfig MEMCG
9683d0407baSopenharmony_ci	bool "Memory controller"
9693d0407baSopenharmony_ci	select PAGE_COUNTER
9703d0407baSopenharmony_ci	select EVENTFD
9713d0407baSopenharmony_ci	help
9723d0407baSopenharmony_ci	  Provides control over the memory footprint of tasks in a cgroup.
9733d0407baSopenharmony_ci
9743d0407baSopenharmony_ciconfig MEMCG_SWAP
9753d0407baSopenharmony_ci	bool
9763d0407baSopenharmony_ci	depends on MEMCG && SWAP
9773d0407baSopenharmony_ci	default y
9783d0407baSopenharmony_ci
9793d0407baSopenharmony_ciconfig MEMCG_KMEM
9803d0407baSopenharmony_ci	bool
9813d0407baSopenharmony_ci	depends on MEMCG && !SLOB
9823d0407baSopenharmony_ci	default y
9833d0407baSopenharmony_ci
9843d0407baSopenharmony_ciconfig BLK_CGROUP
9853d0407baSopenharmony_ci	bool "IO controller"
9863d0407baSopenharmony_ci	depends on BLOCK
9873d0407baSopenharmony_ci	default n
9883d0407baSopenharmony_ci	help
9893d0407baSopenharmony_ci	Generic block IO controller cgroup interface. This is the common
9903d0407baSopenharmony_ci	cgroup interface which should be used by various IO controlling
9913d0407baSopenharmony_ci	policies.
9923d0407baSopenharmony_ci
9933d0407baSopenharmony_ci	Currently, CFQ IO scheduler uses it to recognize task groups and
9943d0407baSopenharmony_ci	control disk bandwidth allocation (proportional time slice allocation)
9953d0407baSopenharmony_ci	to such task groups. It is also used by bio throttling logic in
9963d0407baSopenharmony_ci	block layer to implement upper limit in IO rates on a device.
9973d0407baSopenharmony_ci
9983d0407baSopenharmony_ci	This option only enables generic Block IO controller infrastructure.
9993d0407baSopenharmony_ci	One needs to also enable actual IO controlling logic/policy. For
10003d0407baSopenharmony_ci	enabling proportional weight division of disk bandwidth in CFQ, set
10013d0407baSopenharmony_ci	CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
10023d0407baSopenharmony_ci	CONFIG_BLK_DEV_THROTTLING=y.
10033d0407baSopenharmony_ci
10043d0407baSopenharmony_ci	See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.
10053d0407baSopenharmony_ci
10063d0407baSopenharmony_ciconfig CGROUP_WRITEBACK
10073d0407baSopenharmony_ci	bool
10083d0407baSopenharmony_ci	depends on MEMCG && BLK_CGROUP
10093d0407baSopenharmony_ci	default y
10103d0407baSopenharmony_ci
10113d0407baSopenharmony_cimenuconfig CGROUP_SCHED
10123d0407baSopenharmony_ci	bool "CPU controller"
10133d0407baSopenharmony_ci	default n
10143d0407baSopenharmony_ci	help
10153d0407baSopenharmony_ci	  This feature lets CPU scheduler recognize task groups and control CPU
10163d0407baSopenharmony_ci	  bandwidth allocation to such task groups. It uses cgroups to group
10173d0407baSopenharmony_ci	  tasks.
10183d0407baSopenharmony_ci
10193d0407baSopenharmony_ciif CGROUP_SCHED
10203d0407baSopenharmony_ciconfig FAIR_GROUP_SCHED
10213d0407baSopenharmony_ci	bool "Group scheduling for SCHED_OTHER"
10223d0407baSopenharmony_ci	depends on CGROUP_SCHED
10233d0407baSopenharmony_ci	default CGROUP_SCHED
10243d0407baSopenharmony_ci
10253d0407baSopenharmony_ciconfig CFS_BANDWIDTH
10263d0407baSopenharmony_ci	bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
10273d0407baSopenharmony_ci	depends on FAIR_GROUP_SCHED
10283d0407baSopenharmony_ci	default n
10293d0407baSopenharmony_ci	help
10303d0407baSopenharmony_ci	  This option allows users to define CPU bandwidth rates (limits) for
10313d0407baSopenharmony_ci	  tasks running within the fair group scheduler.  Groups with no limit
10323d0407baSopenharmony_ci	  set are considered to be unconstrained and will run with no
10333d0407baSopenharmony_ci	  restriction.
10343d0407baSopenharmony_ci	  See Documentation/scheduler/sched-bwc.rst for more information.
10353d0407baSopenharmony_ci
10363d0407baSopenharmony_ciconfig RT_GROUP_SCHED
10373d0407baSopenharmony_ci	bool "Group scheduling for SCHED_RR/FIFO"
10383d0407baSopenharmony_ci	depends on CGROUP_SCHED
10393d0407baSopenharmony_ci	default n
10403d0407baSopenharmony_ci	help
10413d0407baSopenharmony_ci	  This feature lets you explicitly allocate real CPU bandwidth
10423d0407baSopenharmony_ci	  to task groups. If enabled, it will also make it impossible to
10433d0407baSopenharmony_ci	  schedule realtime tasks for non-root users until you allocate
10443d0407baSopenharmony_ci	  realtime bandwidth for them.
10453d0407baSopenharmony_ci	  See Documentation/scheduler/sched-rt-group.rst for more information.
10463d0407baSopenharmony_ci
10473d0407baSopenharmony_ciendif #CGROUP_SCHED
10483d0407baSopenharmony_ci
10493d0407baSopenharmony_ciconfig UCLAMP_TASK_GROUP
10503d0407baSopenharmony_ci	bool "Utilization clamping per group of tasks"
10513d0407baSopenharmony_ci	depends on CGROUP_SCHED
10523d0407baSopenharmony_ci	depends on UCLAMP_TASK
10533d0407baSopenharmony_ci	default n
10543d0407baSopenharmony_ci	help
10553d0407baSopenharmony_ci	  This feature enables the scheduler to track the clamped utilization
10563d0407baSopenharmony_ci	  of each CPU based on RUNNABLE tasks currently scheduled on that CPU.
10573d0407baSopenharmony_ci
10583d0407baSopenharmony_ci	  When this option is enabled, the user can specify a min and max
10593d0407baSopenharmony_ci	  CPU bandwidth which is allowed for each single task in a group.
10603d0407baSopenharmony_ci	  The max bandwidth allows to clamp the maximum frequency a task
10613d0407baSopenharmony_ci	  can use, while the min bandwidth allows to define a minimum
10623d0407baSopenharmony_ci	  frequency a task will always use.
10633d0407baSopenharmony_ci
10643d0407baSopenharmony_ci	  When task group based utilization clamping is enabled, an eventually
10653d0407baSopenharmony_ci	  specified task-specific clamp value is constrained by the cgroup
10663d0407baSopenharmony_ci	  specified clamp value. Both minimum and maximum task clamping cannot
10673d0407baSopenharmony_ci	  be bigger than the corresponding clamping defined at task group level.
10683d0407baSopenharmony_ci
10693d0407baSopenharmony_ci	  If in doubt, say N.
10703d0407baSopenharmony_ci
10713d0407baSopenharmony_ciconfig CGROUP_PIDS
10723d0407baSopenharmony_ci	bool "PIDs controller"
10733d0407baSopenharmony_ci	help
10743d0407baSopenharmony_ci	  Provides enforcement of process number limits in the scope of a
10753d0407baSopenharmony_ci	  cgroup. Any attempt to fork more processes than is allowed in the
10763d0407baSopenharmony_ci	  cgroup will fail. PIDs are fundamentally a global resource because it
10773d0407baSopenharmony_ci	  is fairly trivial to reach PID exhaustion before you reach even a
10783d0407baSopenharmony_ci	  conservative kmemcg limit. As a result, it is possible to grind a
10793d0407baSopenharmony_ci	  system to halt without being limited by other cgroup policies. The
10803d0407baSopenharmony_ci	  PIDs controller is designed to stop this from happening.
10813d0407baSopenharmony_ci
10823d0407baSopenharmony_ci	  It should be noted that organisational operations (such as attaching
10833d0407baSopenharmony_ci	  to a cgroup hierarchy) will *not* be blocked by the PIDs controller,
10843d0407baSopenharmony_ci	  since the PIDs limit only affects a process's ability to fork, not to
10853d0407baSopenharmony_ci	  attach to a cgroup.
10863d0407baSopenharmony_ci
10873d0407baSopenharmony_ciconfig CGROUP_RDMA
10883d0407baSopenharmony_ci	bool "RDMA controller"
10893d0407baSopenharmony_ci	help
10903d0407baSopenharmony_ci	  Provides enforcement of RDMA resources defined by IB stack.
10913d0407baSopenharmony_ci	  It is fairly easy for consumers to exhaust RDMA resources, which
10923d0407baSopenharmony_ci	  can result into resource unavailability to other consumers.
10933d0407baSopenharmony_ci	  RDMA controller is designed to stop this from happening.
10943d0407baSopenharmony_ci	  Attaching processes with active RDMA resources to the cgroup
10953d0407baSopenharmony_ci	  hierarchy is allowed even if can cross the hierarchy's limit.
10963d0407baSopenharmony_ci
10973d0407baSopenharmony_ciconfig CGROUP_FREEZER
10983d0407baSopenharmony_ci	bool "Freezer controller"
10993d0407baSopenharmony_ci	help
11003d0407baSopenharmony_ci	  Provides a way to freeze and unfreeze all tasks in a
11013d0407baSopenharmony_ci	  cgroup.
11023d0407baSopenharmony_ci
11033d0407baSopenharmony_ci	  This option affects the ORIGINAL cgroup interface. The cgroup2 memory
11043d0407baSopenharmony_ci	  controller includes important in-kernel memory consumers per default.
11053d0407baSopenharmony_ci
11063d0407baSopenharmony_ci	  If you're using cgroup2, say N.
11073d0407baSopenharmony_ci
11083d0407baSopenharmony_ciconfig CGROUP_HUGETLB
11093d0407baSopenharmony_ci	bool "HugeTLB controller"
11103d0407baSopenharmony_ci	depends on HUGETLB_PAGE
11113d0407baSopenharmony_ci	select PAGE_COUNTER
11123d0407baSopenharmony_ci	default n
11133d0407baSopenharmony_ci	help
11143d0407baSopenharmony_ci	  Provides a cgroup controller for HugeTLB pages.
11153d0407baSopenharmony_ci	  When you enable this, you can put a per cgroup limit on HugeTLB usage.
11163d0407baSopenharmony_ci	  The limit is enforced during page fault. Since HugeTLB doesn't
11173d0407baSopenharmony_ci	  support page reclaim, enforcing the limit at page fault time implies
11183d0407baSopenharmony_ci	  that, the application will get SIGBUS signal if it tries to access
11193d0407baSopenharmony_ci	  HugeTLB pages beyond its limit. This requires the application to know
11203d0407baSopenharmony_ci	  beforehand how much HugeTLB pages it would require for its use. The
11213d0407baSopenharmony_ci	  control group is tracked in the third page lru pointer. This means
11223d0407baSopenharmony_ci	  that we cannot use the controller with huge page less than 3 pages.
11233d0407baSopenharmony_ci
11243d0407baSopenharmony_ciconfig CPUSETS
11253d0407baSopenharmony_ci	bool "Cpuset controller"
11263d0407baSopenharmony_ci	depends on SMP
11273d0407baSopenharmony_ci	help
11283d0407baSopenharmony_ci	  This option will let you create and manage CPUSETs which
11293d0407baSopenharmony_ci	  allow dynamically partitioning a system into sets of CPUs and
11303d0407baSopenharmony_ci	  Memory Nodes and assigning tasks to run only within those sets.
11313d0407baSopenharmony_ci	  This is primarily useful on large SMP or NUMA systems.
11323d0407baSopenharmony_ci
11333d0407baSopenharmony_ci	  Say N if unsure.
11343d0407baSopenharmony_ci
11353d0407baSopenharmony_ciconfig PROC_PID_CPUSET
11363d0407baSopenharmony_ci	bool "Include legacy /proc/<pid>/cpuset file"
11373d0407baSopenharmony_ci	depends on CPUSETS
11383d0407baSopenharmony_ci	default y
11393d0407baSopenharmony_ci
11403d0407baSopenharmony_ciconfig CGROUP_DEVICE
11413d0407baSopenharmony_ci	bool "Device controller"
11423d0407baSopenharmony_ci	help
11433d0407baSopenharmony_ci	  Provides a cgroup controller implementing whitelists for
11443d0407baSopenharmony_ci	  devices which a process in the cgroup can mknod or open.
11453d0407baSopenharmony_ci
11463d0407baSopenharmony_ciconfig CGROUP_CPUACCT
11473d0407baSopenharmony_ci	bool "Simple CPU accounting controller"
11483d0407baSopenharmony_ci	help
11493d0407baSopenharmony_ci	  Provides a simple controller for monitoring the
11503d0407baSopenharmony_ci	  total CPU consumed by the tasks in a cgroup.
11513d0407baSopenharmony_ci
11523d0407baSopenharmony_ciconfig CGROUP_PERF
11533d0407baSopenharmony_ci	bool "Perf controller"
11543d0407baSopenharmony_ci	depends on PERF_EVENTS
11553d0407baSopenharmony_ci	help
11563d0407baSopenharmony_ci	  This option extends the perf per-cpu mode to restrict monitoring
11573d0407baSopenharmony_ci	  to threads which belong to the cgroup specified and run on the
11583d0407baSopenharmony_ci	  designated cpu.  Or this can be used to have cgroup ID in samples
11593d0407baSopenharmony_ci	  so that it can monitor performance events among cgroups.
11603d0407baSopenharmony_ci
11613d0407baSopenharmony_ci	  Say N if unsure.
11623d0407baSopenharmony_ci
11633d0407baSopenharmony_ciconfig CGROUP_BPF
11643d0407baSopenharmony_ci	bool "Support for eBPF programs attached to cgroups"
11653d0407baSopenharmony_ci	depends on BPF_SYSCALL
11663d0407baSopenharmony_ci	select SOCK_CGROUP_DATA
11673d0407baSopenharmony_ci	help
11683d0407baSopenharmony_ci	  Allow attaching eBPF programs to a cgroup using the bpf(2)
11693d0407baSopenharmony_ci	  syscall command BPF_PROG_ATTACH.
11703d0407baSopenharmony_ci
11713d0407baSopenharmony_ci	  In which context these programs are accessed depends on the type
11723d0407baSopenharmony_ci	  of attachment. For instance, programs that are attached using
11733d0407baSopenharmony_ci	  BPF_CGROUP_INET_INGRESS will be executed on the ingress path of
11743d0407baSopenharmony_ci	  inet sockets.
11753d0407baSopenharmony_ci
11763d0407baSopenharmony_ciconfig CGROUP_DEBUG
11773d0407baSopenharmony_ci	bool "Debug controller"
11783d0407baSopenharmony_ci	default n
11793d0407baSopenharmony_ci	depends on DEBUG_KERNEL
11803d0407baSopenharmony_ci	help
11813d0407baSopenharmony_ci	  This option enables a simple controller that exports
11823d0407baSopenharmony_ci	  debugging information about the cgroups framework. This
11833d0407baSopenharmony_ci	  controller is for control cgroup debugging only. Its
11843d0407baSopenharmony_ci	  interfaces are not stable.
11853d0407baSopenharmony_ci
11863d0407baSopenharmony_ci	  Say N.
11873d0407baSopenharmony_ci
11883d0407baSopenharmony_ciconfig SOCK_CGROUP_DATA
11893d0407baSopenharmony_ci	bool
11903d0407baSopenharmony_ci	default n
11913d0407baSopenharmony_ci
11923d0407baSopenharmony_ciendif # CGROUPS
11933d0407baSopenharmony_ci
11943d0407baSopenharmony_cimenuconfig NAMESPACES
11953d0407baSopenharmony_ci	bool "Namespaces support" if EXPERT
11963d0407baSopenharmony_ci	depends on MULTIUSER
11973d0407baSopenharmony_ci	default !EXPERT
11983d0407baSopenharmony_ci	help
11993d0407baSopenharmony_ci	  Provides the way to make tasks work with different objects using
12003d0407baSopenharmony_ci	  the same id. For example same IPC id may refer to different objects
12013d0407baSopenharmony_ci	  or same user id or pid may refer to different tasks when used in
12023d0407baSopenharmony_ci	  different namespaces.
12033d0407baSopenharmony_ci
12043d0407baSopenharmony_ciif NAMESPACES
12053d0407baSopenharmony_ci
12063d0407baSopenharmony_ciconfig UTS_NS
12073d0407baSopenharmony_ci	bool "UTS namespace"
12083d0407baSopenharmony_ci	default y
12093d0407baSopenharmony_ci	help
12103d0407baSopenharmony_ci	  In this namespace tasks see different info provided with the
12113d0407baSopenharmony_ci	  uname() system call
12123d0407baSopenharmony_ci
12133d0407baSopenharmony_ciconfig TIME_NS
12143d0407baSopenharmony_ci	bool "TIME namespace"
12153d0407baSopenharmony_ci	depends on GENERIC_VDSO_TIME_NS
12163d0407baSopenharmony_ci	default y
12173d0407baSopenharmony_ci	help
12183d0407baSopenharmony_ci	  In this namespace boottime and monotonic clocks can be set.
12193d0407baSopenharmony_ci	  The time will keep going with the same pace.
12203d0407baSopenharmony_ci
12213d0407baSopenharmony_ciconfig IPC_NS
12223d0407baSopenharmony_ci	bool "IPC namespace"
12233d0407baSopenharmony_ci	depends on (SYSVIPC || POSIX_MQUEUE)
12243d0407baSopenharmony_ci	default y
12253d0407baSopenharmony_ci	help
12263d0407baSopenharmony_ci	  In this namespace tasks work with IPC ids which correspond to
12273d0407baSopenharmony_ci	  different IPC objects in different namespaces.
12283d0407baSopenharmony_ci
12293d0407baSopenharmony_ciconfig USER_NS
12303d0407baSopenharmony_ci	bool "User namespace"
12313d0407baSopenharmony_ci	default n
12323d0407baSopenharmony_ci	help
12333d0407baSopenharmony_ci	  This allows containers, i.e. vservers, to use user namespaces
12343d0407baSopenharmony_ci	  to provide different user info for different servers.
12353d0407baSopenharmony_ci
12363d0407baSopenharmony_ci	  When user namespaces are enabled in the kernel it is
12373d0407baSopenharmony_ci	  recommended that the MEMCG option also be enabled and that
12383d0407baSopenharmony_ci	  user-space use the memory control groups to limit the amount
12393d0407baSopenharmony_ci	  of memory a memory unprivileged users can use.
12403d0407baSopenharmony_ci
12413d0407baSopenharmony_ci	  If unsure, say N.
12423d0407baSopenharmony_ci
12433d0407baSopenharmony_ciconfig PID_NS
12443d0407baSopenharmony_ci	bool "PID Namespaces"
12453d0407baSopenharmony_ci	default y
12463d0407baSopenharmony_ci	help
12473d0407baSopenharmony_ci	  Support process id namespaces.  This allows having multiple
12483d0407baSopenharmony_ci	  processes with the same pid as long as they are in different
12493d0407baSopenharmony_ci	  pid namespaces.  This is a building block of containers.
12503d0407baSopenharmony_ci
12513d0407baSopenharmony_ciconfig NET_NS
12523d0407baSopenharmony_ci	bool "Network namespace"
12533d0407baSopenharmony_ci	depends on NET
12543d0407baSopenharmony_ci	default y
12553d0407baSopenharmony_ci	help
12563d0407baSopenharmony_ci	  Allow user space to create what appear to be multiple instances
12573d0407baSopenharmony_ci	  of the network stack.
12583d0407baSopenharmony_ci
12593d0407baSopenharmony_ciendif # NAMESPACES
12603d0407baSopenharmony_ci
12613d0407baSopenharmony_ciconfig CHECKPOINT_RESTORE
12623d0407baSopenharmony_ci	bool "Checkpoint/restore support"
12633d0407baSopenharmony_ci	select PROC_CHILDREN
12643d0407baSopenharmony_ci	select KCMP
12653d0407baSopenharmony_ci	default n
12663d0407baSopenharmony_ci	help
12673d0407baSopenharmony_ci	  Enables additional kernel features in a sake of checkpoint/restore.
12683d0407baSopenharmony_ci	  In particular it adds auxiliary prctl codes to setup process text,
12693d0407baSopenharmony_ci	  data and heap segment sizes, and a few additional /proc filesystem
12703d0407baSopenharmony_ci	  entries.
12713d0407baSopenharmony_ci
12723d0407baSopenharmony_ci	  If unsure, say N here.
12733d0407baSopenharmony_ci
12743d0407baSopenharmony_ciconfig SCHED_AUTOGROUP
12753d0407baSopenharmony_ci	bool "Automatic process group scheduling"
12763d0407baSopenharmony_ci	select CGROUPS
12773d0407baSopenharmony_ci	select CGROUP_SCHED
12783d0407baSopenharmony_ci	select FAIR_GROUP_SCHED
12793d0407baSopenharmony_ci	help
12803d0407baSopenharmony_ci	  This option optimizes the scheduler for common desktop workloads by
12813d0407baSopenharmony_ci	  automatically creating and populating task groups.  This separation
12823d0407baSopenharmony_ci	  of workloads isolates aggressive CPU burners (like build jobs) from
12833d0407baSopenharmony_ci	  desktop applications.  Task group autogeneration is currently based
12843d0407baSopenharmony_ci	  upon task session.
12853d0407baSopenharmony_ci
12863d0407baSopenharmony_ciconfig SYSFS_DEPRECATED
12873d0407baSopenharmony_ci	bool "Enable deprecated sysfs features to support old userspace tools"
12883d0407baSopenharmony_ci	depends on SYSFS
12893d0407baSopenharmony_ci	default n
12903d0407baSopenharmony_ci	help
12913d0407baSopenharmony_ci	  This option adds code that switches the layout of the "block" class
12923d0407baSopenharmony_ci	  devices, to not show up in /sys/class/block/, but only in
12933d0407baSopenharmony_ci	  /sys/block/.
12943d0407baSopenharmony_ci
12953d0407baSopenharmony_ci	  This switch is only active when the sysfs.deprecated=1 boot option is
12963d0407baSopenharmony_ci	  passed or the SYSFS_DEPRECATED_V2 option is set.
12973d0407baSopenharmony_ci
12983d0407baSopenharmony_ci	  This option allows new kernels to run on old distributions and tools,
12993d0407baSopenharmony_ci	  which might get confused by /sys/class/block/. Since 2007/2008 all
13003d0407baSopenharmony_ci	  major distributions and tools handle this just fine.
13013d0407baSopenharmony_ci
13023d0407baSopenharmony_ci	  Recent distributions and userspace tools after 2009/2010 depend on
13033d0407baSopenharmony_ci	  the existence of /sys/class/block/, and will not work with this
13043d0407baSopenharmony_ci	  option enabled.
13053d0407baSopenharmony_ci
13063d0407baSopenharmony_ci	  Only if you are using a new kernel on an old distribution, you might
13073d0407baSopenharmony_ci	  need to say Y here.
13083d0407baSopenharmony_ci
13093d0407baSopenharmony_ciconfig SYSFS_DEPRECATED_V2
13103d0407baSopenharmony_ci	bool "Enable deprecated sysfs features by default"
13113d0407baSopenharmony_ci	default n
13123d0407baSopenharmony_ci	depends on SYSFS
13133d0407baSopenharmony_ci	depends on SYSFS_DEPRECATED
13143d0407baSopenharmony_ci	help
13153d0407baSopenharmony_ci	  Enable deprecated sysfs by default.
13163d0407baSopenharmony_ci
13173d0407baSopenharmony_ci	  See the CONFIG_SYSFS_DEPRECATED option for more details about this
13183d0407baSopenharmony_ci	  option.
13193d0407baSopenharmony_ci
13203d0407baSopenharmony_ci	  Only if you are using a new kernel on an old distribution, you might
13213d0407baSopenharmony_ci	  need to say Y here. Even then, odds are you would not need it
13223d0407baSopenharmony_ci	  enabled, you can always pass the boot option if absolutely necessary.
13233d0407baSopenharmony_ci
13243d0407baSopenharmony_ciconfig RELAY
13253d0407baSopenharmony_ci	bool "Kernel->user space relay support (formerly relayfs)"
13263d0407baSopenharmony_ci	select IRQ_WORK
13273d0407baSopenharmony_ci	help
13283d0407baSopenharmony_ci	  This option enables support for relay interface support in
13293d0407baSopenharmony_ci	  certain file systems (such as debugfs).
13303d0407baSopenharmony_ci	  It is designed to provide an efficient mechanism for tools and
13313d0407baSopenharmony_ci	  facilities to relay large amounts of data from kernel space to
13323d0407baSopenharmony_ci	  user space.
13333d0407baSopenharmony_ci
13343d0407baSopenharmony_ci	  If unsure, say N.
13353d0407baSopenharmony_ci
13363d0407baSopenharmony_ciconfig BLK_DEV_INITRD
13373d0407baSopenharmony_ci	bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
13383d0407baSopenharmony_ci	help
13393d0407baSopenharmony_ci	  The initial RAM filesystem is a ramfs which is loaded by the
13403d0407baSopenharmony_ci	  boot loader (loadlin or lilo) and that is mounted as root
13413d0407baSopenharmony_ci	  before the normal boot procedure. It is typically used to
13423d0407baSopenharmony_ci	  load modules needed to mount the "real" root file system,
13433d0407baSopenharmony_ci	  etc. See <file:Documentation/admin-guide/initrd.rst> for details.
13443d0407baSopenharmony_ci
13453d0407baSopenharmony_ci	  If RAM disk support (BLK_DEV_RAM) is also included, this
13463d0407baSopenharmony_ci	  also enables initial RAM disk (initrd) support and adds
13473d0407baSopenharmony_ci	  15 Kbytes (more on some other architectures) to the kernel size.
13483d0407baSopenharmony_ci
13493d0407baSopenharmony_ci	  If unsure say Y.
13503d0407baSopenharmony_ci
13513d0407baSopenharmony_ciif BLK_DEV_INITRD
13523d0407baSopenharmony_ci
13533d0407baSopenharmony_cisource "usr/Kconfig"
13543d0407baSopenharmony_ci
13553d0407baSopenharmony_ciconfig INITRD_ASYNC
13563d0407baSopenharmony_ci	bool "Initrd async"
13573d0407baSopenharmony_ci	depends on NO_GKI
13583d0407baSopenharmony_ci	help
13593d0407baSopenharmony_ci	  Init ramdisk async, can reduce kernel init time.
13603d0407baSopenharmony_ci
13613d0407baSopenharmony_ciendif
13623d0407baSopenharmony_ci
13633d0407baSopenharmony_ciconfig BOOT_CONFIG
13643d0407baSopenharmony_ci	bool "Boot config support"
13653d0407baSopenharmony_ci	select BLK_DEV_INITRD
13663d0407baSopenharmony_ci	help
13673d0407baSopenharmony_ci	  Extra boot config allows system admin to pass a config file as
13683d0407baSopenharmony_ci	  complemental extension of kernel cmdline when booting.
13693d0407baSopenharmony_ci	  The boot config file must be attached at the end of initramfs
13703d0407baSopenharmony_ci	  with checksum, size and magic word.
13713d0407baSopenharmony_ci	  See <file:Documentation/admin-guide/bootconfig.rst> for details.
13723d0407baSopenharmony_ci
13733d0407baSopenharmony_ci	  If unsure, say Y.
13743d0407baSopenharmony_ci
13753d0407baSopenharmony_cichoice
13763d0407baSopenharmony_ci	prompt "Compiler optimization level"
13773d0407baSopenharmony_ci	default CC_OPTIMIZE_FOR_PERFORMANCE
13783d0407baSopenharmony_ci
13793d0407baSopenharmony_ciconfig CC_OPTIMIZE_FOR_PERFORMANCE
13803d0407baSopenharmony_ci	bool "Optimize for performance (-O2)"
13813d0407baSopenharmony_ci	help
13823d0407baSopenharmony_ci	  This is the default optimization level for the kernel, building
13833d0407baSopenharmony_ci	  with the "-O2" compiler flag for best performance and most
13843d0407baSopenharmony_ci	  helpful compile-time warnings.
13853d0407baSopenharmony_ci
13863d0407baSopenharmony_ciconfig CC_OPTIMIZE_FOR_PERFORMANCE_O3
13873d0407baSopenharmony_ci	bool "Optimize more for performance (-O3)"
13883d0407baSopenharmony_ci	depends on ARC
13893d0407baSopenharmony_ci	help
13903d0407baSopenharmony_ci	  Choosing this option will pass "-O3" to your compiler to optimize
13913d0407baSopenharmony_ci	  the kernel yet more for performance.
13923d0407baSopenharmony_ci
13933d0407baSopenharmony_ciconfig CC_OPTIMIZE_FOR_SIZE
13943d0407baSopenharmony_ci	bool "Optimize for size (-Os)"
13953d0407baSopenharmony_ci	help
13963d0407baSopenharmony_ci	  Choosing this option will pass "-Os" to your compiler resulting
13973d0407baSopenharmony_ci	  in a smaller kernel.
13983d0407baSopenharmony_ci
13993d0407baSopenharmony_ciendchoice
14003d0407baSopenharmony_ci
14013d0407baSopenharmony_ciconfig HAVE_LD_DEAD_CODE_DATA_ELIMINATION
14023d0407baSopenharmony_ci	bool
14033d0407baSopenharmony_ci	help
14043d0407baSopenharmony_ci	  This requires that the arch annotates or otherwise protects
14053d0407baSopenharmony_ci	  its external entry points from being discarded. Linker scripts
14063d0407baSopenharmony_ci	  must also merge .text.*, .data.*, and .bss.* correctly into
14073d0407baSopenharmony_ci	  output sections. Care must be taken not to pull in unrelated
14083d0407baSopenharmony_ci	  sections (e.g., '.text.init'). Typically '.' in section names
14093d0407baSopenharmony_ci	  is used to distinguish them from label names / C identifiers.
14103d0407baSopenharmony_ci
14113d0407baSopenharmony_ciconfig LD_DEAD_CODE_DATA_ELIMINATION
14123d0407baSopenharmony_ci	bool "Dead code and data elimination (EXPERIMENTAL)"
14133d0407baSopenharmony_ci	depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION
14143d0407baSopenharmony_ci	depends on EXPERT
14153d0407baSopenharmony_ci	depends on $(cc-option,-ffunction-sections -fdata-sections)
14163d0407baSopenharmony_ci	depends on $(ld-option,--gc-sections)
14173d0407baSopenharmony_ci	help
14183d0407baSopenharmony_ci	  Enable this if you want to do dead code and data elimination with
14193d0407baSopenharmony_ci	  the linker by compiling with -ffunction-sections -fdata-sections,
14203d0407baSopenharmony_ci	  and linking with --gc-sections.
14213d0407baSopenharmony_ci
14223d0407baSopenharmony_ci	  This can reduce on disk and in-memory size of the kernel
14233d0407baSopenharmony_ci	  code and static data, particularly for small configs and
14243d0407baSopenharmony_ci	  on small systems. This has the possibility of introducing
14253d0407baSopenharmony_ci	  silently broken kernel if the required annotations are not
14263d0407baSopenharmony_ci	  present. This option is not well tested yet, so use at your
14273d0407baSopenharmony_ci	  own risk.
14283d0407baSopenharmony_ci
14293d0407baSopenharmony_ciconfig LD_ORPHAN_WARN
14303d0407baSopenharmony_ci	def_bool y
14313d0407baSopenharmony_ci	depends on ARCH_WANT_LD_ORPHAN_WARN
14323d0407baSopenharmony_ci	depends on !LD_IS_LLD || LLD_VERSION >= 110000
14333d0407baSopenharmony_ci	depends on $(ld-option,--orphan-handling=warn)
14343d0407baSopenharmony_ci
14353d0407baSopenharmony_ciconfig SYSCTL
14363d0407baSopenharmony_ci	bool
14373d0407baSopenharmony_ci
14383d0407baSopenharmony_ciconfig HAVE_UID16
14393d0407baSopenharmony_ci	bool
14403d0407baSopenharmony_ci
14413d0407baSopenharmony_ciconfig SYSCTL_EXCEPTION_TRACE
14423d0407baSopenharmony_ci	bool
14433d0407baSopenharmony_ci	help
14443d0407baSopenharmony_ci	  Enable support for /proc/sys/debug/exception-trace.
14453d0407baSopenharmony_ci
14463d0407baSopenharmony_ciconfig SYSCTL_ARCH_UNALIGN_NO_WARN
14473d0407baSopenharmony_ci	bool
14483d0407baSopenharmony_ci	help
14493d0407baSopenharmony_ci	  Enable support for /proc/sys/kernel/ignore-unaligned-usertrap
14503d0407baSopenharmony_ci	  Allows arch to define/use @no_unaligned_warning to possibly warn
14513d0407baSopenharmony_ci	  about unaligned access emulation going on under the hood.
14523d0407baSopenharmony_ci
14533d0407baSopenharmony_ciconfig SYSCTL_ARCH_UNALIGN_ALLOW
14543d0407baSopenharmony_ci	bool
14553d0407baSopenharmony_ci	help
14563d0407baSopenharmony_ci	  Enable support for /proc/sys/kernel/unaligned-trap
14573d0407baSopenharmony_ci	  Allows arches to define/use @unaligned_enabled to runtime toggle
14583d0407baSopenharmony_ci	  the unaligned access emulation.
14593d0407baSopenharmony_ci	  see arch/parisc/kernel/unaligned.c for reference
14603d0407baSopenharmony_ci
14613d0407baSopenharmony_ciconfig HAVE_PCSPKR_PLATFORM
14623d0407baSopenharmony_ci	bool
14633d0407baSopenharmony_ci
14643d0407baSopenharmony_ci# interpreter that classic socket filters depend on
14653d0407baSopenharmony_ciconfig BPF
14663d0407baSopenharmony_ci	bool
14673d0407baSopenharmony_ci
14683d0407baSopenharmony_cimenuconfig EXPERT
14693d0407baSopenharmony_ci	bool "Configure standard kernel features (expert users)"
14703d0407baSopenharmony_ci	# Unhide debug options, to make the on-by-default options visible
14713d0407baSopenharmony_ci	select DEBUG_KERNEL
14723d0407baSopenharmony_ci	help
14733d0407baSopenharmony_ci	  This option allows certain base kernel options and settings
14743d0407baSopenharmony_ci	  to be disabled or tweaked. This is for specialized
14753d0407baSopenharmony_ci	  environments which can tolerate a "non-standard" kernel.
14763d0407baSopenharmony_ci	  Only use this if you really know what you are doing.
14773d0407baSopenharmony_ci
14783d0407baSopenharmony_ciconfig UID16
14793d0407baSopenharmony_ci	bool "Enable 16-bit UID system calls" if EXPERT
14803d0407baSopenharmony_ci	depends on HAVE_UID16 && MULTIUSER
14813d0407baSopenharmony_ci	default y
14823d0407baSopenharmony_ci	help
14833d0407baSopenharmony_ci	  This enables the legacy 16-bit UID syscall wrappers.
14843d0407baSopenharmony_ci
14853d0407baSopenharmony_ciconfig MULTIUSER
14863d0407baSopenharmony_ci	bool "Multiple users, groups and capabilities support" if EXPERT
14873d0407baSopenharmony_ci	default y
14883d0407baSopenharmony_ci	help
14893d0407baSopenharmony_ci	  This option enables support for non-root users, groups and
14903d0407baSopenharmony_ci	  capabilities.
14913d0407baSopenharmony_ci
14923d0407baSopenharmony_ci	  If you say N here, all processes will run with UID 0, GID 0, and all
14933d0407baSopenharmony_ci	  possible capabilities.  Saying N here also compiles out support for
14943d0407baSopenharmony_ci	  system calls related to UIDs, GIDs, and capabilities, such as setuid,
14953d0407baSopenharmony_ci	  setgid, and capset.
14963d0407baSopenharmony_ci
14973d0407baSopenharmony_ci	  If unsure, say Y here.
14983d0407baSopenharmony_ci
14993d0407baSopenharmony_ciconfig SGETMASK_SYSCALL
15003d0407baSopenharmony_ci	bool "sgetmask/ssetmask syscalls support" if EXPERT
15013d0407baSopenharmony_ci	def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH
15023d0407baSopenharmony_ci	help
15033d0407baSopenharmony_ci	  sys_sgetmask and sys_ssetmask are obsolete system calls
15043d0407baSopenharmony_ci	  no longer supported in libc but still enabled by default in some
15053d0407baSopenharmony_ci	  architectures.
15063d0407baSopenharmony_ci
15073d0407baSopenharmony_ci	  If unsure, leave the default option here.
15083d0407baSopenharmony_ci
15093d0407baSopenharmony_ciconfig SYSFS_SYSCALL
15103d0407baSopenharmony_ci	bool "Sysfs syscall support" if EXPERT
15113d0407baSopenharmony_ci	default y
15123d0407baSopenharmony_ci	help
15133d0407baSopenharmony_ci	  sys_sysfs is an obsolete system call no longer supported in libc.
15143d0407baSopenharmony_ci	  Note that disabling this option is more secure but might break
15153d0407baSopenharmony_ci	  compatibility with some systems.
15163d0407baSopenharmony_ci
15173d0407baSopenharmony_ci	  If unsure say Y here.
15183d0407baSopenharmony_ci
15193d0407baSopenharmony_ciconfig FHANDLE
15203d0407baSopenharmony_ci	bool "open by fhandle syscalls" if EXPERT
15213d0407baSopenharmony_ci	select EXPORTFS
15223d0407baSopenharmony_ci	default y
15233d0407baSopenharmony_ci	help
15243d0407baSopenharmony_ci	  If you say Y here, a user level program will be able to map
15253d0407baSopenharmony_ci	  file names to handle and then later use the handle for
15263d0407baSopenharmony_ci	  different file system operations. This is useful in implementing
15273d0407baSopenharmony_ci	  userspace file servers, which now track files using handles instead
15283d0407baSopenharmony_ci	  of names. The handle would remain the same even if file names
15293d0407baSopenharmony_ci	  get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
15303d0407baSopenharmony_ci	  syscalls.
15313d0407baSopenharmony_ci
15323d0407baSopenharmony_ciconfig POSIX_TIMERS
15333d0407baSopenharmony_ci	bool "Posix Clocks & timers" if EXPERT
15343d0407baSopenharmony_ci	default y
15353d0407baSopenharmony_ci	help
15363d0407baSopenharmony_ci	  This includes native support for POSIX timers to the kernel.
15373d0407baSopenharmony_ci	  Some embedded systems have no use for them and therefore they
15383d0407baSopenharmony_ci	  can be configured out to reduce the size of the kernel image.
15393d0407baSopenharmony_ci
15403d0407baSopenharmony_ci	  When this option is disabled, the following syscalls won't be
15413d0407baSopenharmony_ci	  available: timer_create, timer_gettime: timer_getoverrun,
15423d0407baSopenharmony_ci	  timer_settime, timer_delete, clock_adjtime, getitimer,
15433d0407baSopenharmony_ci	  setitimer, alarm. Furthermore, the clock_settime, clock_gettime,
15443d0407baSopenharmony_ci	  clock_getres and clock_nanosleep syscalls will be limited to
15453d0407baSopenharmony_ci	  CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only.
15463d0407baSopenharmony_ci
15473d0407baSopenharmony_ci	  If unsure say y.
15483d0407baSopenharmony_ci
15493d0407baSopenharmony_ciconfig PRINTK
15503d0407baSopenharmony_ci	default y
15513d0407baSopenharmony_ci	bool "Enable support for printk" if EXPERT
15523d0407baSopenharmony_ci	select IRQ_WORK
15533d0407baSopenharmony_ci	help
15543d0407baSopenharmony_ci	  This option enables normal printk support. Removing it
15553d0407baSopenharmony_ci	  eliminates most of the message strings from the kernel image
15563d0407baSopenharmony_ci	  and makes the kernel more or less silent. As this makes it
15573d0407baSopenharmony_ci	  very difficult to diagnose system problems, saying N here is
15583d0407baSopenharmony_ci	  strongly discouraged.
15593d0407baSopenharmony_ci
15603d0407baSopenharmony_ciconfig PRINTK_NMI
15613d0407baSopenharmony_ci	def_bool y
15623d0407baSopenharmony_ci	depends on PRINTK
15633d0407baSopenharmony_ci	depends on HAVE_NMI
15643d0407baSopenharmony_ci
15653d0407baSopenharmony_ciconfig BUG
15663d0407baSopenharmony_ci	bool "BUG() support" if EXPERT
15673d0407baSopenharmony_ci	default y
15683d0407baSopenharmony_ci	help
15693d0407baSopenharmony_ci	  Disabling this option eliminates support for BUG and WARN, reducing
15703d0407baSopenharmony_ci	  the size of your kernel image and potentially quietly ignoring
15713d0407baSopenharmony_ci	  numerous fatal conditions. You should only consider disabling this
15723d0407baSopenharmony_ci	  option for embedded systems with no facilities for reporting errors.
15733d0407baSopenharmony_ci	  Just say Y.
15743d0407baSopenharmony_ci
15753d0407baSopenharmony_ciconfig ELF_CORE
15763d0407baSopenharmony_ci	depends on COREDUMP
15773d0407baSopenharmony_ci	default y
15783d0407baSopenharmony_ci	bool "Enable ELF core dumps" if EXPERT
15793d0407baSopenharmony_ci	help
15803d0407baSopenharmony_ci	  Enable support for generating core dumps. Disabling saves about 4k.
15813d0407baSopenharmony_ci
15823d0407baSopenharmony_ci
15833d0407baSopenharmony_ciconfig PCSPKR_PLATFORM
15843d0407baSopenharmony_ci	bool "Enable PC-Speaker support" if EXPERT
15853d0407baSopenharmony_ci	depends on HAVE_PCSPKR_PLATFORM
15863d0407baSopenharmony_ci	select I8253_LOCK
15873d0407baSopenharmony_ci	default y
15883d0407baSopenharmony_ci	help
15893d0407baSopenharmony_ci	  This option allows to disable the internal PC-Speaker
15903d0407baSopenharmony_ci	  support, saving some memory.
15913d0407baSopenharmony_ci
15923d0407baSopenharmony_ciconfig BASE_FULL
15933d0407baSopenharmony_ci	default y
15943d0407baSopenharmony_ci	bool "Enable full-sized data structures for core" if EXPERT
15953d0407baSopenharmony_ci	help
15963d0407baSopenharmony_ci	  Disabling this option reduces the size of miscellaneous core
15973d0407baSopenharmony_ci	  kernel data structures. This saves memory on small machines,
15983d0407baSopenharmony_ci	  but may reduce performance.
15993d0407baSopenharmony_ci
16003d0407baSopenharmony_ciconfig FUTEX
16013d0407baSopenharmony_ci	bool "Enable futex support" if EXPERT
16023d0407baSopenharmony_ci	default y
16033d0407baSopenharmony_ci	imply RT_MUTEXES
16043d0407baSopenharmony_ci	help
16053d0407baSopenharmony_ci	  Disabling this option will cause the kernel to be built without
16063d0407baSopenharmony_ci	  support for "fast userspace mutexes".  The resulting kernel may not
16073d0407baSopenharmony_ci	  run glibc-based applications correctly.
16083d0407baSopenharmony_ci
16093d0407baSopenharmony_ciconfig FUTEX_PI
16103d0407baSopenharmony_ci	bool
16113d0407baSopenharmony_ci	depends on FUTEX && RT_MUTEXES
16123d0407baSopenharmony_ci	default y
16133d0407baSopenharmony_ci
16143d0407baSopenharmony_ciconfig HAVE_FUTEX_CMPXCHG
16153d0407baSopenharmony_ci	bool
16163d0407baSopenharmony_ci	depends on FUTEX
16173d0407baSopenharmony_ci	help
16183d0407baSopenharmony_ci	  Architectures should select this if futex_atomic_cmpxchg_inatomic()
16193d0407baSopenharmony_ci	  is implemented and always working. This removes a couple of runtime
16203d0407baSopenharmony_ci	  checks.
16213d0407baSopenharmony_ci
16223d0407baSopenharmony_ciconfig EPOLL
16233d0407baSopenharmony_ci	bool "Enable eventpoll support" if EXPERT
16243d0407baSopenharmony_ci	default y
16253d0407baSopenharmony_ci	help
16263d0407baSopenharmony_ci	  Disabling this option will cause the kernel to be built without
16273d0407baSopenharmony_ci	  support for epoll family of system calls.
16283d0407baSopenharmony_ci
16293d0407baSopenharmony_ciconfig SIGNALFD
16303d0407baSopenharmony_ci	bool "Enable signalfd() system call" if EXPERT
16313d0407baSopenharmony_ci	default y
16323d0407baSopenharmony_ci	help
16333d0407baSopenharmony_ci	  Enable the signalfd() system call that allows to receive signals
16343d0407baSopenharmony_ci	  on a file descriptor.
16353d0407baSopenharmony_ci
16363d0407baSopenharmony_ci	  If unsure, say Y.
16373d0407baSopenharmony_ci
16383d0407baSopenharmony_ciconfig TIMERFD
16393d0407baSopenharmony_ci	bool "Enable timerfd() system call" if EXPERT
16403d0407baSopenharmony_ci	default y
16413d0407baSopenharmony_ci	help
16423d0407baSopenharmony_ci	  Enable the timerfd() system call that allows to receive timer
16433d0407baSopenharmony_ci	  events on a file descriptor.
16443d0407baSopenharmony_ci
16453d0407baSopenharmony_ci	  If unsure, say Y.
16463d0407baSopenharmony_ci
16473d0407baSopenharmony_ciconfig EVENTFD
16483d0407baSopenharmony_ci	bool "Enable eventfd() system call" if EXPERT
16493d0407baSopenharmony_ci	default y
16503d0407baSopenharmony_ci	help
16513d0407baSopenharmony_ci	  Enable the eventfd() system call that allows to receive both
16523d0407baSopenharmony_ci	  kernel notification (ie. KAIO) or userspace notifications.
16533d0407baSopenharmony_ci
16543d0407baSopenharmony_ci	  If unsure, say Y.
16553d0407baSopenharmony_ci
16563d0407baSopenharmony_ciconfig SHMEM
16573d0407baSopenharmony_ci	bool "Use full shmem filesystem" if EXPERT
16583d0407baSopenharmony_ci	default y
16593d0407baSopenharmony_ci	depends on MMU
16603d0407baSopenharmony_ci	help
16613d0407baSopenharmony_ci	  The shmem is an internal filesystem used to manage shared memory.
16623d0407baSopenharmony_ci	  It is backed by swap and manages resource limits. It is also exported
16633d0407baSopenharmony_ci	  to userspace as tmpfs if TMPFS is enabled. Disabling this
16643d0407baSopenharmony_ci	  option replaces shmem and tmpfs with the much simpler ramfs code,
16653d0407baSopenharmony_ci	  which may be appropriate on small systems without swap.
16663d0407baSopenharmony_ci
16673d0407baSopenharmony_ciconfig AIO
16683d0407baSopenharmony_ci	bool "Enable AIO support" if EXPERT
16693d0407baSopenharmony_ci	default y
16703d0407baSopenharmony_ci	help
16713d0407baSopenharmony_ci	  This option enables POSIX asynchronous I/O which may by used
16723d0407baSopenharmony_ci	  by some high performance threaded applications. Disabling
16733d0407baSopenharmony_ci	  this option saves about 7k.
16743d0407baSopenharmony_ci
16753d0407baSopenharmony_ciconfig IO_URING
16763d0407baSopenharmony_ci	bool "Enable IO uring support" if EXPERT
16773d0407baSopenharmony_ci	select IO_WQ
16783d0407baSopenharmony_ci	default y
16793d0407baSopenharmony_ci	help
16803d0407baSopenharmony_ci	  This option enables support for the io_uring interface, enabling
16813d0407baSopenharmony_ci	  applications to submit and complete IO through submission and
16823d0407baSopenharmony_ci	  completion rings that are shared between the kernel and application.
16833d0407baSopenharmony_ci
16843d0407baSopenharmony_ciconfig ADVISE_SYSCALLS
16853d0407baSopenharmony_ci	bool "Enable madvise/fadvise syscalls" if EXPERT
16863d0407baSopenharmony_ci	default y
16873d0407baSopenharmony_ci	help
16883d0407baSopenharmony_ci	  This option enables the madvise and fadvise syscalls, used by
16893d0407baSopenharmony_ci	  applications to advise the kernel about their future memory or file
16903d0407baSopenharmony_ci	  usage, improving performance. If building an embedded system where no
16913d0407baSopenharmony_ci	  applications use these syscalls, you can disable this option to save
16923d0407baSopenharmony_ci	  space.
16933d0407baSopenharmony_ci
16943d0407baSopenharmony_ciconfig HAVE_ARCH_USERFAULTFD_WP
16953d0407baSopenharmony_ci	bool
16963d0407baSopenharmony_ci	help
16973d0407baSopenharmony_ci	  Arch has userfaultfd write protection support
16983d0407baSopenharmony_ci
16993d0407baSopenharmony_ciconfig MEMBARRIER
17003d0407baSopenharmony_ci	bool "Enable membarrier() system call" if EXPERT
17013d0407baSopenharmony_ci	default y
17023d0407baSopenharmony_ci	help
17033d0407baSopenharmony_ci	  Enable the membarrier() system call that allows issuing memory
17043d0407baSopenharmony_ci	  barriers across all running threads, which can be used to distribute
17053d0407baSopenharmony_ci	  the cost of user-space memory barriers asymmetrically by transforming
17063d0407baSopenharmony_ci	  pairs of memory barriers into pairs consisting of membarrier() and a
17073d0407baSopenharmony_ci	  compiler barrier.
17083d0407baSopenharmony_ci
17093d0407baSopenharmony_ci	  If unsure, say Y.
17103d0407baSopenharmony_ci
17113d0407baSopenharmony_ciconfig KALLSYMS
17123d0407baSopenharmony_ci	bool "Load all symbols for debugging/ksymoops" if EXPERT
17133d0407baSopenharmony_ci	default y
17143d0407baSopenharmony_ci	help
17153d0407baSopenharmony_ci	  Say Y here to let the kernel print out symbolic crash information and
17163d0407baSopenharmony_ci	  symbolic stack backtraces. This increases the size of the kernel
17173d0407baSopenharmony_ci	  somewhat, as all symbols have to be loaded into the kernel image.
17183d0407baSopenharmony_ci
17193d0407baSopenharmony_ciconfig KALLSYMS_ALL
17203d0407baSopenharmony_ci	bool "Include all symbols in kallsyms"
17213d0407baSopenharmony_ci	depends on DEBUG_KERNEL && KALLSYMS
17223d0407baSopenharmony_ci	help
17233d0407baSopenharmony_ci	  Normally kallsyms only contains the symbols of functions for nicer
17243d0407baSopenharmony_ci	  OOPS messages and backtraces (i.e., symbols from the text and inittext
17253d0407baSopenharmony_ci	  sections). This is sufficient for most cases. And only in very rare
17263d0407baSopenharmony_ci	  cases (e.g., when a debugger is used) all symbols are required (e.g.,
17273d0407baSopenharmony_ci	  names of variables from the data sections, etc).
17283d0407baSopenharmony_ci
17293d0407baSopenharmony_ci	  This option makes sure that all symbols are loaded into the kernel
17303d0407baSopenharmony_ci	  image (i.e., symbols from all sections) in cost of increased kernel
17313d0407baSopenharmony_ci	  size (depending on the kernel configuration, it may be 300KiB or
17323d0407baSopenharmony_ci	  something like this).
17333d0407baSopenharmony_ci
17343d0407baSopenharmony_ci	  Say N unless you really need all symbols.
17353d0407baSopenharmony_ci
17363d0407baSopenharmony_ciconfig KALLSYMS_ABSOLUTE_PERCPU
17373d0407baSopenharmony_ci	bool
17383d0407baSopenharmony_ci	depends on KALLSYMS
17393d0407baSopenharmony_ci	default X86_64 && SMP
17403d0407baSopenharmony_ci
17413d0407baSopenharmony_ciconfig KALLSYMS_BASE_RELATIVE
17423d0407baSopenharmony_ci	bool
17433d0407baSopenharmony_ci	depends on KALLSYMS
17443d0407baSopenharmony_ci	default !IA64
17453d0407baSopenharmony_ci	help
17463d0407baSopenharmony_ci	  Instead of emitting them as absolute values in the native word size,
17473d0407baSopenharmony_ci	  emit the symbol references in the kallsyms table as 32-bit entries,
17483d0407baSopenharmony_ci	  each containing a relative value in the range [base, base + U32_MAX]
17493d0407baSopenharmony_ci	  or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either
17503d0407baSopenharmony_ci	  an absolute value in the range [0, S32_MAX] or a relative value in the
17513d0407baSopenharmony_ci	  range [base, base + S32_MAX], where base is the lowest relative symbol
17523d0407baSopenharmony_ci	  address encountered in the image.
17533d0407baSopenharmony_ci
17543d0407baSopenharmony_ci	  On 64-bit builds, this reduces the size of the address table by 50%,
17553d0407baSopenharmony_ci	  but more importantly, it results in entries whose values are build
17563d0407baSopenharmony_ci	  time constants, and no relocation pass is required at runtime to fix
17573d0407baSopenharmony_ci	  up the entries based on the runtime load address of the kernel.
17583d0407baSopenharmony_ci
17593d0407baSopenharmony_ci# end of the "standard kernel features (expert users)" menu
17603d0407baSopenharmony_ci
17613d0407baSopenharmony_ci# syscall, maps, verifier
17623d0407baSopenharmony_ci
17633d0407baSopenharmony_ciconfig BPF_LSM
17643d0407baSopenharmony_ci	bool "LSM Instrumentation with BPF"
17653d0407baSopenharmony_ci	depends on BPF_EVENTS
17663d0407baSopenharmony_ci	depends on BPF_SYSCALL
17673d0407baSopenharmony_ci	depends on SECURITY
17683d0407baSopenharmony_ci	depends on BPF_JIT
17693d0407baSopenharmony_ci	help
17703d0407baSopenharmony_ci	  Enables instrumentation of the security hooks with eBPF programs for
17713d0407baSopenharmony_ci	  implementing dynamic MAC and Audit Policies.
17723d0407baSopenharmony_ci
17733d0407baSopenharmony_ci	  If you are unsure how to answer this question, answer N.
17743d0407baSopenharmony_ci
17753d0407baSopenharmony_ciconfig BPF_SYSCALL
17763d0407baSopenharmony_ci	bool "Enable bpf() system call"
17773d0407baSopenharmony_ci	select BPF
17783d0407baSopenharmony_ci	select IRQ_WORK
17793d0407baSopenharmony_ci	select TASKS_TRACE_RCU
17803d0407baSopenharmony_ci	default n
17813d0407baSopenharmony_ci	help
17823d0407baSopenharmony_ci	  Enable the bpf() system call that allows to manipulate eBPF
17833d0407baSopenharmony_ci	  programs and maps via file descriptors.
17843d0407baSopenharmony_ci
17853d0407baSopenharmony_ciconfig ARCH_WANT_DEFAULT_BPF_JIT
17863d0407baSopenharmony_ci	bool
17873d0407baSopenharmony_ci
17883d0407baSopenharmony_ciconfig BPF_JIT_ALWAYS_ON
17893d0407baSopenharmony_ci	bool "Permanently enable BPF JIT and remove BPF interpreter"
17903d0407baSopenharmony_ci	depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT
17913d0407baSopenharmony_ci	help
17923d0407baSopenharmony_ci	  Enables BPF JIT and removes BPF interpreter to avoid
17933d0407baSopenharmony_ci	  speculative execution of BPF instructions by the interpreter
17943d0407baSopenharmony_ci
17953d0407baSopenharmony_ciconfig BPF_JIT_DEFAULT_ON
17963d0407baSopenharmony_ci	def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON
17973d0407baSopenharmony_ci	depends on HAVE_EBPF_JIT && BPF_JIT
17983d0407baSopenharmony_ci
17993d0407baSopenharmony_ciconfig BPF_UNPRIV_DEFAULT_OFF
18003d0407baSopenharmony_ci	bool "Disable unprivileged BPF by default"
18013d0407baSopenharmony_ci	depends on BPF_SYSCALL
18023d0407baSopenharmony_ci	help
18033d0407baSopenharmony_ci	  Disables unprivileged BPF by default by setting the corresponding
18043d0407baSopenharmony_ci	  /proc/sys/kernel/unprivileged_bpf_disabled knob to 2. An admin can
18053d0407baSopenharmony_ci	  still reenable it by setting it to 0 later on, or permanently
18063d0407baSopenharmony_ci	  disable it by setting it to 1 (from which no other transition to
18073d0407baSopenharmony_ci	  0 is possible anymore).
18083d0407baSopenharmony_ci
18093d0407baSopenharmony_cisource "kernel/bpf/preload/Kconfig"
18103d0407baSopenharmony_ci
18113d0407baSopenharmony_ciconfig USERFAULTFD
18123d0407baSopenharmony_ci	bool "Enable userfaultfd() system call"
18133d0407baSopenharmony_ci	depends on MMU
18143d0407baSopenharmony_ci	help
18153d0407baSopenharmony_ci	  Enable the userfaultfd() system call that allows to intercept and
18163d0407baSopenharmony_ci	  handle page faults in userland.
18173d0407baSopenharmony_ci
18183d0407baSopenharmony_ciconfig ARCH_HAS_MEMBARRIER_CALLBACKS
18193d0407baSopenharmony_ci	bool
18203d0407baSopenharmony_ci
18213d0407baSopenharmony_ciconfig ARCH_HAS_MEMBARRIER_SYNC_CORE
18223d0407baSopenharmony_ci	bool
18233d0407baSopenharmony_ci
18243d0407baSopenharmony_ciconfig KCMP
18253d0407baSopenharmony_ci	bool "Enable kcmp() system call" if EXPERT
18263d0407baSopenharmony_ci	help
18273d0407baSopenharmony_ci	  Enable the kernel resource comparison system call. It provides
18283d0407baSopenharmony_ci	  user-space with the ability to compare two processes to see if they
18293d0407baSopenharmony_ci	  share a common resource, such as a file descriptor or even virtual
18303d0407baSopenharmony_ci	  memory space.
18313d0407baSopenharmony_ci
18323d0407baSopenharmony_ci	  If unsure, say N.
18333d0407baSopenharmony_ci
18343d0407baSopenharmony_ciconfig RSEQ
18353d0407baSopenharmony_ci	bool "Enable rseq() system call" if EXPERT
18363d0407baSopenharmony_ci	default y
18373d0407baSopenharmony_ci	depends on HAVE_RSEQ
18383d0407baSopenharmony_ci	select MEMBARRIER
18393d0407baSopenharmony_ci	help
18403d0407baSopenharmony_ci	  Enable the restartable sequences system call. It provides a
18413d0407baSopenharmony_ci	  user-space cache for the current CPU number value, which
18423d0407baSopenharmony_ci	  speeds up getting the current CPU number from user-space,
18433d0407baSopenharmony_ci	  as well as an ABI to speed up user-space operations on
18443d0407baSopenharmony_ci	  per-CPU data.
18453d0407baSopenharmony_ci
18463d0407baSopenharmony_ci	  If unsure, say Y.
18473d0407baSopenharmony_ci
18483d0407baSopenharmony_ciconfig DEBUG_RSEQ
18493d0407baSopenharmony_ci	default n
18503d0407baSopenharmony_ci	bool "Enabled debugging of rseq() system call" if EXPERT
18513d0407baSopenharmony_ci	depends on RSEQ && DEBUG_KERNEL
18523d0407baSopenharmony_ci	help
18533d0407baSopenharmony_ci	  Enable extra debugging checks for the rseq system call.
18543d0407baSopenharmony_ci
18553d0407baSopenharmony_ci	  If unsure, say N.
18563d0407baSopenharmony_ci
18573d0407baSopenharmony_ciconfig EMBEDDED
18583d0407baSopenharmony_ci	bool "Embedded system"
18593d0407baSopenharmony_ci	option allnoconfig_y
18603d0407baSopenharmony_ci	select EXPERT
18613d0407baSopenharmony_ci	help
18623d0407baSopenharmony_ci	  This option should be enabled if compiling the kernel for
18633d0407baSopenharmony_ci	  an embedded system so certain expert options are available
18643d0407baSopenharmony_ci	  for configuration.
18653d0407baSopenharmony_ci
18663d0407baSopenharmony_ciconfig HAVE_PERF_EVENTS
18673d0407baSopenharmony_ci	bool
18683d0407baSopenharmony_ci	help
18693d0407baSopenharmony_ci	  See tools/perf/design.txt for details.
18703d0407baSopenharmony_ci
18713d0407baSopenharmony_ciconfig PERF_USE_VMALLOC
18723d0407baSopenharmony_ci	bool
18733d0407baSopenharmony_ci	help
18743d0407baSopenharmony_ci	  See tools/perf/design.txt for details
18753d0407baSopenharmony_ci
18763d0407baSopenharmony_ciconfig PC104
18773d0407baSopenharmony_ci	bool "PC/104 support" if EXPERT
18783d0407baSopenharmony_ci	help
18793d0407baSopenharmony_ci	  Expose PC/104 form factor device drivers and options available for
18803d0407baSopenharmony_ci	  selection and configuration. Enable this option if your target
18813d0407baSopenharmony_ci	  machine has a PC/104 bus.
18823d0407baSopenharmony_ci
18833d0407baSopenharmony_cimenu "Kernel Performance Events And Counters"
18843d0407baSopenharmony_ci
18853d0407baSopenharmony_ciconfig PERF_EVENTS
18863d0407baSopenharmony_ci	bool "Kernel performance events and counters"
18873d0407baSopenharmony_ci	default y if PROFILING
18883d0407baSopenharmony_ci	depends on HAVE_PERF_EVENTS
18893d0407baSopenharmony_ci	select IRQ_WORK
18903d0407baSopenharmony_ci	select SRCU
18913d0407baSopenharmony_ci	help
18923d0407baSopenharmony_ci	  Enable kernel support for various performance events provided
18933d0407baSopenharmony_ci	  by software and hardware.
18943d0407baSopenharmony_ci
18953d0407baSopenharmony_ci	  Software events are supported either built-in or via the
18963d0407baSopenharmony_ci	  use of generic tracepoints.
18973d0407baSopenharmony_ci
18983d0407baSopenharmony_ci	  Most modern CPUs support performance events via performance
18993d0407baSopenharmony_ci	  counter registers. These registers count the number of certain
19003d0407baSopenharmony_ci	  types of hw events: such as instructions executed, cachemisses
19013d0407baSopenharmony_ci	  suffered, or branches mis-predicted - without slowing down the
19023d0407baSopenharmony_ci	  kernel or applications. These registers can also trigger interrupts
19033d0407baSopenharmony_ci	  when a threshold number of events have passed - and can thus be
19043d0407baSopenharmony_ci	  used to profile the code that runs on that CPU.
19053d0407baSopenharmony_ci
19063d0407baSopenharmony_ci	  The Linux Performance Event subsystem provides an abstraction of
19073d0407baSopenharmony_ci	  these software and hardware event capabilities, available via a
19083d0407baSopenharmony_ci	  system call and used by the "perf" utility in tools/perf/. It
19093d0407baSopenharmony_ci	  provides per task and per CPU counters, and it provides event
19103d0407baSopenharmony_ci	  capabilities on top of those.
19113d0407baSopenharmony_ci
19123d0407baSopenharmony_ci	  Say Y if unsure.
19133d0407baSopenharmony_ci
19143d0407baSopenharmony_ciconfig DEBUG_PERF_USE_VMALLOC
19153d0407baSopenharmony_ci	default n
19163d0407baSopenharmony_ci	bool "Debug: use vmalloc to back perf mmap() buffers"
19173d0407baSopenharmony_ci	depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
19183d0407baSopenharmony_ci	select PERF_USE_VMALLOC
19193d0407baSopenharmony_ci	help
19203d0407baSopenharmony_ci	  Use vmalloc memory to back perf mmap() buffers.
19213d0407baSopenharmony_ci
19223d0407baSopenharmony_ci	  Mostly useful for debugging the vmalloc code on platforms
19233d0407baSopenharmony_ci	  that don't require it.
19243d0407baSopenharmony_ci
19253d0407baSopenharmony_ci	  Say N if unsure.
19263d0407baSopenharmony_ci
19273d0407baSopenharmony_ciendmenu
19283d0407baSopenharmony_ci
19293d0407baSopenharmony_ciconfig VM_EVENT_COUNTERS
19303d0407baSopenharmony_ci	default y
19313d0407baSopenharmony_ci	bool "Enable VM event counters for /proc/vmstat" if EXPERT
19323d0407baSopenharmony_ci	help
19333d0407baSopenharmony_ci	  VM event counters are needed for event counts to be shown.
19343d0407baSopenharmony_ci	  This option allows the disabling of the VM event counters
19353d0407baSopenharmony_ci	  on EXPERT systems.  /proc/vmstat will only show page counts
19363d0407baSopenharmony_ci	  if VM event counters are disabled.
19373d0407baSopenharmony_ci
19383d0407baSopenharmony_ciconfig SLUB_DEBUG
19393d0407baSopenharmony_ci	default y
19403d0407baSopenharmony_ci	bool "Enable SLUB debugging support" if EXPERT
19413d0407baSopenharmony_ci	depends on SLUB && SYSFS
19423d0407baSopenharmony_ci	help
19433d0407baSopenharmony_ci	  SLUB has extensive debug support features. Disabling these can
19443d0407baSopenharmony_ci	  result in significant savings in code size. This also disables
19453d0407baSopenharmony_ci	  SLUB sysfs support. /sys/slab will not exist and there will be
19463d0407baSopenharmony_ci	  no support for cache validation etc.
19473d0407baSopenharmony_ci
19483d0407baSopenharmony_ciconfig SLUB_MEMCG_SYSFS_ON
19493d0407baSopenharmony_ci	default n
19503d0407baSopenharmony_ci	bool "Enable memcg SLUB sysfs support by default" if EXPERT
19513d0407baSopenharmony_ci	depends on SLUB && SYSFS && MEMCG
19523d0407baSopenharmony_ci	help
19533d0407baSopenharmony_ci	  SLUB creates a directory under /sys/kernel/slab for each
19543d0407baSopenharmony_ci	  allocation cache to host info and debug files. If memory
19553d0407baSopenharmony_ci	  cgroup is enabled, each cache can have per memory cgroup
19563d0407baSopenharmony_ci	  caches. SLUB can create the same sysfs directories for these
19573d0407baSopenharmony_ci	  caches under /sys/kernel/slab/CACHE/cgroup but it can lead
19583d0407baSopenharmony_ci	  to a very high number of debug files being created. This is
19593d0407baSopenharmony_ci	  controlled by slub_memcg_sysfs boot parameter and this
19603d0407baSopenharmony_ci	  config option determines the parameter's default value.
19613d0407baSopenharmony_ci
19623d0407baSopenharmony_ciconfig COMPAT_BRK
19633d0407baSopenharmony_ci	bool "Disable heap randomization"
19643d0407baSopenharmony_ci	default y
19653d0407baSopenharmony_ci	help
19663d0407baSopenharmony_ci	  Randomizing heap placement makes heap exploits harder, but it
19673d0407baSopenharmony_ci	  also breaks ancient binaries (including anything libc5 based).
19683d0407baSopenharmony_ci	  This option changes the bootup default to heap randomization
19693d0407baSopenharmony_ci	  disabled, and can be overridden at runtime by setting
19703d0407baSopenharmony_ci	  /proc/sys/kernel/randomize_va_space to 2.
19713d0407baSopenharmony_ci
19723d0407baSopenharmony_ci	  On non-ancient distros (post-2000 ones) N is usually a safe choice.
19733d0407baSopenharmony_ci
19743d0407baSopenharmony_cichoice
19753d0407baSopenharmony_ci	prompt "Choose SLAB allocator"
19763d0407baSopenharmony_ci	default SLUB
19773d0407baSopenharmony_ci	help
19783d0407baSopenharmony_ci	   This option allows to select a slab allocator.
19793d0407baSopenharmony_ci
19803d0407baSopenharmony_ciconfig SLAB
19813d0407baSopenharmony_ci	bool "SLAB"
19823d0407baSopenharmony_ci	select HAVE_HARDENED_USERCOPY_ALLOCATOR
19833d0407baSopenharmony_ci	help
19843d0407baSopenharmony_ci	  The regular slab allocator that is established and known to work
19853d0407baSopenharmony_ci	  well in all environments. It organizes cache hot objects in
19863d0407baSopenharmony_ci	  per cpu and per node queues.
19873d0407baSopenharmony_ci
19883d0407baSopenharmony_ciconfig SLUB
19893d0407baSopenharmony_ci	bool "SLUB (Unqueued Allocator)"
19903d0407baSopenharmony_ci	select HAVE_HARDENED_USERCOPY_ALLOCATOR
19913d0407baSopenharmony_ci	help
19923d0407baSopenharmony_ci	   SLUB is a slab allocator that minimizes cache line usage
19933d0407baSopenharmony_ci	   instead of managing queues of cached objects (SLAB approach).
19943d0407baSopenharmony_ci	   Per cpu caching is realized using slabs of objects instead
19953d0407baSopenharmony_ci	   of queues of objects. SLUB can use memory efficiently
19963d0407baSopenharmony_ci	   and has enhanced diagnostics. SLUB is the default choice for
19973d0407baSopenharmony_ci	   a slab allocator.
19983d0407baSopenharmony_ci
19993d0407baSopenharmony_ciconfig SLOB
20003d0407baSopenharmony_ci	depends on EXPERT
20013d0407baSopenharmony_ci	bool "SLOB (Simple Allocator)"
20023d0407baSopenharmony_ci	help
20033d0407baSopenharmony_ci	   SLOB replaces the stock allocator with a drastically simpler
20043d0407baSopenharmony_ci	   allocator. SLOB is generally more space efficient but
20053d0407baSopenharmony_ci	   does not perform as well on large systems.
20063d0407baSopenharmony_ci
20073d0407baSopenharmony_ciendchoice
20083d0407baSopenharmony_ci
20093d0407baSopenharmony_ciconfig SLAB_MERGE_DEFAULT
20103d0407baSopenharmony_ci	bool "Allow slab caches to be merged"
20113d0407baSopenharmony_ci	default y
20123d0407baSopenharmony_ci	help
20133d0407baSopenharmony_ci	  For reduced kernel memory fragmentation, slab caches can be
20143d0407baSopenharmony_ci	  merged when they share the same size and other characteristics.
20153d0407baSopenharmony_ci	  This carries a risk of kernel heap overflows being able to
20163d0407baSopenharmony_ci	  overwrite objects from merged caches (and more easily control
20173d0407baSopenharmony_ci	  cache layout), which makes such heap attacks easier to exploit
20183d0407baSopenharmony_ci	  by attackers. By keeping caches unmerged, these kinds of exploits
20193d0407baSopenharmony_ci	  can usually only damage objects in the same cache. To disable
20203d0407baSopenharmony_ci	  merging at runtime, "slab_nomerge" can be passed on the kernel
20213d0407baSopenharmony_ci	  command line.
20223d0407baSopenharmony_ci
20233d0407baSopenharmony_ciconfig SLAB_FREELIST_RANDOM
20243d0407baSopenharmony_ci	bool "Randomize slab freelist"
20253d0407baSopenharmony_ci	depends on SLAB || SLUB
20263d0407baSopenharmony_ci	help
20273d0407baSopenharmony_ci	  Randomizes the freelist order used on creating new pages. This
20283d0407baSopenharmony_ci	  security feature reduces the predictability of the kernel slab
20293d0407baSopenharmony_ci	  allocator against heap overflows.
20303d0407baSopenharmony_ci
20313d0407baSopenharmony_ciconfig SLAB_FREELIST_HARDENED
20323d0407baSopenharmony_ci	bool "Harden slab freelist metadata"
20333d0407baSopenharmony_ci	depends on SLAB || SLUB
20343d0407baSopenharmony_ci	help
20353d0407baSopenharmony_ci	  Many kernel heap attacks try to target slab cache metadata and
20363d0407baSopenharmony_ci	  other infrastructure. This options makes minor performance
20373d0407baSopenharmony_ci	  sacrifices to harden the kernel slab allocator against common
20383d0407baSopenharmony_ci	  freelist exploit methods. Some slab implementations have more
20393d0407baSopenharmony_ci	  sanity-checking than others. This option is most effective with
20403d0407baSopenharmony_ci	  CONFIG_SLUB.
20413d0407baSopenharmony_ci
20423d0407baSopenharmony_ciconfig SHUFFLE_PAGE_ALLOCATOR
20433d0407baSopenharmony_ci	bool "Page allocator randomization"
20443d0407baSopenharmony_ci	default SLAB_FREELIST_RANDOM && ACPI_NUMA
20453d0407baSopenharmony_ci	help
20463d0407baSopenharmony_ci	  Randomization of the page allocator improves the average
20473d0407baSopenharmony_ci	  utilization of a direct-mapped memory-side-cache. See section
20483d0407baSopenharmony_ci	  5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI
20493d0407baSopenharmony_ci	  6.2a specification for an example of how a platform advertises
20503d0407baSopenharmony_ci	  the presence of a memory-side-cache. There are also incidental
20513d0407baSopenharmony_ci	  security benefits as it reduces the predictability of page
20523d0407baSopenharmony_ci	  allocations to compliment SLAB_FREELIST_RANDOM, but the
20533d0407baSopenharmony_ci	  default granularity of shuffling on the "MAX_ORDER - 1" i.e,
20543d0407baSopenharmony_ci	  10th order of pages is selected based on cache utilization
20553d0407baSopenharmony_ci	  benefits on x86.
20563d0407baSopenharmony_ci
20573d0407baSopenharmony_ci	  While the randomization improves cache utilization it may
20583d0407baSopenharmony_ci	  negatively impact workloads on platforms without a cache. For
20593d0407baSopenharmony_ci	  this reason, by default, the randomization is enabled only
20603d0407baSopenharmony_ci	  after runtime detection of a direct-mapped memory-side-cache.
20613d0407baSopenharmony_ci	  Otherwise, the randomization may be force enabled with the
20623d0407baSopenharmony_ci	  'page_alloc.shuffle' kernel command line parameter.
20633d0407baSopenharmony_ci
20643d0407baSopenharmony_ci	  Say Y if unsure.
20653d0407baSopenharmony_ci
20663d0407baSopenharmony_ciconfig SLUB_CPU_PARTIAL
20673d0407baSopenharmony_ci	default y
20683d0407baSopenharmony_ci	depends on SLUB && SMP
20693d0407baSopenharmony_ci	bool "SLUB per cpu partial cache"
20703d0407baSopenharmony_ci	help
20713d0407baSopenharmony_ci	  Per cpu partial caches accelerate objects allocation and freeing
20723d0407baSopenharmony_ci	  that is local to a processor at the price of more indeterminism
20733d0407baSopenharmony_ci	  in the latency of the free. On overflow these caches will be cleared
20743d0407baSopenharmony_ci	  which requires the taking of locks that may cause latency spikes.
20753d0407baSopenharmony_ci	  Typically one would choose no for a realtime system.
20763d0407baSopenharmony_ci
20773d0407baSopenharmony_ciconfig MMAP_ALLOW_UNINITIALIZED
20783d0407baSopenharmony_ci	bool "Allow mmapped anonymous memory to be uninitialized"
20793d0407baSopenharmony_ci	depends on EXPERT && !MMU
20803d0407baSopenharmony_ci	default n
20813d0407baSopenharmony_ci	help
20823d0407baSopenharmony_ci	  Normally, and according to the Linux spec, anonymous memory obtained
20833d0407baSopenharmony_ci	  from mmap() has its contents cleared before it is passed to
20843d0407baSopenharmony_ci	  userspace.  Enabling this config option allows you to request that
20853d0407baSopenharmony_ci	  mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
20863d0407baSopenharmony_ci	  providing a huge performance boost.  If this option is not enabled,
20873d0407baSopenharmony_ci	  then the flag will be ignored.
20883d0407baSopenharmony_ci
20893d0407baSopenharmony_ci	  This is taken advantage of by uClibc's malloc(), and also by
20903d0407baSopenharmony_ci	  ELF-FDPIC binfmt's brk and stack allocator.
20913d0407baSopenharmony_ci
20923d0407baSopenharmony_ci	  Because of the obvious security issues, this option should only be
20933d0407baSopenharmony_ci	  enabled on embedded devices where you control what is run in
20943d0407baSopenharmony_ci	  userspace.  Since that isn't generally a problem on no-MMU systems,
20953d0407baSopenharmony_ci	  it is normally safe to say Y here.
20963d0407baSopenharmony_ci
20973d0407baSopenharmony_ci	  See Documentation/admin-guide/mm/nommu-mmap.rst for more information.
20983d0407baSopenharmony_ci
20993d0407baSopenharmony_ciconfig SYSTEM_DATA_VERIFICATION
21003d0407baSopenharmony_ci	def_bool n
21013d0407baSopenharmony_ci	select SYSTEM_TRUSTED_KEYRING
21023d0407baSopenharmony_ci	select KEYS
21033d0407baSopenharmony_ci	select CRYPTO
21043d0407baSopenharmony_ci	select CRYPTO_RSA
21053d0407baSopenharmony_ci	select ASYMMETRIC_KEY_TYPE
21063d0407baSopenharmony_ci	select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
21073d0407baSopenharmony_ci	select ASN1
21083d0407baSopenharmony_ci	select OID_REGISTRY
21093d0407baSopenharmony_ci	select X509_CERTIFICATE_PARSER
21103d0407baSopenharmony_ci	select PKCS7_MESSAGE_PARSER
21113d0407baSopenharmony_ci	help
21123d0407baSopenharmony_ci	  Provide PKCS#7 message verification using the contents of the system
21133d0407baSopenharmony_ci	  trusted keyring to provide public keys.  This then can be used for
21143d0407baSopenharmony_ci	  module verification, kexec image verification and firmware blob
21153d0407baSopenharmony_ci	  verification.
21163d0407baSopenharmony_ci
21173d0407baSopenharmony_ciconfig PROFILING
21183d0407baSopenharmony_ci	bool "Profiling support"
21193d0407baSopenharmony_ci	help
21203d0407baSopenharmony_ci	  Say Y here to enable the extended profiling support mechanisms used
21213d0407baSopenharmony_ci	  by profilers such as OProfile.
21223d0407baSopenharmony_ci
21233d0407baSopenharmony_ci#
21243d0407baSopenharmony_ci# Place an empty function call at each tracepoint site. Can be
21253d0407baSopenharmony_ci# dynamically changed for a probe function.
21263d0407baSopenharmony_ci#
21273d0407baSopenharmony_ciconfig TRACEPOINTS
21283d0407baSopenharmony_ci	bool
21293d0407baSopenharmony_ci
21303d0407baSopenharmony_ciendmenu		# General setup
21313d0407baSopenharmony_ci
21323d0407baSopenharmony_cisource "arch/Kconfig"
21333d0407baSopenharmony_ci
21343d0407baSopenharmony_ciconfig RT_MUTEXES
21353d0407baSopenharmony_ci	bool
21363d0407baSopenharmony_ci
21373d0407baSopenharmony_ciconfig BASE_SMALL
21383d0407baSopenharmony_ci	int
21393d0407baSopenharmony_ci	default 0 if BASE_FULL
21403d0407baSopenharmony_ci	default 1 if !BASE_FULL
21413d0407baSopenharmony_ci
21423d0407baSopenharmony_ciconfig MODULE_SIG_FORMAT
21433d0407baSopenharmony_ci	def_bool n
21443d0407baSopenharmony_ci	select SYSTEM_DATA_VERIFICATION
21453d0407baSopenharmony_ci
21463d0407baSopenharmony_cimenuconfig MODULES
21473d0407baSopenharmony_ci	bool "Enable loadable module support"
21483d0407baSopenharmony_ci	option modules
21493d0407baSopenharmony_ci	help
21503d0407baSopenharmony_ci	  Kernel modules are small pieces of compiled code which can
21513d0407baSopenharmony_ci	  be inserted in the running kernel, rather than being
21523d0407baSopenharmony_ci	  permanently built into the kernel.  You use the "modprobe"
21533d0407baSopenharmony_ci	  tool to add (and sometimes remove) them.  If you say Y here,
21543d0407baSopenharmony_ci	  many parts of the kernel can be built as modules (by
21553d0407baSopenharmony_ci	  answering M instead of Y where indicated): this is most
21563d0407baSopenharmony_ci	  useful for infrequently used options which are not required
21573d0407baSopenharmony_ci	  for booting.  For more information, see the man pages for
21583d0407baSopenharmony_ci	  modprobe, lsmod, modinfo, insmod and rmmod.
21593d0407baSopenharmony_ci
21603d0407baSopenharmony_ci	  If you say Y here, you will need to run "make
21613d0407baSopenharmony_ci	  modules_install" to put the modules under /lib/modules/
21623d0407baSopenharmony_ci	  where modprobe can find them (you may need to be root to do
21633d0407baSopenharmony_ci	  this).
21643d0407baSopenharmony_ci
21653d0407baSopenharmony_ci	  If unsure, say Y.
21663d0407baSopenharmony_ci
21673d0407baSopenharmony_ciif MODULES
21683d0407baSopenharmony_ci
21693d0407baSopenharmony_ciconfig MODULE_FORCE_LOAD
21703d0407baSopenharmony_ci	bool "Forced module loading"
21713d0407baSopenharmony_ci	default n
21723d0407baSopenharmony_ci	help
21733d0407baSopenharmony_ci	  Allow loading of modules without version information (ie. modprobe
21743d0407baSopenharmony_ci	  --force).  Forced module loading sets the 'F' (forced) taint flag and
21753d0407baSopenharmony_ci	  is usually a really bad idea.
21763d0407baSopenharmony_ci
21773d0407baSopenharmony_ciconfig MODULE_UNLOAD
21783d0407baSopenharmony_ci	bool "Module unloading"
21793d0407baSopenharmony_ci	help
21803d0407baSopenharmony_ci	  Without this option you will not be able to unload any
21813d0407baSopenharmony_ci	  modules (note that some modules may not be unloadable
21823d0407baSopenharmony_ci	  anyway), which makes your kernel smaller, faster
21833d0407baSopenharmony_ci	  and simpler.  If unsure, say Y.
21843d0407baSopenharmony_ci
21853d0407baSopenharmony_ciconfig MODULE_FORCE_UNLOAD
21863d0407baSopenharmony_ci	bool "Forced module unloading"
21873d0407baSopenharmony_ci	depends on MODULE_UNLOAD
21883d0407baSopenharmony_ci	help
21893d0407baSopenharmony_ci	  This option allows you to force a module to unload, even if the
21903d0407baSopenharmony_ci	  kernel believes it is unsafe: the kernel will remove the module
21913d0407baSopenharmony_ci	  without waiting for anyone to stop using it (using the -f option to
21923d0407baSopenharmony_ci	  rmmod).  This is mainly for kernel developers and desperate users.
21933d0407baSopenharmony_ci	  If unsure, say N.
21943d0407baSopenharmony_ci
21953d0407baSopenharmony_ciconfig MODVERSIONS
21963d0407baSopenharmony_ci	bool "Module versioning support"
21973d0407baSopenharmony_ci	help
21983d0407baSopenharmony_ci	  Usually, you have to use modules compiled with your kernel.
21993d0407baSopenharmony_ci	  Saying Y here makes it sometimes possible to use modules
22003d0407baSopenharmony_ci	  compiled for different kernels, by adding enough information
22013d0407baSopenharmony_ci	  to the modules to (hopefully) spot any changes which would
22023d0407baSopenharmony_ci	  make them incompatible with the kernel you are running.  If
22033d0407baSopenharmony_ci	  unsure, say N.
22043d0407baSopenharmony_ci
22053d0407baSopenharmony_ciconfig ASM_MODVERSIONS
22063d0407baSopenharmony_ci	bool
22073d0407baSopenharmony_ci	default HAVE_ASM_MODVERSIONS && MODVERSIONS
22083d0407baSopenharmony_ci	help
22093d0407baSopenharmony_ci	  This enables module versioning for exported symbols also from
22103d0407baSopenharmony_ci	  assembly. This can be enabled only when the target architecture
22113d0407baSopenharmony_ci	  supports it.
22123d0407baSopenharmony_ci
22133d0407baSopenharmony_ciconfig MODULE_REL_CRCS
22143d0407baSopenharmony_ci	bool
22153d0407baSopenharmony_ci	depends on MODVERSIONS
22163d0407baSopenharmony_ci
22173d0407baSopenharmony_ciconfig MODULE_SRCVERSION_ALL
22183d0407baSopenharmony_ci	bool "Source checksum for all modules"
22193d0407baSopenharmony_ci	help
22203d0407baSopenharmony_ci	  Modules which contain a MODULE_VERSION get an extra "srcversion"
22213d0407baSopenharmony_ci	  field inserted into their modinfo section, which contains a
22223d0407baSopenharmony_ci    	  sum of the source files which made it.  This helps maintainers
22233d0407baSopenharmony_ci	  see exactly which source was used to build a module (since
22243d0407baSopenharmony_ci	  others sometimes change the module source without updating
22253d0407baSopenharmony_ci	  the version).  With this option, such a "srcversion" field
22263d0407baSopenharmony_ci	  will be created for all modules.  If unsure, say N.
22273d0407baSopenharmony_ci
22283d0407baSopenharmony_ciconfig MODULE_SIG
22293d0407baSopenharmony_ci	bool "Module signature verification"
22303d0407baSopenharmony_ci	select MODULE_SIG_FORMAT
22313d0407baSopenharmony_ci	help
22323d0407baSopenharmony_ci	  Check modules for valid signatures upon load: the signature
22333d0407baSopenharmony_ci	  is simply appended to the module. For more information see
22343d0407baSopenharmony_ci	  <file:Documentation/admin-guide/module-signing.rst>.
22353d0407baSopenharmony_ci
22363d0407baSopenharmony_ci	  Note that this option adds the OpenSSL development packages as a
22373d0407baSopenharmony_ci	  kernel build dependency so that the signing tool can use its crypto
22383d0407baSopenharmony_ci	  library.
22393d0407baSopenharmony_ci
22403d0407baSopenharmony_ci	  You should enable this option if you wish to use either
22413d0407baSopenharmony_ci	  CONFIG_SECURITY_LOCKDOWN_LSM or lockdown functionality imposed via
22423d0407baSopenharmony_ci	  another LSM - otherwise unsigned modules will be loadable regardless
22433d0407baSopenharmony_ci	  of the lockdown policy.
22443d0407baSopenharmony_ci
22453d0407baSopenharmony_ci	  !!!WARNING!!!  If you enable this option, you MUST make sure that the
22463d0407baSopenharmony_ci	  module DOES NOT get stripped after being signed.  This includes the
22473d0407baSopenharmony_ci	  debuginfo strip done by some packagers (such as rpmbuild) and
22483d0407baSopenharmony_ci	  inclusion into an initramfs that wants the module size reduced.
22493d0407baSopenharmony_ci
22503d0407baSopenharmony_ciconfig MODULE_SIG_FORCE
22513d0407baSopenharmony_ci	bool "Require modules to be validly signed"
22523d0407baSopenharmony_ci	depends on MODULE_SIG
22533d0407baSopenharmony_ci	help
22543d0407baSopenharmony_ci	  Reject unsigned modules or signed modules for which we don't have a
22553d0407baSopenharmony_ci	  key.  Without this, such modules will simply taint the kernel.
22563d0407baSopenharmony_ci
22573d0407baSopenharmony_ciconfig MODULE_SIG_ALL
22583d0407baSopenharmony_ci	bool "Automatically sign all modules"
22593d0407baSopenharmony_ci	default y
22603d0407baSopenharmony_ci	depends on MODULE_SIG
22613d0407baSopenharmony_ci	help
22623d0407baSopenharmony_ci	  Sign all modules during make modules_install. Without this option,
22633d0407baSopenharmony_ci	  modules must be signed manually, using the scripts/sign-file tool.
22643d0407baSopenharmony_ci
22653d0407baSopenharmony_cicomment "Do not forget to sign required modules with scripts/sign-file"
22663d0407baSopenharmony_ci	depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
22673d0407baSopenharmony_ci
22683d0407baSopenharmony_cichoice
22693d0407baSopenharmony_ci	prompt "Which hash algorithm should modules be signed with?"
22703d0407baSopenharmony_ci	depends on MODULE_SIG
22713d0407baSopenharmony_ci	help
22723d0407baSopenharmony_ci	  This determines which sort of hashing algorithm will be used during
22733d0407baSopenharmony_ci	  signature generation.  This algorithm _must_ be built into the kernel
22743d0407baSopenharmony_ci	  directly so that signature verification can take place.  It is not
22753d0407baSopenharmony_ci	  possible to load a signed module containing the algorithm to check
22763d0407baSopenharmony_ci	  the signature on that module.
22773d0407baSopenharmony_ci
22783d0407baSopenharmony_ciconfig MODULE_SIG_SHA1
22793d0407baSopenharmony_ci	bool "Sign modules with SHA-1"
22803d0407baSopenharmony_ci	select CRYPTO_SHA1
22813d0407baSopenharmony_ci
22823d0407baSopenharmony_ciconfig MODULE_SIG_SHA224
22833d0407baSopenharmony_ci	bool "Sign modules with SHA-224"
22843d0407baSopenharmony_ci	select CRYPTO_SHA256
22853d0407baSopenharmony_ci
22863d0407baSopenharmony_ciconfig MODULE_SIG_SHA256
22873d0407baSopenharmony_ci	bool "Sign modules with SHA-256"
22883d0407baSopenharmony_ci	select CRYPTO_SHA256
22893d0407baSopenharmony_ci
22903d0407baSopenharmony_ciconfig MODULE_SIG_SHA384
22913d0407baSopenharmony_ci	bool "Sign modules with SHA-384"
22923d0407baSopenharmony_ci	select CRYPTO_SHA512
22933d0407baSopenharmony_ci
22943d0407baSopenharmony_ciconfig MODULE_SIG_SHA512
22953d0407baSopenharmony_ci	bool "Sign modules with SHA-512"
22963d0407baSopenharmony_ci	select CRYPTO_SHA512
22973d0407baSopenharmony_ci
22983d0407baSopenharmony_ciendchoice
22993d0407baSopenharmony_ci
23003d0407baSopenharmony_ciconfig MODULE_SIG_HASH
23013d0407baSopenharmony_ci	string
23023d0407baSopenharmony_ci	depends on MODULE_SIG
23033d0407baSopenharmony_ci	default "sha1" if MODULE_SIG_SHA1
23043d0407baSopenharmony_ci	default "sha224" if MODULE_SIG_SHA224
23053d0407baSopenharmony_ci	default "sha256" if MODULE_SIG_SHA256
23063d0407baSopenharmony_ci	default "sha384" if MODULE_SIG_SHA384
23073d0407baSopenharmony_ci	default "sha512" if MODULE_SIG_SHA512
23083d0407baSopenharmony_ci
23093d0407baSopenharmony_ciconfig MODULE_COMPRESS
23103d0407baSopenharmony_ci	bool "Compress modules on installation"
23113d0407baSopenharmony_ci	help
23123d0407baSopenharmony_ci
23133d0407baSopenharmony_ci	  Compresses kernel modules when 'make modules_install' is run; gzip or
23143d0407baSopenharmony_ci	  xz depending on "Compression algorithm" below.
23153d0407baSopenharmony_ci
23163d0407baSopenharmony_ci	  module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
23173d0407baSopenharmony_ci
23183d0407baSopenharmony_ci	  Out-of-tree kernel modules installed using Kbuild will also be
23193d0407baSopenharmony_ci	  compressed upon installation.
23203d0407baSopenharmony_ci
23213d0407baSopenharmony_ci	  Note: for modules inside an initrd or initramfs, it's more efficient
23223d0407baSopenharmony_ci	  to compress the whole initrd or initramfs instead.
23233d0407baSopenharmony_ci
23243d0407baSopenharmony_ci	  Note: This is fully compatible with signed modules.
23253d0407baSopenharmony_ci
23263d0407baSopenharmony_ci	  If in doubt, say N.
23273d0407baSopenharmony_ci
23283d0407baSopenharmony_cichoice
23293d0407baSopenharmony_ci	prompt "Compression algorithm"
23303d0407baSopenharmony_ci	depends on MODULE_COMPRESS
23313d0407baSopenharmony_ci	default MODULE_COMPRESS_GZIP
23323d0407baSopenharmony_ci	help
23333d0407baSopenharmony_ci	  This determines which sort of compression will be used during
23343d0407baSopenharmony_ci	  'make modules_install'.
23353d0407baSopenharmony_ci
23363d0407baSopenharmony_ci	  GZIP (default) and XZ are supported.
23373d0407baSopenharmony_ci
23383d0407baSopenharmony_ciconfig MODULE_COMPRESS_GZIP
23393d0407baSopenharmony_ci	bool "GZIP"
23403d0407baSopenharmony_ci
23413d0407baSopenharmony_ciconfig MODULE_COMPRESS_XZ
23423d0407baSopenharmony_ci	bool "XZ"
23433d0407baSopenharmony_ci
23443d0407baSopenharmony_ciendchoice
23453d0407baSopenharmony_ci
23463d0407baSopenharmony_ciconfig MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
23473d0407baSopenharmony_ci	bool "Allow loading of modules with missing namespace imports"
23483d0407baSopenharmony_ci	help
23493d0407baSopenharmony_ci	  Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in
23503d0407baSopenharmony_ci	  a namespace. A module that makes use of a symbol exported with such a
23513d0407baSopenharmony_ci	  namespace is required to import the namespace via MODULE_IMPORT_NS().
23523d0407baSopenharmony_ci	  There is no technical reason to enforce correct namespace imports,
23533d0407baSopenharmony_ci	  but it creates consistency between symbols defining namespaces and
23543d0407baSopenharmony_ci	  users importing namespaces they make use of. This option relaxes this
23553d0407baSopenharmony_ci	  requirement and lifts the enforcement when loading a module.
23563d0407baSopenharmony_ci
23573d0407baSopenharmony_ci	  If unsure, say N.
23583d0407baSopenharmony_ci
23593d0407baSopenharmony_ciconfig UNUSED_SYMBOLS
23603d0407baSopenharmony_ci	bool "Enable unused/obsolete exported symbols"
23613d0407baSopenharmony_ci	default y if X86
23623d0407baSopenharmony_ci	help
23633d0407baSopenharmony_ci	  Unused but exported symbols make the kernel needlessly bigger.  For
23643d0407baSopenharmony_ci	  that reason most of these unused exports will soon be removed.  This
23653d0407baSopenharmony_ci	  option is provided temporarily to provide a transition period in case
23663d0407baSopenharmony_ci	  some external kernel module needs one of these symbols anyway. If you
23673d0407baSopenharmony_ci	  encounter such a case in your module, consider if you are actually
23683d0407baSopenharmony_ci	  using the right API.  (rationale: since nobody in the kernel is using
23693d0407baSopenharmony_ci	  this in a module, there is a pretty good chance it's actually the
23703d0407baSopenharmony_ci	  wrong interface to use).  If you really need the symbol, please send a
23713d0407baSopenharmony_ci	  mail to the linux kernel mailing list mentioning the symbol and why
23723d0407baSopenharmony_ci	  you really need it, and what the merge plan to the mainline kernel for
23733d0407baSopenharmony_ci	  your module is.
23743d0407baSopenharmony_ci
23753d0407baSopenharmony_ciconfig TRIM_UNUSED_KSYMS
23763d0407baSopenharmony_ci	bool "Trim unused exported kernel symbols"
23773d0407baSopenharmony_ci	depends on !UNUSED_SYMBOLS
23783d0407baSopenharmony_ci	help
23793d0407baSopenharmony_ci	  The kernel and some modules make many symbols available for
23803d0407baSopenharmony_ci	  other modules to use via EXPORT_SYMBOL() and variants. Depending
23813d0407baSopenharmony_ci	  on the set of modules being selected in your kernel configuration,
23823d0407baSopenharmony_ci	  many of those exported symbols might never be used.
23833d0407baSopenharmony_ci
23843d0407baSopenharmony_ci	  This option allows for unused exported symbols to be dropped from
23853d0407baSopenharmony_ci	  the build. In turn, this provides the compiler more opportunities
23863d0407baSopenharmony_ci	  (especially when using LTO) for optimizing the code and reducing
23873d0407baSopenharmony_ci	  binary size.  This might have some security advantages as well.
23883d0407baSopenharmony_ci
23893d0407baSopenharmony_ci	  If unsure, or if you need to build out-of-tree modules, say N.
23903d0407baSopenharmony_ci
23913d0407baSopenharmony_ciconfig UNUSED_KSYMS_WHITELIST
23923d0407baSopenharmony_ci	string "Whitelist of symbols to keep in ksymtab"
23933d0407baSopenharmony_ci	depends on TRIM_UNUSED_KSYMS
23943d0407baSopenharmony_ci	help
23953d0407baSopenharmony_ci	  By default, all unused exported symbols will be un-exported from the
23963d0407baSopenharmony_ci	  build when TRIM_UNUSED_KSYMS is selected.
23973d0407baSopenharmony_ci
23983d0407baSopenharmony_ci	  UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept
23993d0407baSopenharmony_ci	  exported at all times, even in absence of in-tree users. The value to
24003d0407baSopenharmony_ci	  set here is the path to a text file containing the list of symbols,
24013d0407baSopenharmony_ci	  one per line. The path can be absolute, or relative to the kernel
24023d0407baSopenharmony_ci	  source tree.
24033d0407baSopenharmony_ci
24043d0407baSopenharmony_ciendif # MODULES
24053d0407baSopenharmony_ci
24063d0407baSopenharmony_ciconfig MODULES_TREE_LOOKUP
24073d0407baSopenharmony_ci	def_bool y
24083d0407baSopenharmony_ci	depends on PERF_EVENTS || TRACING || CFI_CLANG
24093d0407baSopenharmony_ci
24103d0407baSopenharmony_ciconfig INIT_ALL_POSSIBLE
24113d0407baSopenharmony_ci	bool
24123d0407baSopenharmony_ci	help
24133d0407baSopenharmony_ci	  Back when each arch used to define their own cpu_online_mask and
24143d0407baSopenharmony_ci	  cpu_possible_mask, some of them chose to initialize cpu_possible_mask
24153d0407baSopenharmony_ci	  with all 1s, and others with all 0s.  When they were centralised,
24163d0407baSopenharmony_ci	  it was better to provide this option than to break all the archs
24173d0407baSopenharmony_ci	  and have several arch maintainers pursuing me down dark alleys.
24183d0407baSopenharmony_ci
24193d0407baSopenharmony_cisource "block/Kconfig"
24203d0407baSopenharmony_ci
24213d0407baSopenharmony_ciconfig PREEMPT_NOTIFIERS
24223d0407baSopenharmony_ci	bool
24233d0407baSopenharmony_ci
24243d0407baSopenharmony_ciconfig PADATA
24253d0407baSopenharmony_ci	depends on SMP
24263d0407baSopenharmony_ci	bool
24273d0407baSopenharmony_ci
24283d0407baSopenharmony_ciconfig ASN1
24293d0407baSopenharmony_ci	tristate
24303d0407baSopenharmony_ci	help
24313d0407baSopenharmony_ci	  Build a simple ASN.1 grammar compiler that produces a bytecode output
24323d0407baSopenharmony_ci	  that can be interpreted by the ASN.1 stream decoder and used to
24333d0407baSopenharmony_ci	  inform it as to what tags are to be expected in a stream and what
24343d0407baSopenharmony_ci	  functions to call on what tags.
24353d0407baSopenharmony_ci
24363d0407baSopenharmony_cisource "kernel/Kconfig.locks"
24373d0407baSopenharmony_ci
24383d0407baSopenharmony_ciconfig ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
24393d0407baSopenharmony_ci	bool
24403d0407baSopenharmony_ci
24413d0407baSopenharmony_ciconfig ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
24423d0407baSopenharmony_ci	bool
24433d0407baSopenharmony_ci
24443d0407baSopenharmony_ci# It may be useful for an architecture to override the definitions of the
24453d0407baSopenharmony_ci# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h>
24463d0407baSopenharmony_ci# and the COMPAT_ variants in <linux/compat.h>, in particular to use a
24473d0407baSopenharmony_ci# different calling convention for syscalls. They can also override the
24483d0407baSopenharmony_ci# macros for not-implemented syscalls in kernel/sys_ni.c and
24493d0407baSopenharmony_ci# kernel/time/posix-stubs.c. All these overrides need to be available in
24503d0407baSopenharmony_ci# <asm/syscall_wrapper.h>.
24513d0407baSopenharmony_ciconfig ARCH_HAS_SYSCALL_WRAPPER
24523d0407baSopenharmony_ci	def_bool n
2453