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