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