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