linux/lib/Kconfig
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0-only
   2#
   3# Library configuration
   4#
   5
   6config BINARY_PRINTF
   7        def_bool n
   8
   9menu "Library routines"
  10
  11config RAID6_PQ
  12        tristate
  13
  14config RAID6_PQ_BENCHMARK
  15        bool "Automatically choose fastest RAID6 PQ functions"
  16        depends on RAID6_PQ
  17        default y
  18        help
  19          Benchmark all available RAID6 PQ functions on init and choose the
  20          fastest one.
  21
  22config PACKING
  23        bool "Generic bitfield packing and unpacking"
  24        default n
  25        help
  26          This option provides the packing() helper function, which permits
  27          converting bitfields between a CPU-usable representation and a
  28          memory representation that can have any combination of these quirks:
  29            - Is little endian (bytes are reversed within a 32-bit group)
  30            - The least-significant 32-bit word comes first (within a 64-bit
  31              group)
  32            - The most significant bit of a byte is at its right (bit 0 of a
  33              register description is numerically 2^7).
  34          Drivers may use these helpers to match the bit indices as described
  35          in the data sheets of the peripherals they are in control of.
  36
  37          When in doubt, say N.
  38
  39config BITREVERSE
  40        tristate
  41
  42config HAVE_ARCH_BITREVERSE
  43        bool
  44        default n
  45        depends on BITREVERSE
  46        help
  47          This option enables the use of hardware bit-reversal instructions on
  48          architectures which support such operations.
  49
  50config GENERIC_STRNCPY_FROM_USER
  51        bool
  52
  53config GENERIC_STRNLEN_USER
  54        bool
  55
  56config GENERIC_NET_UTILS
  57        bool
  58
  59config GENERIC_FIND_FIRST_BIT
  60        bool
  61
  62source "lib/math/Kconfig"
  63
  64config NO_GENERIC_PCI_IOPORT_MAP
  65        bool
  66
  67config GENERIC_PCI_IOMAP
  68        bool
  69
  70config GENERIC_IOMAP
  71        bool
  72        select GENERIC_PCI_IOMAP
  73
  74config STMP_DEVICE
  75        bool
  76
  77config ARCH_USE_CMPXCHG_LOCKREF
  78        bool
  79
  80config ARCH_HAS_FAST_MULTIPLIER
  81        bool
  82
  83config INDIRECT_PIO
  84        bool "Access I/O in non-MMIO mode"
  85        depends on ARM64
  86        help
  87          On some platforms where no separate I/O space exists, there are I/O
  88          hosts which can not be accessed in MMIO mode. Using the logical PIO
  89          mechanism, the host-local I/O resource can be mapped into system
  90          logic PIO space shared with MMIO hosts, such as PCI/PCIe, then the
  91          system can access the I/O devices with the mapped-logic PIO through
  92          I/O accessors.
  93
  94          This way has relatively little I/O performance cost. Please make
  95          sure your devices really need this configure item enabled.
  96
  97          When in doubt, say N.
  98
  99config CRC_CCITT
 100        tristate "CRC-CCITT functions"
 101        help
 102          This option is provided for the case where no in-kernel-tree
 103          modules require CRC-CCITT functions, but a module built outside
 104          the kernel tree does. Such modules that use library CRC-CCITT
 105          functions require M here.
 106
 107config CRC16
 108        tristate "CRC16 functions"
 109        help
 110          This option is provided for the case where no in-kernel-tree
 111          modules require CRC16 functions, but a module built outside
 112          the kernel tree does. Such modules that use library CRC16
 113          functions require M here.
 114
 115config CRC_T10DIF
 116        tristate "CRC calculation for the T10 Data Integrity Field"
 117        select CRYPTO
 118        select CRYPTO_CRCT10DIF
 119        help
 120          This option is only needed if a module that's not in the
 121          kernel tree needs to calculate CRC checks for use with the
 122          SCSI data integrity subsystem.
 123
 124config CRC_ITU_T
 125        tristate "CRC ITU-T V.41 functions"
 126        help
 127          This option is provided for the case where no in-kernel-tree
 128          modules require CRC ITU-T V.41 functions, but a module built outside
 129          the kernel tree does. Such modules that use library CRC ITU-T V.41
 130          functions require M here.
 131
 132config CRC32
 133        tristate "CRC32/CRC32c functions"
 134        default y
 135        select BITREVERSE
 136        help
 137          This option is provided for the case where no in-kernel-tree
 138          modules require CRC32/CRC32c functions, but a module built outside
 139          the kernel tree does. Such modules that use library CRC32/CRC32c
 140          functions require M here.
 141
 142config CRC32_SELFTEST
 143        tristate "CRC32 perform self test on init"
 144        depends on CRC32
 145        help
 146          This option enables the CRC32 library functions to perform a
 147          self test on initialization. The self test computes crc32_le
 148          and crc32_be over byte strings with random alignment and length
 149          and computes the total elapsed time and number of bytes processed.
 150
 151choice
 152        prompt "CRC32 implementation"
 153        depends on CRC32
 154        default CRC32_SLICEBY8
 155        help
 156          This option allows a kernel builder to override the default choice
 157          of CRC32 algorithm.  Choose the default ("slice by 8") unless you
 158          know that you need one of the others.
 159
 160config CRC32_SLICEBY8
 161        bool "Slice by 8 bytes"
 162        help
 163          Calculate checksum 8 bytes at a time with a clever slicing algorithm.
 164          This is the fastest algorithm, but comes with a 8KiB lookup table.
 165          Most modern processors have enough cache to hold this table without
 166          thrashing the cache.
 167
 168          This is the default implementation choice.  Choose this one unless
 169          you have a good reason not to.
 170
 171config CRC32_SLICEBY4
 172        bool "Slice by 4 bytes"
 173        help
 174          Calculate checksum 4 bytes at a time with a clever slicing algorithm.
 175          This is a bit slower than slice by 8, but has a smaller 4KiB lookup
 176          table.
 177
 178          Only choose this option if you know what you are doing.
 179
 180config CRC32_SARWATE
 181        bool "Sarwate's Algorithm (one byte at a time)"
 182        help
 183          Calculate checksum a byte at a time using Sarwate's algorithm.  This
 184          is not particularly fast, but has a small 256 byte lookup table.
 185
 186          Only choose this option if you know what you are doing.
 187
 188config CRC32_BIT
 189        bool "Classic Algorithm (one bit at a time)"
 190        help
 191          Calculate checksum one bit at a time.  This is VERY slow, but has
 192          no lookup table.  This is provided as a debugging option.
 193
 194          Only choose this option if you are debugging crc32.
 195
 196endchoice
 197
 198config CRC64
 199        tristate "CRC64 functions"
 200        help
 201          This option is provided for the case where no in-kernel-tree
 202          modules require CRC64 functions, but a module built outside
 203          the kernel tree does. Such modules that use library CRC64
 204          functions require M here.
 205
 206config CRC4
 207        tristate "CRC4 functions"
 208        help
 209          This option is provided for the case where no in-kernel-tree
 210          modules require CRC4 functions, but a module built outside
 211          the kernel tree does. Such modules that use library CRC4
 212          functions require M here.
 213
 214config CRC7
 215        tristate "CRC7 functions"
 216        help
 217          This option is provided for the case where no in-kernel-tree
 218          modules require CRC7 functions, but a module built outside
 219          the kernel tree does. Such modules that use library CRC7
 220          functions require M here.
 221
 222config LIBCRC32C
 223        tristate "CRC32c (Castagnoli, et al) Cyclic Redundancy-Check"
 224        select CRYPTO
 225        select CRYPTO_CRC32C
 226        help
 227          This option is provided for the case where no in-kernel-tree
 228          modules require CRC32c functions, but a module built outside the
 229          kernel tree does. Such modules that use library CRC32c functions
 230          require M here.  See Castagnoli93.
 231          Module will be libcrc32c.
 232
 233config CRC8
 234        tristate "CRC8 function"
 235        help
 236          This option provides CRC8 function. Drivers may select this
 237          when they need to do cyclic redundancy check according CRC8
 238          algorithm. Module will be called crc8.
 239
 240config XXHASH
 241        tristate
 242
 243config AUDIT_GENERIC
 244        bool
 245        depends on AUDIT && !AUDIT_ARCH
 246        default y
 247
 248config AUDIT_ARCH_COMPAT_GENERIC
 249        bool
 250        default n
 251
 252config AUDIT_COMPAT_GENERIC
 253        bool
 254        depends on AUDIT_GENERIC && AUDIT_ARCH_COMPAT_GENERIC && COMPAT
 255        default y
 256
 257config RANDOM32_SELFTEST
 258        bool "PRNG perform self test on init"
 259        help
 260          This option enables the 32 bit PRNG library functions to perform a
 261          self test on initialization.
 262
 263#
 264# compression support is select'ed if needed
 265#
 266config 842_COMPRESS
 267        select CRC32
 268        tristate
 269
 270config 842_DECOMPRESS
 271        select CRC32
 272        tristate
 273
 274config ZLIB_INFLATE
 275        tristate
 276
 277config ZLIB_DEFLATE
 278        tristate
 279        select BITREVERSE
 280
 281config LZO_COMPRESS
 282        tristate
 283
 284config LZO_DECOMPRESS
 285        tristate
 286
 287config LZ4_COMPRESS
 288        tristate
 289
 290config LZ4HC_COMPRESS
 291        tristate
 292
 293config LZ4_DECOMPRESS
 294        tristate
 295
 296config ZSTD_COMPRESS
 297        select XXHASH
 298        tristate
 299
 300config ZSTD_DECOMPRESS
 301        select XXHASH
 302        tristate
 303
 304source "lib/xz/Kconfig"
 305
 306#
 307# These all provide a common interface (hence the apparent duplication with
 308# ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
 309#
 310config DECOMPRESS_GZIP
 311        select ZLIB_INFLATE
 312        tristate
 313
 314config DECOMPRESS_BZIP2
 315        tristate
 316
 317config DECOMPRESS_LZMA
 318        tristate
 319
 320config DECOMPRESS_XZ
 321        select XZ_DEC
 322        tristate
 323
 324config DECOMPRESS_LZO
 325        select LZO_DECOMPRESS
 326        tristate
 327
 328config DECOMPRESS_LZ4
 329        select LZ4_DECOMPRESS
 330        tristate
 331
 332#
 333# Generic allocator support is selected if needed
 334#
 335config GENERIC_ALLOCATOR
 336        bool
 337
 338#
 339# reed solomon support is select'ed if needed
 340#
 341config REED_SOLOMON
 342        tristate
 343        
 344config REED_SOLOMON_ENC8
 345        bool
 346
 347config REED_SOLOMON_DEC8
 348        bool
 349
 350config REED_SOLOMON_ENC16
 351        bool
 352
 353config REED_SOLOMON_DEC16
 354        bool
 355
 356#
 357# BCH support is selected if needed
 358#
 359config BCH
 360        tristate
 361
 362config BCH_CONST_PARAMS
 363        bool
 364        help
 365          Drivers may select this option to force specific constant
 366          values for parameters 'm' (Galois field order) and 't'
 367          (error correction capability). Those specific values must
 368          be set by declaring default values for symbols BCH_CONST_M
 369          and BCH_CONST_T.
 370          Doing so will enable extra compiler optimizations,
 371          improving encoding and decoding performance up to 2x for
 372          usual (m,t) values (typically such that m*t < 200).
 373          When this option is selected, the BCH library supports
 374          only a single (m,t) configuration. This is mainly useful
 375          for NAND flash board drivers requiring known, fixed BCH
 376          parameters.
 377
 378config BCH_CONST_M
 379        int
 380        range 5 15
 381        help
 382          Constant value for Galois field order 'm'. If 'k' is the
 383          number of data bits to protect, 'm' should be chosen such
 384          that (k + m*t) <= 2**m - 1.
 385          Drivers should declare a default value for this symbol if
 386          they select option BCH_CONST_PARAMS.
 387
 388config BCH_CONST_T
 389        int
 390        help
 391          Constant value for error correction capability in bits 't'.
 392          Drivers should declare a default value for this symbol if
 393          they select option BCH_CONST_PARAMS.
 394
 395#
 396# Textsearch support is select'ed if needed
 397#
 398config TEXTSEARCH
 399        bool
 400
 401config TEXTSEARCH_KMP
 402        tristate
 403
 404config TEXTSEARCH_BM
 405        tristate
 406
 407config TEXTSEARCH_FSM
 408        tristate
 409
 410config BTREE
 411        bool
 412
 413config INTERVAL_TREE
 414        bool
 415        help
 416          Simple, embeddable, interval-tree. Can find the start of an
 417          overlapping range in log(n) time and then iterate over all
 418          overlapping nodes. The algorithm is implemented as an
 419          augmented rbtree.
 420
 421          See:
 422
 423                Documentation/rbtree.txt
 424
 425          for more information.
 426
 427config XARRAY_MULTI
 428        bool
 429        help
 430          Support entries which occupy multiple consecutive indices in the
 431          XArray.
 432
 433config ASSOCIATIVE_ARRAY
 434        bool
 435        help
 436          Generic associative array.  Can be searched and iterated over whilst
 437          it is being modified.  It is also reasonably quick to search and
 438          modify.  The algorithms are non-recursive, and the trees are highly
 439          capacious.
 440
 441          See:
 442
 443                Documentation/core-api/assoc_array.rst
 444
 445          for more information.
 446
 447config HAS_IOMEM
 448        bool
 449        depends on !NO_IOMEM
 450        select GENERIC_IO
 451        default y
 452
 453config HAS_IOPORT_MAP
 454        bool
 455        depends on HAS_IOMEM && !NO_IOPORT_MAP
 456        default y
 457
 458source "kernel/dma/Kconfig"
 459
 460config SGL_ALLOC
 461        bool
 462        default n
 463
 464config IOMMU_HELPER
 465        bool
 466
 467config CHECK_SIGNATURE
 468        bool
 469
 470config CPUMASK_OFFSTACK
 471        bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
 472        help
 473          Use dynamic allocation for cpumask_var_t, instead of putting
 474          them on the stack.  This is a bit more expensive, but avoids
 475          stack overflow.
 476
 477config CPU_RMAP
 478        bool
 479        depends on SMP
 480
 481config DQL
 482        bool
 483
 484config GLOB
 485        bool
 486#       This actually supports modular compilation, but the module overhead
 487#       is ridiculous for the amount of code involved.  Until an out-of-tree
 488#       driver asks for it, we'll just link it directly it into the kernel
 489#       when required.  Since we're ignoring out-of-tree users, there's also
 490#       no need bother prompting for a manual decision:
 491#       prompt "glob_match() function"
 492        help
 493          This option provides a glob_match function for performing
 494          simple text pattern matching.  It originated in the ATA code
 495          to blacklist particular drive models, but other device drivers
 496          may need similar functionality.
 497
 498          All drivers in the Linux kernel tree that require this function
 499          should automatically select this option.  Say N unless you
 500          are compiling an out-of tree driver which tells you that it
 501          depends on this.
 502
 503config GLOB_SELFTEST
 504        tristate "glob self-test on init"
 505        depends on GLOB
 506        help
 507          This option enables a simple self-test of the glob_match
 508          function on startup.  It is primarily useful for people
 509          working on the code to ensure they haven't introduced any
 510          regressions.
 511
 512          It only adds a little bit of code and slows kernel boot (or
 513          module load) by a small amount, so you're welcome to play with
 514          it, but you probably don't need it.
 515
 516#
 517# Netlink attribute parsing support is select'ed if needed
 518#
 519config NLATTR
 520        bool
 521
 522#
 523# Generic 64-bit atomic support is selected if needed
 524#
 525config GENERIC_ATOMIC64
 526       bool
 527
 528config LRU_CACHE
 529        tristate
 530
 531config CLZ_TAB
 532        bool
 533
 534config DDR
 535        bool "JEDEC DDR data"
 536        help
 537          Data from JEDEC specs for DDR SDRAM memories,
 538          particularly the AC timing parameters and addressing
 539          information. This data is useful for drivers handling
 540          DDR SDRAM controllers.
 541
 542config IRQ_POLL
 543        bool "IRQ polling library"
 544        help
 545          Helper library to poll interrupt mitigation using polling.
 546
 547config MPILIB
 548        tristate
 549        select CLZ_TAB
 550        help
 551          Multiprecision maths library from GnuPG.
 552          It is used to implement RSA digital signature verification,
 553          which is used by IMA/EVM digital signature extension.
 554
 555config SIGNATURE
 556        tristate
 557        depends on KEYS
 558        select CRYPTO
 559        select CRYPTO_SHA1
 560        select MPILIB
 561        help
 562          Digital signature verification. Currently only RSA is supported.
 563          Implementation is done using GnuPG MPI library
 564
 565#
 566# libfdt files, only selected if needed.
 567#
 568config LIBFDT
 569        bool
 570
 571config OID_REGISTRY
 572        tristate
 573        help
 574          Enable fast lookup object identifier registry.
 575
 576config UCS2_STRING
 577        tristate
 578
 579source "lib/fonts/Kconfig"
 580
 581config SG_SPLIT
 582        def_bool n
 583        help
 584         Provides a helper to split scatterlists into chunks, each chunk being
 585         a scatterlist. This should be selected by a driver or an API which
 586         whishes to split a scatterlist amongst multiple DMA channels.
 587
 588config SG_POOL
 589        def_bool n
 590        help
 591         Provides a helper to allocate chained scatterlists. This should be
 592         selected by a driver or an API which whishes to allocate chained
 593         scatterlist.
 594
 595#
 596# sg chaining option
 597#
 598
 599config ARCH_NO_SG_CHAIN
 600        def_bool n
 601
 602config ARCH_HAS_PMEM_API
 603        bool
 604
 605# use memcpy to implement user copies for nommu architectures
 606config UACCESS_MEMCPY
 607        bool
 608
 609config ARCH_HAS_UACCESS_FLUSHCACHE
 610        bool
 611
 612config ARCH_HAS_UACCESS_MCSAFE
 613        bool
 614
 615# Temporary. Goes away when all archs are cleaned up
 616config ARCH_STACKWALK
 617       bool
 618
 619config STACKDEPOT
 620        bool
 621        select STACKTRACE
 622
 623config SBITMAP
 624        bool
 625
 626config PARMAN
 627        tristate "parman" if COMPILE_TEST
 628
 629config STRING_SELFTEST
 630        tristate "Test string functions"
 631
 632endmenu
 633
 634config GENERIC_LIB_ASHLDI3
 635        bool
 636
 637config GENERIC_LIB_ASHRDI3
 638        bool
 639
 640config GENERIC_LIB_LSHRDI3
 641        bool
 642
 643config GENERIC_LIB_MULDI3
 644        bool
 645
 646config GENERIC_LIB_CMPDI2
 647        bool
 648
 649config GENERIC_LIB_UCMPDI2
 650        bool
 651
 652config OBJAGG
 653        tristate "objagg" if COMPILE_TEST
 654