xref: /openbmc/linux/lib/Kconfig (revision d6b6592ac6d11eab91e6758d224eac35f4122aca)
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 	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 
43 config BITREVERSE
44 	tristate
45 
46 config 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 
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 source "lib/math/Kconfig"
69 
70 config NO_GENERIC_PCI_IOPORT_MAP
71 	bool
72 
73 config GENERIC_PCI_IOMAP
74 	bool
75 
76 config GENERIC_IOMAP
77 	bool
78 	select GENERIC_PCI_IOMAP
79 
80 config STMP_DEVICE
81 	bool
82 
83 config ARCH_USE_CMPXCHG_LOCKREF
84 	bool
85 
86 config ARCH_HAS_FAST_MULTIPLIER
87 	bool
88 
89 config ARCH_USE_SYM_ANNOTATIONS
90 	bool
91 
92 config 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 
109 config INDIRECT_IOMEM
110 	bool
111 	help
112 	  This is selected by other options/architectures to provide the
113 	  emulated iomem accessors.
114 
115 config 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 
123 config 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 
130 source "lib/crypto/Kconfig"
131 
132 config 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 
140 config 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 
148 config 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 
157 config 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 
166 config 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 
174 config 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 
184 config 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 
193 choice
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 
202 config 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 
213 config 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 
222 config 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 
230 config 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 
238 endchoice
239 
240 config 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 
248 config 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 
256 config 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 
264 config 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 
275 config 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 
282 config XXHASH
283 	tristate
284 
285 config AUDIT_GENERIC
286 	bool
287 	depends on AUDIT && !AUDIT_ARCH
288 	default y
289 
290 config AUDIT_ARCH_COMPAT_GENERIC
291 	bool
292 	default n
293 
294 config AUDIT_COMPAT_GENERIC
295 	bool
296 	depends on AUDIT_GENERIC && AUDIT_ARCH_COMPAT_GENERIC && COMPAT
297 	default y
298 
299 config 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 #
308 config 842_COMPRESS
309 	select CRC32
310 	tristate
311 
312 config 842_DECOMPRESS
313 	select CRC32
314 	tristate
315 
316 config ZLIB_INFLATE
317 	tristate
318 
319 config ZLIB_DEFLATE
320 	tristate
321 	select BITREVERSE
322 
323 config 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 
330 config LZO_COMPRESS
331 	tristate
332 
333 config LZO_DECOMPRESS
334 	tristate
335 
336 config LZ4_COMPRESS
337 	tristate
338 
339 config LZ4HC_COMPRESS
340 	tristate
341 
342 config LZ4_DECOMPRESS
343 	tristate
344 
345 config ZSTD_COMMON
346 	select XXHASH
347 	tristate
348 
349 config ZSTD_COMPRESS
350 	select ZSTD_COMMON
351 	tristate
352 
353 config ZSTD_DECOMPRESS
354 	select ZSTD_COMMON
355 	tristate
356 
357 source "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 #
363 config DECOMPRESS_GZIP
364 	select ZLIB_INFLATE
365 	tristate
366 
367 config DECOMPRESS_BZIP2
368 	tristate
369 
370 config DECOMPRESS_LZMA
371 	tristate
372 
373 config DECOMPRESS_XZ
374 	select XZ_DEC
375 	tristate
376 
377 config DECOMPRESS_LZO
378 	select LZO_DECOMPRESS
379 	tristate
380 
381 config DECOMPRESS_LZ4
382 	select LZ4_DECOMPRESS
383 	tristate
384 
385 config DECOMPRESS_ZSTD
386 	select ZSTD_DECOMPRESS
387 	tristate
388 
389 #
390 # Generic allocator support is selected if needed
391 #
392 config GENERIC_ALLOCATOR
393 	bool
394 
395 #
396 # reed solomon support is select'ed if needed
397 #
398 config REED_SOLOMON
399 	tristate
400 
401 config REED_SOLOMON_ENC8
402 	bool
403 
404 config REED_SOLOMON_DEC8
405 	bool
406 
407 config REED_SOLOMON_ENC16
408 	bool
409 
410 config REED_SOLOMON_DEC16
411 	bool
412 
413 #
414 # BCH support is selected if needed
415 #
416 config BCH
417 	tristate
418 	select BITREVERSE
419 
420 config 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 
436 config 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 
446 config 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 #
456 config TEXTSEARCH
457 	bool
458 
459 config TEXTSEARCH_KMP
460 	tristate
461 
462 config TEXTSEARCH_BM
463 	tristate
464 
465 config TEXTSEARCH_FSM
466 	tristate
467 
468 config BTREE
469 	bool
470 
471 config 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 
485 config INTERVAL_TREE_SPAN_ITER
486 	bool
487 	depends on INTERVAL_TREE
488 
489 config XARRAY_MULTI
490 	bool
491 	help
492 	  Support entries which occupy multiple consecutive indices in the
493 	  XArray.
494 
495 config 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 
509 config HAS_IOMEM
510 	bool
511 	depends on !NO_IOMEM
512 	default y
513 
514 config HAS_IOPORT
515 	bool
516 
517 config HAS_IOPORT_MAP
518 	bool
519 	depends on HAS_IOMEM && !NO_IOPORT_MAP
520 	default y
521 
522 source "kernel/dma/Kconfig"
523 
524 config SGL_ALLOC
525 	bool
526 	default n
527 
528 config IOMMU_HELPER
529 	bool
530 
531 config CHECK_SIGNATURE
532 	bool
533 
534 config 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 
541 config FORCE_NR_CPUS
542 	def_bool !SMP
543 
544 config CPU_RMAP
545 	bool
546 	depends on SMP
547 
548 config DQL
549 	bool
550 
551 config GLOB
552 	bool
553 #	This actually supports modular compilation, but the module overhead
554 #	is ridiculous for the amount of code involved.	Until an out-of-tree
555 #	driver asks for it, we'll just link it directly it into the kernel
556 #	when required.  Since we're ignoring out-of-tree users,	there's also
557 #	no need bother prompting for a manual decision:
558 #	prompt "glob_match() function"
559 	help
560 	  This option provides a glob_match function for performing
561 	  simple text pattern matching.  It originated in the ATA code
562 	  to blacklist particular drive models, but other device drivers
563 	  may need similar functionality.
564 
565 	  All drivers in the Linux kernel tree that require this function
566 	  should automatically select this option.  Say N unless you
567 	  are compiling an out-of tree driver which tells you that it
568 	  depends on this.
569 
570 config GLOB_SELFTEST
571 	tristate "glob self-test on init"
572 	depends on GLOB
573 	help
574 	  This option enables a simple self-test of the glob_match
575 	  function on startup.	It is primarily useful for people
576 	  working on the code to ensure they haven't introduced any
577 	  regressions.
578 
579 	  It only adds a little bit of code and slows kernel boot (or
580 	  module load) by a small amount, so you're welcome to play with
581 	  it, but you probably don't need it.
582 
583 #
584 # Netlink attribute parsing support is select'ed if needed
585 #
586 config NLATTR
587 	bool
588 
589 #
590 # Generic 64-bit atomic support is selected if needed
591 #
592 config GENERIC_ATOMIC64
593        bool
594 
595 config LRU_CACHE
596 	tristate
597 
598 config CLZ_TAB
599 	bool
600 
601 config IRQ_POLL
602 	bool "IRQ polling library"
603 	help
604 	  Helper library to poll interrupt mitigation using polling.
605 
606 config MPILIB
607 	tristate
608 	select CLZ_TAB
609 	help
610 	  Multiprecision maths library from GnuPG.
611 	  It is used to implement RSA digital signature verification,
612 	  which is used by IMA/EVM digital signature extension.
613 
614 config SIGNATURE
615 	tristate
616 	depends on KEYS
617 	select CRYPTO
618 	select CRYPTO_SHA1
619 	select MPILIB
620 	help
621 	  Digital signature verification. Currently only RSA is supported.
622 	  Implementation is done using GnuPG MPI library
623 
624 config DIMLIB
625 	bool
626 	help
627 	  Dynamic Interrupt Moderation library.
628 	  Implements an algorithm for dynamically changing CQ moderation values
629 	  according to run time performance.
630 
631 #
632 # libfdt files, only selected if needed.
633 #
634 config LIBFDT
635 	bool
636 
637 config OID_REGISTRY
638 	tristate
639 	help
640 	  Enable fast lookup object identifier registry.
641 
642 config UCS2_STRING
643 	tristate
644 
645 #
646 # generic vdso
647 #
648 source "lib/vdso/Kconfig"
649 
650 source "lib/fonts/Kconfig"
651 
652 config SG_SPLIT
653 	def_bool n
654 	help
655 	 Provides a helper to split scatterlists into chunks, each chunk being
656 	 a scatterlist. This should be selected by a driver or an API which
657 	 whishes to split a scatterlist amongst multiple DMA channels.
658 
659 config SG_POOL
660 	def_bool n
661 	help
662 	 Provides a helper to allocate chained scatterlists. This should be
663 	 selected by a driver or an API which whishes to allocate chained
664 	 scatterlist.
665 
666 #
667 # sg chaining option
668 #
669 
670 config ARCH_NO_SG_CHAIN
671 	def_bool n
672 
673 config ARCH_HAS_PMEM_API
674 	bool
675 
676 config MEMREGION
677 	bool
678 
679 config ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION
680 	bool
681 
682 config ARCH_HAS_MEMREMAP_COMPAT_ALIGN
683 	bool
684 
685 # use memcpy to implement user copies for nommu architectures
686 config UACCESS_MEMCPY
687 	bool
688 
689 config ARCH_HAS_UACCESS_FLUSHCACHE
690 	bool
691 
692 # arch has a concept of a recoverable synchronous exception due to a
693 # memory-read error like x86 machine-check or ARM data-abort, and
694 # implements copy_mc_to_{user,kernel} to abort and report
695 # 'bytes-transferred' if that exception fires when accessing the source
696 # buffer.
697 config ARCH_HAS_COPY_MC
698 	bool
699 
700 # Temporary. Goes away when all archs are cleaned up
701 config ARCH_STACKWALK
702        bool
703 
704 config STACKDEPOT
705 	bool
706 	select STACKTRACE
707 
708 config STACKDEPOT_ALWAYS_INIT
709 	bool
710 	select STACKDEPOT
711 
712 config REF_TRACKER
713 	bool
714 	depends on STACKTRACE_SUPPORT
715 	select STACKDEPOT
716 
717 config SBITMAP
718 	bool
719 
720 config PARMAN
721 	tristate "parman" if COMPILE_TEST
722 
723 config OBJAGG
724 	tristate "objagg" if COMPILE_TEST
725 
726 endmenu
727 
728 config GENERIC_IOREMAP
729 	bool
730 
731 config GENERIC_LIB_ASHLDI3
732 	bool
733 
734 config GENERIC_LIB_ASHRDI3
735 	bool
736 
737 config GENERIC_LIB_LSHRDI3
738 	bool
739 
740 config GENERIC_LIB_MULDI3
741 	bool
742 
743 config GENERIC_LIB_CMPDI2
744 	bool
745 
746 config GENERIC_LIB_UCMPDI2
747 	bool
748 
749 config GENERIC_LIB_DEVMEM_IS_ALLOWED
750 	bool
751 
752 config PLDMFW
753 	bool
754 	default n
755 
756 config ASN1_ENCODER
757        tristate
758 
759 config POLYNOMIAL
760        tristate
761