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 select BITREVERSE 419 420config BCH_CONST_PARAMS 421 bool 422 help 423 Drivers may select this option to force specific constant 424 values for parameters 'm' (Galois field order) and 't' 425 (error correction capability). Those specific values must 426 be set by declaring default values for symbols BCH_CONST_M 427 and BCH_CONST_T. 428 Doing so will enable extra compiler optimizations, 429 improving encoding and decoding performance up to 2x for 430 usual (m,t) values (typically such that m*t < 200). 431 When this option is selected, the BCH library supports 432 only a single (m,t) configuration. This is mainly useful 433 for NAND flash board drivers requiring known, fixed BCH 434 parameters. 435 436config BCH_CONST_M 437 int 438 range 5 15 439 help 440 Constant value for Galois field order 'm'. If 'k' is the 441 number of data bits to protect, 'm' should be chosen such 442 that (k + m*t) <= 2**m - 1. 443 Drivers should declare a default value for this symbol if 444 they select option BCH_CONST_PARAMS. 445 446config BCH_CONST_T 447 int 448 help 449 Constant value for error correction capability in bits 't'. 450 Drivers should declare a default value for this symbol if 451 they select option BCH_CONST_PARAMS. 452 453# 454# Textsearch support is select'ed if needed 455# 456config TEXTSEARCH 457 bool 458 459config TEXTSEARCH_KMP 460 tristate 461 462config TEXTSEARCH_BM 463 tristate 464 465config TEXTSEARCH_FSM 466 tristate 467 468config BTREE 469 bool 470 471config INTERVAL_TREE 472 bool 473 help 474 Simple, embeddable, interval-tree. Can find the start of an 475 overlapping range in log(n) time and then iterate over all 476 overlapping nodes. The algorithm is implemented as an 477 augmented rbtree. 478 479 See: 480 481 Documentation/core-api/rbtree.rst 482 483 for more information. 484 485config INTERVAL_TREE_SPAN_ITER 486 bool 487 depends on INTERVAL_TREE 488 489config XARRAY_MULTI 490 bool 491 help 492 Support entries which occupy multiple consecutive indices in the 493 XArray. 494 495config ASSOCIATIVE_ARRAY 496 bool 497 help 498 Generic associative array. Can be searched and iterated over whilst 499 it is being modified. It is also reasonably quick to search and 500 modify. The algorithms are non-recursive, and the trees are highly 501 capacious. 502 503 See: 504 505 Documentation/core-api/assoc_array.rst 506 507 for more information. 508 509config HAS_IOMEM 510 bool 511 depends on !NO_IOMEM 512 default y 513 514config HAS_IOPORT 515 bool 516 517config HAS_IOPORT_MAP 518 bool 519 depends on HAS_IOMEM && !NO_IOPORT_MAP 520 default y 521 522source "kernel/dma/Kconfig" 523 524config SGL_ALLOC 525 bool 526 default n 527 528config IOMMU_HELPER 529 bool 530 531config CHECK_SIGNATURE 532 bool 533 534config CPUMASK_OFFSTACK 535 bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS 536 help 537 Use dynamic allocation for cpumask_var_t, instead of putting 538 them on the stack. This is a bit more expensive, but avoids 539 stack overflow. 540 541config FORCE_NR_CPUS 542 def_bool !SMP 543 544config CPU_RMAP 545 bool 546 depends on SMP 547 548config DQL 549 bool 550 551config GLOB 552 bool 553# This actually supports modular compilation, but the module overhead 554# is ridiculous for the amount of code involved. Until an out-of-tree 555# driver asks for it, we'll just link it directly it into the kernel 556# when required. Since we're ignoring out-of-tree users, there's also 557# no need bother prompting for a manual decision: 558# prompt "glob_match() function" 559 help 560 This option provides a glob_match function for performing 561 simple text pattern matching. It originated in the ATA code 562 to blacklist particular drive models, but other device drivers 563 may need similar functionality. 564 565 All drivers in the Linux kernel tree that require this function 566 should automatically select this option. Say N unless you 567 are compiling an out-of tree driver which tells you that it 568 depends on this. 569 570config GLOB_SELFTEST 571 tristate "glob self-test on init" 572 depends on GLOB 573 help 574 This option enables a simple self-test of the glob_match 575 function on startup. It is primarily useful for people 576 working on the code to ensure they haven't introduced any 577 regressions. 578 579 It only adds a little bit of code and slows kernel boot (or 580 module load) by a small amount, so you're welcome to play with 581 it, but you probably don't need it. 582 583# 584# Netlink attribute parsing support is select'ed if needed 585# 586config NLATTR 587 bool 588 589# 590# Generic 64-bit atomic support is selected if needed 591# 592config GENERIC_ATOMIC64 593 bool 594 595config LRU_CACHE 596 tristate 597 598config CLZ_TAB 599 bool 600 601config IRQ_POLL 602 bool "IRQ polling library" 603 help 604 Helper library to poll interrupt mitigation using polling. 605 606config MPILIB 607 tristate 608 select CLZ_TAB 609 help 610 Multiprecision maths library from GnuPG. 611 It is used to implement RSA digital signature verification, 612 which is used by IMA/EVM digital signature extension. 613 614config SIGNATURE 615 tristate 616 depends on KEYS 617 select CRYPTO 618 select CRYPTO_SHA1 619 select MPILIB 620 help 621 Digital signature verification. Currently only RSA is supported. 622 Implementation is done using GnuPG MPI library 623 624config DIMLIB 625 bool 626 help 627 Dynamic Interrupt Moderation library. 628 Implements an algorithm for dynamically changing CQ moderation values 629 according to run time performance. 630 631# 632# libfdt files, only selected if needed. 633# 634config LIBFDT 635 bool 636 637config OID_REGISTRY 638 tristate 639 help 640 Enable fast lookup object identifier registry. 641 642config UCS2_STRING 643 tristate 644 645# 646# generic vdso 647# 648source "lib/vdso/Kconfig" 649 650source "lib/fonts/Kconfig" 651 652config SG_SPLIT 653 def_bool n 654 help 655 Provides a helper to split scatterlists into chunks, each chunk being 656 a scatterlist. This should be selected by a driver or an API which 657 whishes to split a scatterlist amongst multiple DMA channels. 658 659config SG_POOL 660 def_bool n 661 help 662 Provides a helper to allocate chained scatterlists. This should be 663 selected by a driver or an API which whishes to allocate chained 664 scatterlist. 665 666# 667# sg chaining option 668# 669 670config ARCH_NO_SG_CHAIN 671 def_bool n 672 673config ARCH_HAS_PMEM_API 674 bool 675 676config MEMREGION 677 bool 678 679config ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION 680 bool 681 682config ARCH_HAS_MEMREMAP_COMPAT_ALIGN 683 bool 684 685# use memcpy to implement user copies for nommu architectures 686config UACCESS_MEMCPY 687 bool 688 689config ARCH_HAS_UACCESS_FLUSHCACHE 690 bool 691 692# arch has a concept of a recoverable synchronous exception due to a 693# memory-read error like x86 machine-check or ARM data-abort, and 694# implements copy_mc_to_{user,kernel} to abort and report 695# 'bytes-transferred' if that exception fires when accessing the source 696# buffer. 697config ARCH_HAS_COPY_MC 698 bool 699 700# Temporary. Goes away when all archs are cleaned up 701config ARCH_STACKWALK 702 bool 703 704config STACKDEPOT 705 bool 706 select STACKTRACE 707 708config STACKDEPOT_ALWAYS_INIT 709 bool 710 select STACKDEPOT 711 712config REF_TRACKER 713 bool 714 depends on STACKTRACE_SUPPORT 715 select STACKDEPOT 716 717config SBITMAP 718 bool 719 720config PARMAN 721 tristate "parman" if COMPILE_TEST 722 723config OBJAGG 724 tristate "objagg" if COMPILE_TEST 725 726endmenu 727 728config GENERIC_IOREMAP 729 bool 730 731config GENERIC_LIB_ASHLDI3 732 bool 733 734config GENERIC_LIB_ASHRDI3 735 bool 736 737config GENERIC_LIB_LSHRDI3 738 bool 739 740config GENERIC_LIB_MULDI3 741 bool 742 743config GENERIC_LIB_CMPDI2 744 bool 745 746config GENERIC_LIB_UCMPDI2 747 bool 748 749config GENERIC_LIB_DEVMEM_IS_ALLOWED 750 bool 751 752config PLDMFW 753 bool 754 default n 755 756config ASN1_ENCODER 757 tristate 758 759config POLYNOMIAL 760 tristate 761