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