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