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