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 ZLIB_DFLTCC 282 def_bool y 283 depends on S390 284 prompt "Enable s390x DEFLATE CONVERSION CALL support for kernel zlib" 285 help 286 Enable s390x hardware support for zlib in the kernel. 287 288config LZO_COMPRESS 289 tristate 290 291config LZO_DECOMPRESS 292 tristate 293 294config LZ4_COMPRESS 295 tristate 296 297config LZ4HC_COMPRESS 298 tristate 299 300config LZ4_DECOMPRESS 301 tristate 302 303config ZSTD_COMPRESS 304 select XXHASH 305 tristate 306 307config ZSTD_DECOMPRESS 308 select XXHASH 309 tristate 310 311source "lib/xz/Kconfig" 312 313# 314# These all provide a common interface (hence the apparent duplication with 315# ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.) 316# 317config DECOMPRESS_GZIP 318 select ZLIB_INFLATE 319 tristate 320 321config DECOMPRESS_BZIP2 322 tristate 323 324config DECOMPRESS_LZMA 325 tristate 326 327config DECOMPRESS_XZ 328 select XZ_DEC 329 tristate 330 331config DECOMPRESS_LZO 332 select LZO_DECOMPRESS 333 tristate 334 335config DECOMPRESS_LZ4 336 select LZ4_DECOMPRESS 337 tristate 338 339# 340# Generic allocator support is selected if needed 341# 342config GENERIC_ALLOCATOR 343 bool 344 345# 346# reed solomon support is select'ed if needed 347# 348config REED_SOLOMON 349 tristate 350 351config REED_SOLOMON_ENC8 352 bool 353 354config REED_SOLOMON_DEC8 355 bool 356 357config REED_SOLOMON_ENC16 358 bool 359 360config REED_SOLOMON_DEC16 361 bool 362 363# 364# BCH support is selected if needed 365# 366config BCH 367 tristate 368 369config BCH_CONST_PARAMS 370 bool 371 help 372 Drivers may select this option to force specific constant 373 values for parameters 'm' (Galois field order) and 't' 374 (error correction capability). Those specific values must 375 be set by declaring default values for symbols BCH_CONST_M 376 and BCH_CONST_T. 377 Doing so will enable extra compiler optimizations, 378 improving encoding and decoding performance up to 2x for 379 usual (m,t) values (typically such that m*t < 200). 380 When this option is selected, the BCH library supports 381 only a single (m,t) configuration. This is mainly useful 382 for NAND flash board drivers requiring known, fixed BCH 383 parameters. 384 385config BCH_CONST_M 386 int 387 range 5 15 388 help 389 Constant value for Galois field order 'm'. If 'k' is the 390 number of data bits to protect, 'm' should be chosen such 391 that (k + m*t) <= 2**m - 1. 392 Drivers should declare a default value for this symbol if 393 they select option BCH_CONST_PARAMS. 394 395config BCH_CONST_T 396 int 397 help 398 Constant value for error correction capability in bits 't'. 399 Drivers should declare a default value for this symbol if 400 they select option BCH_CONST_PARAMS. 401 402# 403# Textsearch support is select'ed if needed 404# 405config TEXTSEARCH 406 bool 407 408config TEXTSEARCH_KMP 409 tristate 410 411config TEXTSEARCH_BM 412 tristate 413 414config TEXTSEARCH_FSM 415 tristate 416 417config BTREE 418 bool 419 420config INTERVAL_TREE 421 bool 422 help 423 Simple, embeddable, interval-tree. Can find the start of an 424 overlapping range in log(n) time and then iterate over all 425 overlapping nodes. The algorithm is implemented as an 426 augmented rbtree. 427 428 See: 429 430 Documentation/rbtree.txt 431 432 for more information. 433 434config XARRAY_MULTI 435 bool 436 help 437 Support entries which occupy multiple consecutive indices in the 438 XArray. 439 440config ASSOCIATIVE_ARRAY 441 bool 442 help 443 Generic associative array. Can be searched and iterated over whilst 444 it is being modified. It is also reasonably quick to search and 445 modify. The algorithms are non-recursive, and the trees are highly 446 capacious. 447 448 See: 449 450 Documentation/core-api/assoc_array.rst 451 452 for more information. 453 454config HAS_IOMEM 455 bool 456 depends on !NO_IOMEM 457 default y 458 459config HAS_IOPORT_MAP 460 bool 461 depends on HAS_IOMEM && !NO_IOPORT_MAP 462 default y 463 464source "kernel/dma/Kconfig" 465 466config SGL_ALLOC 467 bool 468 default n 469 470config IOMMU_HELPER 471 bool 472 473config CHECK_SIGNATURE 474 bool 475 476config CPUMASK_OFFSTACK 477 bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS 478 help 479 Use dynamic allocation for cpumask_var_t, instead of putting 480 them on the stack. This is a bit more expensive, but avoids 481 stack overflow. 482 483config CPU_RMAP 484 bool 485 depends on SMP 486 487config DQL 488 bool 489 490config GLOB 491 bool 492# This actually supports modular compilation, but the module overhead 493# is ridiculous for the amount of code involved. Until an out-of-tree 494# driver asks for it, we'll just link it directly it into the kernel 495# when required. Since we're ignoring out-of-tree users, there's also 496# no need bother prompting for a manual decision: 497# prompt "glob_match() function" 498 help 499 This option provides a glob_match function for performing 500 simple text pattern matching. It originated in the ATA code 501 to blacklist particular drive models, but other device drivers 502 may need similar functionality. 503 504 All drivers in the Linux kernel tree that require this function 505 should automatically select this option. Say N unless you 506 are compiling an out-of tree driver which tells you that it 507 depends on this. 508 509config GLOB_SELFTEST 510 tristate "glob self-test on init" 511 depends on GLOB 512 help 513 This option enables a simple self-test of the glob_match 514 function on startup. It is primarily useful for people 515 working on the code to ensure they haven't introduced any 516 regressions. 517 518 It only adds a little bit of code and slows kernel boot (or 519 module load) by a small amount, so you're welcome to play with 520 it, but you probably don't need it. 521 522# 523# Netlink attribute parsing support is select'ed if needed 524# 525config NLATTR 526 bool 527 528# 529# Generic 64-bit atomic support is selected if needed 530# 531config GENERIC_ATOMIC64 532 bool 533 534config LRU_CACHE 535 tristate 536 537config CLZ_TAB 538 bool 539 540config IRQ_POLL 541 bool "IRQ polling library" 542 help 543 Helper library to poll interrupt mitigation using polling. 544 545config MPILIB 546 tristate 547 select CLZ_TAB 548 help 549 Multiprecision maths library from GnuPG. 550 It is used to implement RSA digital signature verification, 551 which is used by IMA/EVM digital signature extension. 552 553config SIGNATURE 554 tristate 555 depends on KEYS 556 select CRYPTO 557 select CRYPTO_SHA1 558 select MPILIB 559 help 560 Digital signature verification. Currently only RSA is supported. 561 Implementation is done using GnuPG MPI library 562 563config DIMLIB 564 bool 565 help 566 Dynamic Interrupt Moderation library. 567 Implements an algorithm for dynamically changing CQ moderation values 568 according to run time performance. 569 570# 571# libfdt files, only selected if needed. 572# 573config LIBFDT 574 bool 575 576config OID_REGISTRY 577 tristate 578 help 579 Enable fast lookup object identifier registry. 580 581config UCS2_STRING 582 tristate 583 584# 585# generic vdso 586# 587source "lib/vdso/Kconfig" 588 589source "lib/fonts/Kconfig" 590 591config SG_SPLIT 592 def_bool n 593 help 594 Provides a helper to split scatterlists into chunks, each chunk being 595 a scatterlist. This should be selected by a driver or an API which 596 whishes to split a scatterlist amongst multiple DMA channels. 597 598config SG_POOL 599 def_bool n 600 help 601 Provides a helper to allocate chained scatterlists. This should be 602 selected by a driver or an API which whishes to allocate chained 603 scatterlist. 604 605# 606# sg chaining option 607# 608 609config ARCH_NO_SG_CHAIN 610 def_bool n 611 612config ARCH_HAS_PMEM_API 613 bool 614 615config MEMREGION 616 bool 617 618# use memcpy to implement user copies for nommu architectures 619config UACCESS_MEMCPY 620 bool 621 622config ARCH_HAS_UACCESS_FLUSHCACHE 623 bool 624 625config ARCH_HAS_UACCESS_MCSAFE 626 bool 627 628# Temporary. Goes away when all archs are cleaned up 629config ARCH_STACKWALK 630 bool 631 632config STACKDEPOT 633 bool 634 select STACKTRACE 635 636config SBITMAP 637 bool 638 639config PARMAN 640 tristate "parman" if COMPILE_TEST 641 642config OBJAGG 643 tristate "objagg" if COMPILE_TEST 644 645config STRING_SELFTEST 646 tristate "Test string functions" 647 648endmenu 649 650config GENERIC_IOREMAP 651 bool 652 653config GENERIC_LIB_ASHLDI3 654 bool 655 656config GENERIC_LIB_ASHRDI3 657 bool 658 659config GENERIC_LIB_LSHRDI3 660 bool 661 662config GENERIC_LIB_MULDI3 663 bool 664 665config GENERIC_LIB_CMPDI2 666 bool 667 668config GENERIC_LIB_UCMPDI2 669 bool 670