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 default y 451 452config HAS_IOPORT_MAP 453 bool 454 depends on HAS_IOMEM && !NO_IOPORT_MAP 455 default y 456 457source "kernel/dma/Kconfig" 458 459config SGL_ALLOC 460 bool 461 default n 462 463config IOMMU_HELPER 464 bool 465 466config CHECK_SIGNATURE 467 bool 468 469config CPUMASK_OFFSTACK 470 bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS 471 help 472 Use dynamic allocation for cpumask_var_t, instead of putting 473 them on the stack. This is a bit more expensive, but avoids 474 stack overflow. 475 476config CPU_RMAP 477 bool 478 depends on SMP 479 480config DQL 481 bool 482 483config GLOB 484 bool 485# This actually supports modular compilation, but the module overhead 486# is ridiculous for the amount of code involved. Until an out-of-tree 487# driver asks for it, we'll just link it directly it into the kernel 488# when required. Since we're ignoring out-of-tree users, there's also 489# no need bother prompting for a manual decision: 490# prompt "glob_match() function" 491 help 492 This option provides a glob_match function for performing 493 simple text pattern matching. It originated in the ATA code 494 to blacklist particular drive models, but other device drivers 495 may need similar functionality. 496 497 All drivers in the Linux kernel tree that require this function 498 should automatically select this option. Say N unless you 499 are compiling an out-of tree driver which tells you that it 500 depends on this. 501 502config GLOB_SELFTEST 503 tristate "glob self-test on init" 504 depends on GLOB 505 help 506 This option enables a simple self-test of the glob_match 507 function on startup. It is primarily useful for people 508 working on the code to ensure they haven't introduced any 509 regressions. 510 511 It only adds a little bit of code and slows kernel boot (or 512 module load) by a small amount, so you're welcome to play with 513 it, but you probably don't need it. 514 515# 516# Netlink attribute parsing support is select'ed if needed 517# 518config NLATTR 519 bool 520 521# 522# Generic 64-bit atomic support is selected if needed 523# 524config GENERIC_ATOMIC64 525 bool 526 527config LRU_CACHE 528 tristate 529 530config CLZ_TAB 531 bool 532 533config IRQ_POLL 534 bool "IRQ polling library" 535 help 536 Helper library to poll interrupt mitigation using polling. 537 538config MPILIB 539 tristate 540 select CLZ_TAB 541 help 542 Multiprecision maths library from GnuPG. 543 It is used to implement RSA digital signature verification, 544 which is used by IMA/EVM digital signature extension. 545 546config SIGNATURE 547 tristate 548 depends on KEYS 549 select CRYPTO 550 select CRYPTO_SHA1 551 select MPILIB 552 help 553 Digital signature verification. Currently only RSA is supported. 554 Implementation is done using GnuPG MPI library 555 556config DIMLIB 557 bool 558 help 559 Dynamic Interrupt Moderation library. 560 Implements an algorithm for dynamically changing CQ moderation values 561 according to run time performance. 562 563# 564# libfdt files, only selected if needed. 565# 566config LIBFDT 567 bool 568 569config OID_REGISTRY 570 tristate 571 help 572 Enable fast lookup object identifier registry. 573 574config UCS2_STRING 575 tristate 576 577# 578# generic vdso 579# 580source "lib/vdso/Kconfig" 581 582source "lib/fonts/Kconfig" 583 584config SG_SPLIT 585 def_bool n 586 help 587 Provides a helper to split scatterlists into chunks, each chunk being 588 a scatterlist. This should be selected by a driver or an API which 589 whishes to split a scatterlist amongst multiple DMA channels. 590 591config SG_POOL 592 def_bool n 593 help 594 Provides a helper to allocate chained scatterlists. This should be 595 selected by a driver or an API which whishes to allocate chained 596 scatterlist. 597 598# 599# sg chaining option 600# 601 602config ARCH_NO_SG_CHAIN 603 def_bool n 604 605config ARCH_HAS_PMEM_API 606 bool 607 608# use memcpy to implement user copies for nommu architectures 609config UACCESS_MEMCPY 610 bool 611 612config ARCH_HAS_UACCESS_FLUSHCACHE 613 bool 614 615config ARCH_HAS_UACCESS_MCSAFE 616 bool 617 618# Temporary. Goes away when all archs are cleaned up 619config ARCH_STACKWALK 620 bool 621 622config STACKDEPOT 623 bool 624 select STACKTRACE 625 626config SBITMAP 627 bool 628 629config PARMAN 630 tristate "parman" if COMPILE_TEST 631 632config OBJAGG 633 tristate "objagg" if COMPILE_TEST 634 635config STRING_SELFTEST 636 tristate "Test string functions" 637 638endmenu 639 640config GENERIC_LIB_ASHLDI3 641 bool 642 643config GENERIC_LIB_ASHRDI3 644 bool 645 646config GENERIC_LIB_LSHRDI3 647 bool 648 649config GENERIC_LIB_MULDI3 650 bool 651 652config GENERIC_LIB_CMPDI2 653 bool 654 655config GENERIC_LIB_UCMPDI2 656 bool 657