Merge tag 'spi-fix-v6.1-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
[platform/kernel/linux-starfive.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         help
49           This option enables the use of hardware bit-reversal instructions on
50           architectures which support such operations.
51
52 config ARCH_HAS_STRNCPY_FROM_USER
53         bool
54
55 config ARCH_HAS_STRNLEN_USER
56         bool
57
58 config GENERIC_STRNCPY_FROM_USER
59         def_bool !ARCH_HAS_STRNCPY_FROM_USER
60
61 config GENERIC_STRNLEN_USER
62         def_bool !ARCH_HAS_STRNLEN_USER
63
64 config GENERIC_NET_UTILS
65         bool
66
67 source "lib/math/Kconfig"
68
69 config NO_GENERIC_PCI_IOPORT_MAP
70         bool
71
72 config GENERIC_PCI_IOMAP
73         bool
74
75 config GENERIC_IOMAP
76         bool
77         select GENERIC_PCI_IOMAP
78
79 config STMP_DEVICE
80         bool
81
82 config ARCH_USE_CMPXCHG_LOCKREF
83         bool
84
85 config ARCH_HAS_FAST_MULTIPLIER
86         bool
87
88 config ARCH_USE_SYM_ANNOTATIONS
89         bool
90
91 config 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
107 config INDIRECT_IOMEM
108         bool
109         help
110           This is selected by other options/architectures to provide the
111           emulated iomem accessors.
112
113 config 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
121 config 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
128 source "lib/crypto/Kconfig"
129
130 config 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
138 config 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
146 config 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
155 config 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
164 config 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
172 config 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
182 config 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
191 choice
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
200 config 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
211 config 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
220 config 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
228 config 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
236 endchoice
237
238 config 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
246 config 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
254 config 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
262 config 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
273 config 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
280 config XXHASH
281         tristate
282
283 config AUDIT_GENERIC
284         bool
285         depends on AUDIT && !AUDIT_ARCH
286         default y
287
288 config AUDIT_ARCH_COMPAT_GENERIC
289         bool
290         default n
291
292 config AUDIT_COMPAT_GENERIC
293         bool
294         depends on AUDIT_GENERIC && AUDIT_ARCH_COMPAT_GENERIC && COMPAT
295         default y
296
297 config 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 #
306 config 842_COMPRESS
307         select CRC32
308         tristate
309
310 config 842_DECOMPRESS
311         select CRC32
312         tristate
313
314 config ZLIB_INFLATE
315         tristate
316
317 config ZLIB_DEFLATE
318         tristate
319         select BITREVERSE
320
321 config 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
328 config LZO_COMPRESS
329         tristate
330
331 config LZO_DECOMPRESS
332         tristate
333
334 config LZ4_COMPRESS
335         tristate
336
337 config LZ4HC_COMPRESS
338         tristate
339
340 config LZ4_DECOMPRESS
341         tristate
342
343 config ZSTD_COMMON
344         select XXHASH
345         tristate
346
347 config ZSTD_COMPRESS
348         select ZSTD_COMMON
349         tristate
350
351 config ZSTD_DECOMPRESS
352         select ZSTD_COMMON
353         tristate
354
355 source "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 #
361 config DECOMPRESS_GZIP
362         select ZLIB_INFLATE
363         tristate
364
365 config DECOMPRESS_BZIP2
366         tristate
367
368 config DECOMPRESS_LZMA
369         tristate
370
371 config DECOMPRESS_XZ
372         select XZ_DEC
373         tristate
374
375 config DECOMPRESS_LZO
376         select LZO_DECOMPRESS
377         tristate
378
379 config DECOMPRESS_LZ4
380         select LZ4_DECOMPRESS
381         tristate
382
383 config DECOMPRESS_ZSTD
384         select ZSTD_DECOMPRESS
385         tristate
386
387 #
388 # Generic allocator support is selected if needed
389 #
390 config GENERIC_ALLOCATOR
391         bool
392
393 #
394 # reed solomon support is select'ed if needed
395 #
396 config REED_SOLOMON
397         tristate
398         
399 config REED_SOLOMON_ENC8
400         bool
401
402 config REED_SOLOMON_DEC8
403         bool
404
405 config REED_SOLOMON_ENC16
406         bool
407
408 config REED_SOLOMON_DEC16
409         bool
410
411 #
412 # BCH support is selected if needed
413 #
414 config BCH
415         tristate
416
417 config 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
433 config 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
443 config 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 #
453 config TEXTSEARCH
454         bool
455
456 config TEXTSEARCH_KMP
457         tristate
458
459 config TEXTSEARCH_BM
460         tristate
461
462 config TEXTSEARCH_FSM
463         tristate
464
465 config BTREE
466         bool
467
468 config 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
482 config XARRAY_MULTI
483         bool
484         help
485           Support entries which occupy multiple consecutive indices in the
486           XArray.
487
488 config 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
502 config HAS_IOMEM
503         bool
504         depends on !NO_IOMEM
505         default y
506
507 config HAS_IOPORT_MAP
508         bool
509         depends on HAS_IOMEM && !NO_IOPORT_MAP
510         default y
511
512 source "kernel/dma/Kconfig"
513
514 config SGL_ALLOC
515         bool
516         default n
517
518 config IOMMU_HELPER
519         bool
520
521 config CHECK_SIGNATURE
522         bool
523
524 config 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
531 config 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
540 config CPU_RMAP
541         bool
542         depends on SMP
543
544 config DQL
545         bool
546
547 config 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
566 config 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 #
582 config NLATTR
583         bool
584
585 #
586 # Generic 64-bit atomic support is selected if needed
587 #
588 config GENERIC_ATOMIC64
589        bool
590
591 config LRU_CACHE
592         tristate
593
594 config CLZ_TAB
595         bool
596
597 config IRQ_POLL
598         bool "IRQ polling library"
599         help
600           Helper library to poll interrupt mitigation using polling.
601
602 config 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
610 config 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
620 config 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 #
630 config LIBFDT
631         bool
632
633 config OID_REGISTRY
634         tristate
635         help
636           Enable fast lookup object identifier registry.
637
638 config UCS2_STRING
639         tristate
640
641 #
642 # generic vdso
643 #
644 source "lib/vdso/Kconfig"
645
646 source "lib/fonts/Kconfig"
647
648 config 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
655 config 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
666 config ARCH_NO_SG_CHAIN
667         def_bool n
668
669 config ARCH_HAS_PMEM_API
670         bool
671
672 config MEMREGION
673         bool
674
675 config ARCH_HAS_MEMREMAP_COMPAT_ALIGN
676         bool
677
678 # use memcpy to implement user copies for nommu architectures
679 config UACCESS_MEMCPY
680         bool
681
682 config 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.
690 config ARCH_HAS_COPY_MC
691         bool
692
693 # Temporary. Goes away when all archs are cleaned up
694 config ARCH_STACKWALK
695        bool
696
697 config STACKDEPOT
698         bool
699         select STACKTRACE
700
701 config STACKDEPOT_ALWAYS_INIT
702         bool
703         select STACKDEPOT
704
705 config REF_TRACKER
706         bool
707         depends on STACKTRACE_SUPPORT
708         select STACKDEPOT
709
710 config SBITMAP
711         bool
712
713 config PARMAN
714         tristate "parman" if COMPILE_TEST
715
716 config OBJAGG
717         tristate "objagg" if COMPILE_TEST
718
719 endmenu
720
721 config GENERIC_IOREMAP
722         bool
723
724 config GENERIC_LIB_ASHLDI3
725         bool
726
727 config GENERIC_LIB_ASHRDI3
728         bool
729
730 config GENERIC_LIB_LSHRDI3
731         bool
732
733 config GENERIC_LIB_MULDI3
734         bool
735
736 config GENERIC_LIB_CMPDI2
737         bool
738
739 config GENERIC_LIB_UCMPDI2
740         bool
741
742 config GENERIC_LIB_DEVMEM_IS_ALLOWED
743         bool
744
745 config PLDMFW
746         bool
747         default n
748
749 config ASN1_ENCODER
750        tristate
751
752 config POLYNOMIAL
753        tristate