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