# SPDX-License-Identifier: GPL-2.0-only
#
# Library configuration
#
config [31mCONFIG_BINARY_PRINTF[0m
def_bool n
menu "Library routines"
config [31mCONFIG_RAID6_PQ[0m
tristate
config [31mCONFIG_RAID6_PQ_BENCHMARK[0m
bool "Automatically choose fastest RAID6 PQ functions"
depends on [31mCONFIG_RAID6_PQ[0m
default y
help
Benchmark all available RAID6 PQ functions on init and choose the
fastest one.
config [31mCONFIG_PACKING[0m
bool "Generic bitfield packing and unpacking"
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 [31mCONFIG_BITREVERSE[0m
tristate
config [31mCONFIG_HAVE_ARCH_BITREVERSE[0m
bool
default n
depends on [31mCONFIG_BITREVERSE[0m
help
This option enables the use of hardware bit-reversal instructions on
architectures which support such operations.
config [31mCONFIG_GENERIC_STRNCPY_FROM_USER[0m
bool
config [31mCONFIG_GENERIC_STRNLEN_USER[0m
bool
config [31mCONFIG_GENERIC_NET_UTILS[0m
bool
config [31mCONFIG_GENERIC_FIND_FIRST_BIT[0m
bool
source "lib/math/Kconfig"
config [31mCONFIG_NO_GENERIC_PCI_IOPORT_MAP[0m
bool
config [31mCONFIG_GENERIC_PCI_IOMAP[0m
bool
config [31mCONFIG_GENERIC_IOMAP[0m
bool
select [31mCONFIG_GENERIC_PCI_IOMAP[0m
config [31mCONFIG_STMP_DEVICE[0m
bool
config [31mCONFIG_ARCH_USE_CMPXCHG_LOCKREF[0m
bool
config [31mCONFIG_ARCH_HAS_FAST_MULTIPLIER[0m
bool
config [31mCONFIG_INDIRECT_PIO[0m
bool "Access I/O in non-MMIO mode"
depends on [31mCONFIG_ARM64[0m
help
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 [31mCONFIG_PCI[0m/PCIe, then the
system can access the I/O devices with the mapped-logic PIO through
I/O accessors.
This way has relatively little I/O performance cost. Please make
sure your devices really need this configure item enabled.
When in doubt, say N.
config [31mCONFIG_CRC_CCITT[0m
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 [31mCONFIG_M[0m here.
config [31mCONFIG_CRC16[0m
tristate "CRC16 functions"
help
This option is provided for the case where no in-kernel-tree
modules require [31mCONFIG_CRC16[0m functions, but a module built outside
the kernel tree does. Such modules that use library [31mCONFIG_CRC16[0m
functions require [31mCONFIG_M[0m here.
config [31mCONFIG_CRC_T10DIF[0m
tristate "CRC calculation for the T10 Data Integrity Field"
select [31mCONFIG_CRYPTO[0m
select [31mCONFIG_CRYPTO_CRCT10DIF[0m
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
[31mCONFIG_SCSI[0m data integrity subsystem.
config [31mCONFIG_CRC_ITU_T[0m
tristate "CRC ITU-T V.41 functions"
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 [31mCONFIG_M[0m here.
config [31mCONFIG_CRC32[0m
tristate "CRC32/CRC32c functions"
default y
select [31mCONFIG_BITREVERSE[0m
help
This option is provided for the case where no in-kernel-tree
modules require [31mCONFIG_CRC32[0m/CRC32c functions, but a module built outside
the kernel tree does. Such modules that use library [31mCONFIG_CRC32[0m/CRC32c
functions require [31mCONFIG_M[0m here.
config [31mCONFIG_CRC32_SELFTEST[0m
tristate "CRC32 perform self test on init"
depends on [31mCONFIG_CRC32[0m
help
This option enables the [31mCONFIG_CRC32[0m 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 [31mCONFIG_CRC32[0m
default [31mCONFIG_CRC32_SLICEBY8[0m
help
This option allows a kernel builder to override the default choice
of [31mCONFIG_CRC32[0m algorithm. Choose the default ("slice by 8") unless you
know that you need one of the others.
config [31mCONFIG_CRC32_SLICEBY8[0m
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 [31mCONFIG_CRC32_SLICEBY4[0m
bool "Slice by 4 bytes"
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.
config [31mCONFIG_CRC32_SARWATE[0m
bool "Sarwate's Algorithm (one byte at a time)"
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.
Only choose this option if you know what you are doing.
config [31mCONFIG_CRC32_BIT[0m
bool "Classic Algorithm (one bit at a time)"
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.
endchoice
config [31mCONFIG_CRC64[0m
tristate "CRC64 functions"
help
This option is provided for the case where no in-kernel-tree
modules require [31mCONFIG_CRC64[0m functions, but a module built outside
the kernel tree does. Such modules that use library [31mCONFIG_CRC64[0m
functions require [31mCONFIG_M[0m here.
config [31mCONFIG_CRC4[0m
tristate "CRC4 functions"
help
This option is provided for the case where no in-kernel-tree
modules require [31mCONFIG_CRC4[0m functions, but a module built outside
the kernel tree does. Such modules that use library [31mCONFIG_CRC4[0m
functions require [31mCONFIG_M[0m here.
config [31mCONFIG_CRC7[0m
tristate "CRC7 functions"
help
This option is provided for the case where no in-kernel-tree
modules require [31mCONFIG_CRC7[0m functions, but a module built outside
the kernel tree does. Such modules that use library [31mCONFIG_CRC7[0m
functions require [31mCONFIG_M[0m here.
config [31mCONFIG_LIBCRC32C[0m
tristate "CRC32c (Castagnoli, et al) Cyclic Redundancy-Check"
select [31mCONFIG_CRYPTO[0m
select [31mCONFIG_CRYPTO_CRC32C[0m
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 [31mCONFIG_M[0m here. See Castagnoli93.
Module will be libcrc32c.
config [31mCONFIG_CRC8[0m
tristate "CRC8 function"
help
This option provides [31mCONFIG_CRC8[0m function. Drivers may select this
when they need to do cyclic redundancy check according [31mCONFIG_CRC8[0m
algorithm. Module will be called crc8.
config [31mCONFIG_XXHASH[0m
tristate
config [31mCONFIG_AUDIT_GENERIC[0m
bool
depends on [31mCONFIG_AUDIT[0m && ![31mCONFIG_AUDIT_ARCH[0m
default y
config [31mCONFIG_AUDIT_ARCH_COMPAT_GENERIC[0m
bool
default n
config [31mCONFIG_AUDIT_COMPAT_GENERIC[0m
bool
depends on [31mCONFIG_AUDIT_GENERIC[0m && [31mCONFIG_AUDIT_ARCH_COMPAT_GENERIC[0m && [31mCONFIG_COMPAT[0m
default y
config [31mCONFIG_RANDOM32_SELFTEST[0m
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 [31mCONFIG_842_COMPRESS[0m
select [31mCONFIG_CRC32[0m
tristate
config [31mCONFIG_842_DECOMPRESS[0m
select [31mCONFIG_CRC32[0m
tristate
config [31mCONFIG_ZLIB_INFLATE[0m
tristate
config [31mCONFIG_ZLIB_DEFLATE[0m
tristate
select [31mCONFIG_BITREVERSE[0m
config [31mCONFIG_LZO_COMPRESS[0m
tristate
config [31mCONFIG_LZO_DECOMPRESS[0m
tristate
config [31mCONFIG_LZ4_COMPRESS[0m
tristate
config [31mCONFIG_LZ4HC_COMPRESS[0m
tristate
config [31mCONFIG_LZ4_DECOMPRESS[0m
tristate
config [31mCONFIG_ZSTD_COMPRESS[0m
select [31mCONFIG_XXHASH[0m
tristate
config [31mCONFIG_ZSTD_DECOMPRESS[0m
select [31mCONFIG_XXHASH[0m
tristate
source "lib/xz/Kconfig"
#
# These all provide a common interface (hence the apparent duplication with
# [31mCONFIG_ZLIB_INFLATE[0m; [31mCONFIG_DECOMPRESS_GZIP[0m is just a wrapper.)
#
config [31mCONFIG_DECOMPRESS_GZIP[0m
select [31mCONFIG_ZLIB_INFLATE[0m
tristate
config [31mCONFIG_DECOMPRESS_BZIP2[0m
tristate
config [31mCONFIG_DECOMPRESS_LZMA[0m
tristate
config [31mCONFIG_DECOMPRESS_XZ[0m
select [31mCONFIG_XZ_DEC[0m
tristate
config [31mCONFIG_DECOMPRESS_LZO[0m
select [31mCONFIG_LZO_DECOMPRESS[0m
tristate
config [31mCONFIG_DECOMPRESS_LZ4[0m
select [31mCONFIG_LZ4_DECOMPRESS[0m
tristate
#
# Generic allocator support is selected if needed
#
config [31mCONFIG_GENERIC_ALLOCATOR[0m
bool
#
# reed solomon support is select'ed if needed
#
config [31mCONFIG_REED_SOLOMON[0m
tristate
config [31mCONFIG_REED_SOLOMON_ENC8[0m
bool
config [31mCONFIG_REED_SOLOMON_DEC8[0m
bool
config [31mCONFIG_REED_SOLOMON_ENC16[0m
bool
config [31mCONFIG_REED_SOLOMON_DEC16[0m
bool
#
# [31mCONFIG_BCH[0m support is selected if needed
#
config [31mCONFIG_BCH[0m
tristate
config [31mCONFIG_BCH_CONST_PARAMS[0m
bool
help
Drivers may select this option to force specific constant
values for parameters 'm' (Galois field order) and 't'
(error correction capability). Those specific values must
be set by declaring default values for symbols [31mCONFIG_BCH_CONST_M[0m
and [31mCONFIG_BCH_CONST_T[0m.
Doing so will enable extra compiler optimizations,
improving encoding and decoding performance up to 2x for
usual (m,t) values (typically such that m*t < 200).
When this option is selected, the [31mCONFIG_BCH[0m library supports
only a single (m,t) configuration. This is mainly useful
for NAND flash board drivers requiring known, fixed [31mCONFIG_BCH[0m
parameters.
config [31mCONFIG_BCH_CONST_M[0m
int
range 5 15
help
Constant value for Galois field order 'm'. If 'k' is the
number of data bits to protect, 'm' should be chosen such
that (k + m*t) <= 2**m - 1.
Drivers should declare a default value for this symbol if
they select option [31mCONFIG_BCH_CONST_PARAMS[0m.
config [31mCONFIG_BCH_CONST_T[0m
int
help
Constant value for error correction capability in bits 't'.
Drivers should declare a default value for this symbol if
they select option [31mCONFIG_BCH_CONST_PARAMS[0m.
#
# Textsearch support is select'ed if needed
#
config [31mCONFIG_TEXTSEARCH[0m
bool
config [31mCONFIG_TEXTSEARCH_KMP[0m
tristate
config [31mCONFIG_TEXTSEARCH_BM[0m
tristate
config [31mCONFIG_TEXTSEARCH_FSM[0m
tristate
config [31mCONFIG_BTREE[0m
bool
config [31mCONFIG_INTERVAL_TREE[0m
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/rbtree.txt
for more information.
config [31mCONFIG_XARRAY_MULTI[0m
bool
help
Support entries which occupy multiple consecutive indices in the
XArray.
config [31mCONFIG_ASSOCIATIVE_ARRAY[0m
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 [31mCONFIG_HAS_IOMEM[0m
bool
depends on ![31mCONFIG_NO_IOMEM[0m
select [31mCONFIG_GENERIC_IO[0m
default y
config [31mCONFIG_HAS_IOPORT_MAP[0m
bool
depends on [31mCONFIG_HAS_IOMEM[0m && ![31mCONFIG_NO_IOPORT_MAP[0m
default y
source "kernel/dma/Kconfig"
config [31mCONFIG_SGL_ALLOC[0m
bool
default n
config [31mCONFIG_IOMMU_HELPER[0m
bool
config [31mCONFIG_CHECK_SIGNATURE[0m
bool
config [31mCONFIG_CPUMASK_OFFSTACK[0m
bool "Force CPU masks off stack" if [31mCONFIG_DEBUG_PER_CPU_MAPS[0m
help
Use dynamic allocation for cpumask_var_t, instead of putting
them on the stack. This is a bit more expensive, but avoids
stack overflow.
config [31mCONFIG_CPU_RMAP[0m
bool
depends on [31mCONFIG_SMP[0m
config [31mCONFIG_DQL[0m
bool
config [31mCONFIG_GLOB[0m
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 [31mCONFIG_ATA[0m 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 [31mCONFIG_GLOB_SELFTEST[0m
tristate "glob self-test on init"
depends on [31mCONFIG_GLOB[0m
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
#
config [31mCONFIG_NLATTR[0m
bool
#
# Generic 64-bit atomic support is selected if needed
#
config [31mCONFIG_GENERIC_ATOMIC64[0m
bool
config [31mCONFIG_LRU_CACHE[0m
tristate
config [31mCONFIG_CLZ_TAB[0m
bool
config [31mCONFIG_IRQ_POLL[0m
bool "IRQ polling library"
help
Helper library to poll interrupt mitigation using polling.
config [31mCONFIG_MPILIB[0m
tristate
select [31mCONFIG_CLZ_TAB[0m
help
Multiprecision maths library from GnuPG.
It is used to implement RSA digital signature verification,
which is used by [31mCONFIG_IMA[0m/[31mCONFIG_EVM[0m digital signature extension.
config [31mCONFIG_SIGNATURE[0m
tristate
depends on [31mCONFIG_KEYS[0m
select [31mCONFIG_CRYPTO[0m
select [31mCONFIG_CRYPTO_SHA1[0m
select [31mCONFIG_MPILIB[0m
help
Digital signature verification. Currently only RSA is supported.
Implementation is done using GnuPG MPI library
config [31mCONFIG_DIMLIB[0m
bool
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.
#
config [31mCONFIG_LIBFDT[0m
bool
config [31mCONFIG_OID_REGISTRY[0m
tristate
help
Enable fast lookup object identifier registry.
config [31mCONFIG_UCS2_STRING[0m
tristate
#
# generic vdso
#
source "lib/vdso/Kconfig"
source "lib/fonts/Kconfig"
config [31mCONFIG_SG_SPLIT[0m
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 [31mCONFIG_SG_POOL[0m
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 [31mCONFIG_ARCH_NO_SG_CHAIN[0m
def_bool n
config [31mCONFIG_ARCH_HAS_PMEM_API[0m
bool
# use memcpy to implement user copies for nommu architectures
config [31mCONFIG_UACCESS_MEMCPY[0m
bool
config [31mCONFIG_ARCH_HAS_UACCESS_FLUSHCACHE[0m
bool
config [31mCONFIG_ARCH_HAS_UACCESS_MCSAFE[0m
bool
# Temporary. Goes away when all archs are cleaned up
config [31mCONFIG_ARCH_STACKWALK[0m
bool
config [31mCONFIG_STACKDEPOT[0m
bool
select [31mCONFIG_STACKTRACE[0m
config [31mCONFIG_SBITMAP[0m
bool
config [31mCONFIG_PARMAN[0m
tristate "parman" if [31mCONFIG_COMPILE_TEST[0m
config [31mCONFIG_OBJAGG[0m
tristate "objagg" if [31mCONFIG_COMPILE_TEST[0m
config [31mCONFIG_STRING_SELFTEST[0m
tristate "Test string functions"
endmenu
config [31mCONFIG_GENERIC_LIB_ASHLDI3[0m
bool
config [31mCONFIG_GENERIC_LIB_ASHRDI3[0m
bool
config [31mCONFIG_GENERIC_LIB_LSHRDI3[0m
bool
config [31mCONFIG_GENERIC_LIB_MULDI3[0m
bool
config [31mCONFIG_GENERIC_LIB_CMPDI2[0m
bool
config [31mCONFIG_GENERIC_LIB_UCMPDI2[0m
bool