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