Merge tag 'timers-urgent-2023-10-01' of git://git.kernel.org/pub/scm/linux/kernel...
[platform/kernel/linux-rpi.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 HAS_IOMEM
510         bool
511         depends on !NO_IOMEM
512         default y
513
514 config HAS_IOPORT
515         bool
516
517 config HAS_IOPORT_MAP
518         bool
519         depends on HAS_IOMEM && !NO_IOPORT_MAP
520         default y
521
522 source "kernel/dma/Kconfig"
523
524 config SGL_ALLOC
525         bool
526         default n
527
528 config IOMMU_HELPER
529         bool
530
531 config CHECK_SIGNATURE
532         bool
533
534 config CPUMASK_OFFSTACK
535         bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
536         help
537           Use dynamic allocation for cpumask_var_t, instead of putting
538           them on the stack.  This is a bit more expensive, but avoids
539           stack overflow.
540
541 config FORCE_NR_CPUS
542        bool "Set number of CPUs at compile time"
543        depends on SMP && EXPERT && !COMPILE_TEST
544        help
545          Say Yes if you have NR_CPUS set to an actual number of possible
546          CPUs in your system, not to a default value. This forces the core
547          code to rely on compile-time value and optimize kernel routines
548          better.
549
550 config CPU_RMAP
551         bool
552         depends on SMP
553
554 config DQL
555         bool
556
557 config GLOB
558         bool
559 #       This actually supports modular compilation, but the module overhead
560 #       is ridiculous for the amount of code involved.  Until an out-of-tree
561 #       driver asks for it, we'll just link it directly it into the kernel
562 #       when required.  Since we're ignoring out-of-tree users, there's also
563 #       no need bother prompting for a manual decision:
564 #       prompt "glob_match() function"
565         help
566           This option provides a glob_match function for performing
567           simple text pattern matching.  It originated in the ATA code
568           to blacklist particular drive models, but other device drivers
569           may need similar functionality.
570
571           All drivers in the Linux kernel tree that require this function
572           should automatically select this option.  Say N unless you
573           are compiling an out-of tree driver which tells you that it
574           depends on this.
575
576 config GLOB_SELFTEST
577         tristate "glob self-test on init"
578         depends on GLOB
579         help
580           This option enables a simple self-test of the glob_match
581           function on startup.  It is primarily useful for people
582           working on the code to ensure they haven't introduced any
583           regressions.
584
585           It only adds a little bit of code and slows kernel boot (or
586           module load) by a small amount, so you're welcome to play with
587           it, but you probably don't need it.
588
589 #
590 # Netlink attribute parsing support is select'ed if needed
591 #
592 config NLATTR
593         bool
594
595 #
596 # Generic 64-bit atomic support is selected if needed
597 #
598 config GENERIC_ATOMIC64
599        bool
600
601 config LRU_CACHE
602         tristate
603
604 config CLZ_TAB
605         bool
606
607 config IRQ_POLL
608         bool "IRQ polling library"
609         help
610           Helper library to poll interrupt mitigation using polling.
611
612 config MPILIB
613         tristate
614         select CLZ_TAB
615         help
616           Multiprecision maths library from GnuPG.
617           It is used to implement RSA digital signature verification,
618           which is used by IMA/EVM digital signature extension.
619
620 config SIGNATURE
621         tristate
622         depends on KEYS
623         select CRYPTO
624         select CRYPTO_SHA1
625         select MPILIB
626         help
627           Digital signature verification. Currently only RSA is supported.
628           Implementation is done using GnuPG MPI library
629
630 config DIMLIB
631         bool
632         help
633           Dynamic Interrupt Moderation library.
634           Implements an algorithm for dynamically changing CQ moderation values
635           according to run time performance.
636
637 #
638 # libfdt files, only selected if needed.
639 #
640 config LIBFDT
641         bool
642
643 config OID_REGISTRY
644         tristate
645         help
646           Enable fast lookup object identifier registry.
647
648 config UCS2_STRING
649         tristate
650
651 #
652 # generic vdso
653 #
654 source "lib/vdso/Kconfig"
655
656 source "lib/fonts/Kconfig"
657
658 config SG_SPLIT
659         def_bool n
660         help
661          Provides a helper to split scatterlists into chunks, each chunk being
662          a scatterlist. This should be selected by a driver or an API which
663          whishes to split a scatterlist amongst multiple DMA channels.
664
665 config SG_POOL
666         def_bool n
667         help
668          Provides a helper to allocate chained scatterlists. This should be
669          selected by a driver or an API which whishes to allocate chained
670          scatterlist.
671
672 #
673 # sg chaining option
674 #
675
676 config ARCH_NO_SG_CHAIN
677         def_bool n
678
679 config ARCH_HAS_PMEM_API
680         bool
681
682 config MEMREGION
683         bool
684
685 config ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION
686         bool
687
688 config ARCH_HAS_MEMREMAP_COMPAT_ALIGN
689         bool
690
691 # use memcpy to implement user copies for nommu architectures
692 config UACCESS_MEMCPY
693         bool
694
695 config ARCH_HAS_UACCESS_FLUSHCACHE
696         bool
697
698 # arch has a concept of a recoverable synchronous exception due to a
699 # memory-read error like x86 machine-check or ARM data-abort, and
700 # implements copy_mc_to_{user,kernel} to abort and report
701 # 'bytes-transferred' if that exception fires when accessing the source
702 # buffer.
703 config ARCH_HAS_COPY_MC
704         bool
705
706 # Temporary. Goes away when all archs are cleaned up
707 config ARCH_STACKWALK
708        bool
709
710 config STACKDEPOT
711         bool
712         select STACKTRACE
713
714 config STACKDEPOT_ALWAYS_INIT
715         bool
716         select STACKDEPOT
717
718 config REF_TRACKER
719         bool
720         depends on STACKTRACE_SUPPORT
721         select STACKDEPOT
722
723 config SBITMAP
724         bool
725
726 config PARMAN
727         tristate "parman" if COMPILE_TEST
728
729 config OBJAGG
730         tristate "objagg" if COMPILE_TEST
731
732 endmenu
733
734 config GENERIC_IOREMAP
735         bool
736
737 config GENERIC_LIB_ASHLDI3
738         bool
739
740 config GENERIC_LIB_ASHRDI3
741         bool
742
743 config GENERIC_LIB_LSHRDI3
744         bool
745
746 config GENERIC_LIB_MULDI3
747         bool
748
749 config GENERIC_LIB_CMPDI2
750         bool
751
752 config GENERIC_LIB_UCMPDI2
753         bool
754
755 config GENERIC_LIB_DEVMEM_IS_ALLOWED
756         bool
757
758 config PLDMFW
759         bool
760         default n
761
762 config ASN1_ENCODER
763        tristate
764
765 config POLYNOMIAL
766        tristate