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 CLOSURES 510 bool 511 512config HAS_IOMEM 513 bool 514 depends on !NO_IOMEM 515 default y 516 517config HAS_IOPORT 518 bool 519 520config HAS_IOPORT_MAP 521 bool 522 depends on HAS_IOMEM && !NO_IOPORT_MAP 523 default y 524 525source "kernel/dma/Kconfig" 526 527config SGL_ALLOC 528 bool 529 default n 530 531config IOMMU_HELPER 532 bool 533 534config CHECK_SIGNATURE 535 bool 536 537config CPUMASK_OFFSTACK 538 bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS 539 help 540 Use dynamic allocation for cpumask_var_t, instead of putting 541 them on the stack. This is a bit more expensive, but avoids 542 stack overflow. 543 544config FORCE_NR_CPUS 545 bool "Set number of CPUs at compile time" 546 depends on SMP && EXPERT && !COMPILE_TEST 547 help 548 Say Yes if you have NR_CPUS set to an actual number of possible 549 CPUs in your system, not to a default value. This forces the core 550 code to rely on compile-time value and optimize kernel routines 551 better. 552 553config CPU_RMAP 554 bool 555 depends on SMP 556 557config DQL 558 bool 559 560config GLOB 561 bool 562# This actually supports modular compilation, but the module overhead 563# is ridiculous for the amount of code involved. Until an out-of-tree 564# driver asks for it, we'll just link it directly it into the kernel 565# when required. Since we're ignoring out-of-tree users, there's also 566# no need bother prompting for a manual decision: 567# prompt "glob_match() function" 568 help 569 This option provides a glob_match function for performing 570 simple text pattern matching. It originated in the ATA code 571 to blacklist particular drive models, but other device drivers 572 may need similar functionality. 573 574 All drivers in the Linux kernel tree that require this function 575 should automatically select this option. Say N unless you 576 are compiling an out-of tree driver which tells you that it 577 depends on this. 578 579config GLOB_SELFTEST 580 tristate "glob self-test on init" 581 depends on GLOB 582 help 583 This option enables a simple self-test of the glob_match 584 function on startup. It is primarily useful for people 585 working on the code to ensure they haven't introduced any 586 regressions. 587 588 It only adds a little bit of code and slows kernel boot (or 589 module load) by a small amount, so you're welcome to play with 590 it, but you probably don't need it. 591 592# 593# Netlink attribute parsing support is select'ed if needed 594# 595config NLATTR 596 bool 597 598# 599# Generic 64-bit atomic support is selected if needed 600# 601config GENERIC_ATOMIC64 602 bool 603 604config LRU_CACHE 605 tristate 606 607config CLZ_TAB 608 bool 609 610config IRQ_POLL 611 bool "IRQ polling library" 612 help 613 Helper library to poll interrupt mitigation using polling. 614 615config MPILIB 616 tristate 617 select CLZ_TAB 618 help 619 Multiprecision maths library from GnuPG. 620 It is used to implement RSA digital signature verification, 621 which is used by IMA/EVM digital signature extension. 622 623config SIGNATURE 624 tristate 625 depends on KEYS 626 select CRYPTO 627 select CRYPTO_SHA1 628 select MPILIB 629 help 630 Digital signature verification. Currently only RSA is supported. 631 Implementation is done using GnuPG MPI library 632 633config DIMLIB 634 bool 635 help 636 Dynamic Interrupt Moderation library. 637 Implements an algorithm for dynamically changing CQ moderation values 638 according to run time performance. 639 640# 641# libfdt files, only selected if needed. 642# 643config LIBFDT 644 bool 645 646config OID_REGISTRY 647 tristate 648 help 649 Enable fast lookup object identifier registry. 650 651config UCS2_STRING 652 tristate 653 654# 655# generic vdso 656# 657source "lib/vdso/Kconfig" 658 659source "lib/fonts/Kconfig" 660 661config SG_SPLIT 662 def_bool n 663 help 664 Provides a helper to split scatterlists into chunks, each chunk being 665 a scatterlist. This should be selected by a driver or an API which 666 whishes to split a scatterlist amongst multiple DMA channels. 667 668config SG_POOL 669 def_bool n 670 help 671 Provides a helper to allocate chained scatterlists. This should be 672 selected by a driver or an API which whishes to allocate chained 673 scatterlist. 674 675# 676# sg chaining option 677# 678 679config ARCH_NO_SG_CHAIN 680 def_bool n 681 682config ARCH_HAS_PMEM_API 683 bool 684 685config MEMREGION 686 bool 687 688config ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION 689 bool 690 691config ARCH_HAS_MEMREMAP_COMPAT_ALIGN 692 bool 693 694# use memcpy to implement user copies for nommu architectures 695config UACCESS_MEMCPY 696 bool 697 698config ARCH_HAS_UACCESS_FLUSHCACHE 699 bool 700 701# arch has a concept of a recoverable synchronous exception due to a 702# memory-read error like x86 machine-check or ARM data-abort, and 703# implements copy_mc_to_{user,kernel} to abort and report 704# 'bytes-transferred' if that exception fires when accessing the source 705# buffer. 706config ARCH_HAS_COPY_MC 707 bool 708 709# Temporary. Goes away when all archs are cleaned up 710config ARCH_STACKWALK 711 bool 712 713config STACKDEPOT 714 bool 715 select STACKTRACE 716 help 717 Stack depot: stack trace storage that avoids duplication 718 719config STACKDEPOT_ALWAYS_INIT 720 bool 721 select STACKDEPOT 722 help 723 Always initialize stack depot during early boot 724 725config STACKDEPOT_MAX_FRAMES 726 int "Maximum number of frames in trace saved in stack depot" 727 range 1 256 728 default 64 729 depends on STACKDEPOT 730 731config REF_TRACKER 732 bool 733 depends on STACKTRACE_SUPPORT 734 select STACKDEPOT 735 736config SBITMAP 737 bool 738 739config PARMAN 740 tristate "parman" if COMPILE_TEST 741 742config OBJAGG 743 tristate "objagg" if COMPILE_TEST 744 745config LWQ_TEST 746 bool "Boot-time test for lwq queuing" 747 help 748 Run boot-time test of light-weight queuing. 749 750endmenu 751 752config GENERIC_IOREMAP 753 bool 754 755config GENERIC_LIB_ASHLDI3 756 bool 757 758config GENERIC_LIB_ASHRDI3 759 bool 760 761config GENERIC_LIB_LSHRDI3 762 bool 763 764config GENERIC_LIB_MULDI3 765 bool 766 767config GENERIC_LIB_CMPDI2 768 bool 769 770config GENERIC_LIB_UCMPDI2 771 bool 772 773config GENERIC_LIB_DEVMEM_IS_ALLOWED 774 bool 775 776config PLDMFW 777 bool 778 default n 779 780config ASN1_ENCODER 781 tristate 782 783config POLYNOMIAL 784 tristate 785 786config FIRMWARE_TABLE 787 bool 788