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