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