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