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