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