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