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