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