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