summaryrefslogtreecommitdiff
path: root/lib/Kconfig
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Kconfig')
-rw-r--r--lib/Kconfig569
1 files changed, 395 insertions, 174 deletions
diff --git a/lib/Kconfig b/lib/Kconfig
index 35da51359d40..2923924bea78 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-only
#
# Library configuration
#
@@ -10,183 +11,181 @@ menu "Library routines"
config RAID6_PQ
tristate
+config RAID6_PQ_BENCHMARK
+ bool "Automatically choose fastest RAID6 PQ functions"
+ depends on RAID6_PQ
+ default y
+ help
+ Benchmark all available RAID6 PQ functions on init and choose the
+ fastest one.
+
+config LINEAR_RANGES
+ tristate
+
+config PACKING
+ bool "Generic bitfield packing and unpacking"
+ select BITREVERSE
+ default n
+ help
+ This option provides the packing() helper function, which permits
+ converting bitfields between a CPU-usable representation and a
+ memory representation that can have any combination of these quirks:
+ - Is little endian (bytes are reversed within a 32-bit group)
+ - The least-significant 32-bit word comes first (within a 64-bit
+ group)
+ - The most significant bit of a byte is at its right (bit 0 of a
+ register description is numerically 2^7).
+ Drivers may use these helpers to match the bit indices as described
+ in the data sheets of the peripherals they are in control of.
+
+ When in doubt, say N.
+
+config PACKING_KUNIT_TEST
+ tristate "KUnit tests for packing library" if !KUNIT_ALL_TESTS
+ depends on PACKING && KUNIT
+ default KUNIT_ALL_TESTS
+ help
+ This builds KUnit tests for the packing library.
+
+ For more information on KUnit and unit tests in general,
+ please refer to the KUnit documentation in Documentation/dev-tools/kunit/.
+
+ When in doubt, say N.
+
config BITREVERSE
tristate
-config RATIONAL
- boolean
+config HAVE_ARCH_BITREVERSE
+ bool
+ default n
+ help
+ This option enables the use of hardware bit-reversal instructions on
+ architectures which support such operations.
-config GENERIC_STRNCPY_FROM_USER
+config ARCH_HAS_STRNCPY_FROM_USER
bool
-config GENERIC_STRNLEN_USER
+config ARCH_HAS_STRNLEN_USER
bool
+config GENERIC_STRNCPY_FROM_USER
+ def_bool !ARCH_HAS_STRNCPY_FROM_USER
+
+config GENERIC_STRNLEN_USER
+ def_bool !ARCH_HAS_STRNLEN_USER
+
config GENERIC_NET_UTILS
bool
-config GENERIC_FIND_FIRST_BIT
- bool
+source "lib/math/Kconfig"
config NO_GENERIC_PCI_IOPORT_MAP
bool
-config GENERIC_PCI_IOMAP
- bool
-
config GENERIC_IOMAP
bool
select GENERIC_PCI_IOMAP
-config GENERIC_IO
- boolean
- default n
-
config STMP_DEVICE
bool
-config PERCPU_RWSEM
- boolean
+config ARCH_USE_CMPXCHG_LOCKREF
+ bool
-config CRC_CCITT
- tristate "CRC-CCITT functions"
- help
- This option is provided for the case where no in-kernel-tree
- modules require CRC-CCITT functions, but a module built outside
- the kernel tree does. Such modules that use library CRC-CCITT
- functions require M here.
+config ARCH_HAS_FAST_MULTIPLIER
+ bool
-config CRC16
- tristate "CRC16 functions"
- help
- This option is provided for the case where no in-kernel-tree
- modules require CRC16 functions, but a module built outside
- the kernel tree does. Such modules that use library CRC16
- functions require M here.
-
-config CRC_T10DIF
- tristate "CRC calculation for the T10 Data Integrity Field"
- select CRYPTO
- select CRYPTO_CRCT10DIF
- help
- This option is only needed if a module that's not in the
- kernel tree needs to calculate CRC checks for use with the
- SCSI data integrity subsystem.
+config ARCH_USE_SYM_ANNOTATIONS
+ bool
-config CRC_ITU_T
- tristate "CRC ITU-T V.41 functions"
+config INDIRECT_PIO
+ bool "Access I/O in non-MMIO mode"
+ depends on ARM64
+ depends on HAS_IOPORT
help
- This option is provided for the case where no in-kernel-tree
- modules require CRC ITU-T V.41 functions, but a module built outside
- the kernel tree does. Such modules that use library CRC ITU-T V.41
- functions require M here.
+ On some platforms where no separate I/O space exists, there are I/O
+ hosts which can not be accessed in MMIO mode. Using the logical PIO
+ mechanism, the host-local I/O resource can be mapped into system
+ logic PIO space shared with MMIO hosts, such as PCI/PCIe, then the
+ system can access the I/O devices with the mapped-logic PIO through
+ I/O accessors.
-config CRC32
- tristate "CRC32/CRC32c functions"
- default y
- select BITREVERSE
- help
- This option is provided for the case where no in-kernel-tree
- modules require CRC32/CRC32c functions, but a module built outside
- the kernel tree does. Such modules that use library CRC32/CRC32c
- functions require M here.
+ This way has relatively little I/O performance cost. Please make
+ sure your devices really need this configure item enabled.
-config CRC32_SELFTEST
- bool "CRC32 perform self test on init"
- default n
- depends on CRC32
- help
- This option enables the CRC32 library functions to perform a
- self test on initialization. The self test computes crc32_le
- and crc32_be over byte strings with random alignment and length
- and computes the total elapsed time and number of bytes processed.
-
-choice
- prompt "CRC32 implementation"
- depends on CRC32
- default CRC32_SLICEBY8
- help
- This option allows a kernel builder to override the default choice
- of CRC32 algorithm. Choose the default ("slice by 8") unless you
- know that you need one of the others.
+ When in doubt, say N.
-config CRC32_SLICEBY8
- bool "Slice by 8 bytes"
- help
- Calculate checksum 8 bytes at a time with a clever slicing algorithm.
- This is the fastest algorithm, but comes with a 8KiB lookup table.
- Most modern processors have enough cache to hold this table without
- thrashing the cache.
-
- This is the default implementation choice. Choose this one unless
- you have a good reason not to.
-
-config CRC32_SLICEBY4
- bool "Slice by 4 bytes"
+config INDIRECT_IOMEM
+ bool
help
- Calculate checksum 4 bytes at a time with a clever slicing algorithm.
- This is a bit slower than slice by 8, but has a smaller 4KiB lookup
- table.
-
- Only choose this option if you know what you are doing.
+ This is selected by other options/architectures to provide the
+ emulated iomem accessors.
-config CRC32_SARWATE
- bool "Sarwate's Algorithm (one byte at a time)"
+config INDIRECT_IOMEM_FALLBACK
+ bool
+ depends on INDIRECT_IOMEM
help
- Calculate checksum a byte at a time using Sarwate's algorithm. This
- is not particularly fast, but has a small 256 byte lookup table.
+ If INDIRECT_IOMEM is selected, this enables falling back to plain
+ mmio accesses when the IO memory address is not a registered
+ emulated region.
- Only choose this option if you know what you are doing.
-
-config CRC32_BIT
- bool "Classic Algorithm (one bit at a time)"
+config TRACE_MMIO_ACCESS
+ bool "Register read/write tracing"
+ depends on TRACING && ARCH_HAVE_TRACE_MMIO_ACCESS
help
- Calculate checksum one bit at a time. This is VERY slow, but has
- no lookup table. This is provided as a debugging option.
-
- Only choose this option if you are debugging crc32.
+ Create tracepoints for MMIO read/write operations. These trace events
+ can be used for logging all MMIO read/write operations.
-endchoice
+source "lib/crc/Kconfig"
+source "lib/crypto/Kconfig"
-config CRC7
- tristate "CRC7 functions"
- help
- This option is provided for the case where no in-kernel-tree
- modules require CRC7 functions, but a module built outside
- the kernel tree does. Such modules that use library CRC7
- functions require M here.
-
-config LIBCRC32C
- tristate "CRC32c (Castagnoli, et al) Cyclic Redundancy-Check"
- select CRYPTO
- select CRYPTO_CRC32C
- help
- This option is provided for the case where no in-kernel-tree
- modules require CRC32c functions, but a module built outside the
- kernel tree does. Such modules that use library CRC32c functions
- require M here. See Castagnoli93.
- Module will be libcrc32c.
-
-config CRC8
- tristate "CRC8 function"
- help
- This option provides CRC8 function. Drivers may select this
- when they need to do cyclic redundancy check according CRC8
- algorithm. Module will be called crc8.
+config XXHASH
+ tristate
config AUDIT_GENERIC
bool
depends on AUDIT && !AUDIT_ARCH
default y
+config AUDIT_ARCH_COMPAT_GENERIC
+ bool
+ default n
+
+config AUDIT_COMPAT_GENERIC
+ bool
+ depends on AUDIT_GENERIC && AUDIT_ARCH_COMPAT_GENERIC && COMPAT
+ default y
+
+config RANDOM32_SELFTEST
+ bool "PRNG perform self test on init"
+ help
+ This option enables the 32 bit PRNG library functions to perform a
+ self test on initialization.
+
#
# compression support is select'ed if needed
#
+config 842_COMPRESS
+ select CRC32
+ tristate
+
+config 842_DECOMPRESS
+ select CRC32
+ tristate
+
config ZLIB_INFLATE
tristate
config ZLIB_DEFLATE
tristate
+ select BITREVERSE
+
+config ZLIB_DFLTCC
+ def_bool y
+ depends on S390
+ prompt "Enable s390x DEFLATE CONVERSION CALL support for kernel zlib"
+ help
+ Enable s390x hardware support for zlib in the kernel.
config LZO_COMPRESS
tristate
@@ -203,6 +202,18 @@ config LZ4HC_COMPRESS
config LZ4_DECOMPRESS
tristate
+config ZSTD_COMMON
+ select XXHASH
+ tristate
+
+config ZSTD_COMPRESS
+ select ZSTD_COMMON
+ tristate
+
+config ZSTD_DECOMPRESS
+ select ZSTD_COMMON
+ tristate
+
source "lib/xz/Kconfig"
#
@@ -231,11 +242,15 @@ config DECOMPRESS_LZ4
select LZ4_DECOMPRESS
tristate
+config DECOMPRESS_ZSTD
+ select ZSTD_DECOMPRESS
+ tristate
+
#
# Generic allocator support is selected if needed
#
config GENERIC_ALLOCATOR
- boolean
+ bool
#
# reed solomon support is select'ed if needed
@@ -244,25 +259,26 @@ config REED_SOLOMON
tristate
config REED_SOLOMON_ENC8
- boolean
+ bool
config REED_SOLOMON_DEC8
- boolean
+ bool
config REED_SOLOMON_ENC16
- boolean
+ bool
config REED_SOLOMON_DEC16
- boolean
+ bool
#
# BCH support is selected if needed
#
config BCH
tristate
+ select BITREVERSE
config BCH_CONST_PARAMS
- boolean
+ bool
help
Drivers may select this option to force specific constant
values for parameters 'm' (Galois field order) and 't'
@@ -298,7 +314,7 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed
#
config TEXTSEARCH
- boolean
+ bool
config TEXTSEARCH_KMP
tristate
@@ -310,24 +326,71 @@ config TEXTSEARCH_FSM
tristate
config BTREE
- boolean
+ bool
+
+config INTERVAL_TREE
+ bool
+ help
+ Simple, embeddable, interval-tree. Can find the start of an
+ overlapping range in log(n) time and then iterate over all
+ overlapping nodes. The algorithm is implemented as an
+ augmented rbtree.
+
+ See:
+
+ Documentation/core-api/rbtree.rst
+
+ for more information.
+
+config INTERVAL_TREE_SPAN_ITER
+ bool
+ depends on INTERVAL_TREE
+
+config XARRAY_MULTI
+ bool
+ help
+ Support entries which occupy multiple consecutive indices in the
+ XArray.
+
+config ASSOCIATIVE_ARRAY
+ bool
+ help
+ Generic associative array. Can be searched and iterated over whilst
+ it is being modified. It is also reasonably quick to search and
+ modify. The algorithms are non-recursive, and the trees are highly
+ capacious.
+
+ See:
+
+ Documentation/core-api/assoc_array.rst
+
+ for more information.
+
+config CLOSURES
+ bool
config HAS_IOMEM
- boolean
+ bool
depends on !NO_IOMEM
- select GENERIC_IO
default y
config HAS_IOPORT
- boolean
- depends on HAS_IOMEM && !NO_IOPORT
- default y
+ bool
-config HAS_DMA
- boolean
- depends on !NO_DMA
+config HAS_IOPORT_MAP
+ bool
+ depends on HAS_IOMEM && !NO_IOPORT_MAP
default y
+source "kernel/dma/Kconfig"
+
+config SGL_ALLOC
+ bool
+ default n
+
+config IOMMU_HELPER
+ bool
+
config CHECK_SIGNATURE
bool
@@ -338,9 +401,8 @@ config CPUMASK_OFFSTACK
them on the stack. This is a bit more expensive, but avoids
stack overflow.
-config DISABLE_OBSOLETE_CPUMASK_FUNCTIONS
- bool "Disable obsolete cpumask functions" if DEBUG_PER_CPU_MAPS
- depends on BROKEN
+config FORCE_NR_CPUS
+ def_bool !SMP
config CPU_RMAP
bool
@@ -349,6 +411,38 @@ config CPU_RMAP
config DQL
bool
+config GLOB
+ bool
+# This actually supports modular compilation, but the module overhead
+# is ridiculous for the amount of code involved. Until an out-of-tree
+# driver asks for it, we'll just link it directly it into the kernel
+# when required. Since we're ignoring out-of-tree users, there's also
+# no need bother prompting for a manual decision:
+# prompt "glob_match() function"
+ help
+ This option provides a glob_match function for performing
+ simple text pattern matching. It originated in the ATA code
+ to blacklist particular drive models, but other device drivers
+ may need similar functionality.
+
+ All drivers in the Linux kernel tree that require this function
+ should automatically select this option. Say N unless you
+ are compiling an out-of tree driver which tells you that it
+ depends on this.
+
+config GLOB_SELFTEST
+ tristate "glob self-test on init"
+ depends on GLOB
+ help
+ This option enables a simple self-test of the glob_match
+ function on startup. It is primarily useful for people
+ working on the code to ensure they haven't introduced any
+ regressions.
+
+ It only adds a little bit of code and slows kernel boot (or
+ module load) by a small amount, so you're welcome to play with
+ it, but you probably don't need it.
+
#
# Netlink attribute parsing support is select'ed if needed
#
@@ -361,38 +455,16 @@ config NLATTR
config GENERIC_ATOMIC64
bool
-config ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
- def_bool y if GENERIC_ATOMIC64
-
config LRU_CACHE
tristate
-config AVERAGE
- bool "Averaging functions"
- help
- This option is provided for the case where no in-kernel-tree
- modules require averaging functions, but a module built outside
- the kernel tree does. Such modules that use library averaging
- functions require Y here.
-
- If unsure, say N.
-
config CLZ_TAB
bool
-config CORDIC
- tristate "CORDIC algorithm"
- help
- This option provides an implementation of the CORDIC algorithm;
- calculations are in fixed point. Module will be called cordic.
-
-config DDR
- bool "JEDEC DDR data"
+config IRQ_POLL
+ bool "IRQ polling library"
help
- Data from JEDEC specs for DDR SDRAM memories,
- particularly the AC timing parameters and addressing
- information. This data is useful for drivers handling
- DDR SDRAM controllers.
+ Helper library to poll interrupt mitigation using polling.
config MPILIB
tristate
@@ -404,13 +476,21 @@ config MPILIB
config SIGNATURE
tristate
- depends on KEYS && CRYPTO
- select CRYPTO_SHA1
+ depends on KEYS
+ select CRYPTO_LIB_SHA1
select MPILIB
help
Digital signature verification. Currently only RSA is supported.
Implementation is done using GnuPG MPI library
+config DIMLIB
+ tristate
+ depends on NET
+ help
+ Dynamic Interrupt Moderation library.
+ Implements an algorithm for dynamically changing CQ moderation values
+ according to run time performance.
+
#
# libfdt files, only selected if needed.
#
@@ -423,8 +503,149 @@ config OID_REGISTRY
Enable fast lookup object identifier registry.
config UCS2_STRING
- tristate
+ tristate
+
+#
+# generic vdso
+#
+source "lib/vdso/Kconfig"
source "lib/fonts/Kconfig"
+config SG_SPLIT
+ def_bool n
+ help
+ Provides a helper to split scatterlists into chunks, each chunk being
+ a scatterlist. This should be selected by a driver or an API which
+ whishes to split a scatterlist amongst multiple DMA channels.
+
+config SG_POOL
+ def_bool n
+ help
+ Provides a helper to allocate chained scatterlists. This should be
+ selected by a driver or an API which whishes to allocate chained
+ scatterlist.
+
+#
+# sg chaining option
+#
+
+config ARCH_NO_SG_CHAIN
+ def_bool n
+
+config ARCH_HAS_PMEM_API
+ bool
+
+config MEMREGION
+ bool
+
+config ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION
+ bool
+
+config GENERIC_CPU_CACHE_MAINTENANCE
+ bool
+
+config ARCH_HAS_MEMREMAP_COMPAT_ALIGN
+ bool
+
+# use memcpy to implement user copies for nommu architectures
+config UACCESS_MEMCPY
+ bool
+
+config ARCH_HAS_UACCESS_FLUSHCACHE
+ bool
+
+# arch has a concept of a recoverable synchronous exception due to a
+# memory-read error like x86 machine-check or ARM data-abort, and
+# implements copy_mc_to_{user,kernel} to abort and report
+# 'bytes-transferred' if that exception fires when accessing the source
+# buffer.
+config ARCH_HAS_COPY_MC
+ bool
+
+# Temporary. Goes away when all archs are cleaned up
+config ARCH_STACKWALK
+ bool
+
+config STACKDEPOT
+ bool
+ select STACKTRACE
+ help
+ Stack depot: stack trace storage that avoids duplication
+
+config STACKDEPOT_ALWAYS_INIT
+ bool
+ select STACKDEPOT
+ help
+ Always initialize stack depot during early boot
+
+config STACKDEPOT_MAX_FRAMES
+ int "Maximum number of frames in trace saved in stack depot"
+ range 1 256
+ default 64
+ depends on STACKDEPOT
+
+config REF_TRACKER
+ bool
+ depends on STACKTRACE_SUPPORT
+ select STACKDEPOT
+
+config SBITMAP
+ bool
+
+config PARMAN
+ tristate "parman" if COMPILE_TEST
+
+config OBJAGG
+ tristate "objagg" if COMPILE_TEST
+
+config LWQ_TEST
+ bool "Boot-time test for lwq queuing"
+ help
+ Run boot-time test of light-weight queuing.
+
endmenu
+
+config GENERIC_IOREMAP
+ bool
+
+config GENERIC_LIB_ASHLDI3
+ bool
+
+config GENERIC_LIB_ASHRDI3
+ bool
+
+config GENERIC_LIB_LSHRDI3
+ bool
+
+config GENERIC_LIB_MULDI3
+ bool
+
+config GENERIC_LIB_CMPDI2
+ bool
+
+config GENERIC_LIB_UCMPDI2
+ bool
+
+config GENERIC_LIB_DEVMEM_IS_ALLOWED
+ bool
+
+config PLDMFW
+ bool
+ select CRC32
+ default n
+
+config ASN1_ENCODER
+ tristate
+
+config POLYNOMIAL
+ tristate
+
+config FIRMWARE_TABLE
+ bool
+
+config UNION_FIND
+ bool
+
+config MIN_HEAP
+ bool