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