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