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