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