splice, net: Use sendmsg(MSG_SPLICE_PAGES) rather than ->sendpage()
[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         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
419 config BCH_CONST_PARAMS
420         bool
421         help
422           Drivers may select this option to force specific constant
423           values for parameters 'm' (Galois field order) and 't'
424           (error correction capability). Those specific values must
425           be set by declaring default values for symbols BCH_CONST_M
426           and BCH_CONST_T.
427           Doing so will enable extra compiler optimizations,
428           improving encoding and decoding performance up to 2x for
429           usual (m,t) values (typically such that m*t < 200).
430           When this option is selected, the BCH library supports
431           only a single (m,t) configuration. This is mainly useful
432           for NAND flash board drivers requiring known, fixed BCH
433           parameters.
434
435 config BCH_CONST_M
436         int
437         range 5 15
438         help
439           Constant value for Galois field order 'm'. If 'k' is the
440           number of data bits to protect, 'm' should be chosen such
441           that (k + m*t) <= 2**m - 1.
442           Drivers should declare a default value for this symbol if
443           they select option BCH_CONST_PARAMS.
444
445 config BCH_CONST_T
446         int
447         help
448           Constant value for error correction capability in bits 't'.
449           Drivers should declare a default value for this symbol if
450           they select option BCH_CONST_PARAMS.
451
452 #
453 # Textsearch support is select'ed if needed
454 #
455 config TEXTSEARCH
456         bool
457
458 config TEXTSEARCH_KMP
459         tristate
460
461 config TEXTSEARCH_BM
462         tristate
463
464 config TEXTSEARCH_FSM
465         tristate
466
467 config BTREE
468         bool
469
470 config INTERVAL_TREE
471         bool
472         help
473           Simple, embeddable, interval-tree. Can find the start of an
474           overlapping range in log(n) time and then iterate over all
475           overlapping nodes. The algorithm is implemented as an
476           augmented rbtree.
477
478           See:
479
480                 Documentation/core-api/rbtree.rst
481
482           for more information.
483
484 config INTERVAL_TREE_SPAN_ITER
485         bool
486         depends on INTERVAL_TREE
487
488 config XARRAY_MULTI
489         bool
490         help
491           Support entries which occupy multiple consecutive indices in the
492           XArray.
493
494 config ASSOCIATIVE_ARRAY
495         bool
496         help
497           Generic associative array.  Can be searched and iterated over whilst
498           it is being modified.  It is also reasonably quick to search and
499           modify.  The algorithms are non-recursive, and the trees are highly
500           capacious.
501
502           See:
503
504                 Documentation/core-api/assoc_array.rst
505
506           for more information.
507
508 config HAS_IOMEM
509         bool
510         depends on !NO_IOMEM
511         default y
512
513 config HAS_IOPORT
514         bool
515
516 config HAS_IOPORT_MAP
517         bool
518         depends on HAS_IOMEM && !NO_IOPORT_MAP
519         default y
520
521 source "kernel/dma/Kconfig"
522
523 config SGL_ALLOC
524         bool
525         default n
526
527 config IOMMU_HELPER
528         bool
529
530 config CHECK_SIGNATURE
531         bool
532
533 config CPUMASK_OFFSTACK
534         bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
535         help
536           Use dynamic allocation for cpumask_var_t, instead of putting
537           them on the stack.  This is a bit more expensive, but avoids
538           stack overflow.
539
540 config FORCE_NR_CPUS
541        bool "Set number of CPUs at compile time"
542        depends on SMP && EXPERT && !COMPILE_TEST
543        help
544          Say Yes if you have NR_CPUS set to an actual number of possible
545          CPUs in your system, not to a default value. This forces the core
546          code to rely on compile-time value and optimize kernel routines
547          better.
548
549 config CPU_RMAP
550         bool
551         depends on SMP
552
553 config DQL
554         bool
555
556 config GLOB
557         bool
558 #       This actually supports modular compilation, but the module overhead
559 #       is ridiculous for the amount of code involved.  Until an out-of-tree
560 #       driver asks for it, we'll just link it directly it into the kernel
561 #       when required.  Since we're ignoring out-of-tree users, there's also
562 #       no need bother prompting for a manual decision:
563 #       prompt "glob_match() function"
564         help
565           This option provides a glob_match function for performing
566           simple text pattern matching.  It originated in the ATA code
567           to blacklist particular drive models, but other device drivers
568           may need similar functionality.
569
570           All drivers in the Linux kernel tree that require this function
571           should automatically select this option.  Say N unless you
572           are compiling an out-of tree driver which tells you that it
573           depends on this.
574
575 config GLOB_SELFTEST
576         tristate "glob self-test on init"
577         depends on GLOB
578         help
579           This option enables a simple self-test of the glob_match
580           function on startup.  It is primarily useful for people
581           working on the code to ensure they haven't introduced any
582           regressions.
583
584           It only adds a little bit of code and slows kernel boot (or
585           module load) by a small amount, so you're welcome to play with
586           it, but you probably don't need it.
587
588 #
589 # Netlink attribute parsing support is select'ed if needed
590 #
591 config NLATTR
592         bool
593
594 #
595 # Generic 64-bit atomic support is selected if needed
596 #
597 config GENERIC_ATOMIC64
598        bool
599
600 config LRU_CACHE
601         tristate
602
603 config CLZ_TAB
604         bool
605
606 config IRQ_POLL
607         bool "IRQ polling library"
608         help
609           Helper library to poll interrupt mitigation using polling.
610
611 config MPILIB
612         tristate
613         select CLZ_TAB
614         help
615           Multiprecision maths library from GnuPG.
616           It is used to implement RSA digital signature verification,
617           which is used by IMA/EVM digital signature extension.
618
619 config SIGNATURE
620         tristate
621         depends on KEYS
622         select CRYPTO
623         select CRYPTO_SHA1
624         select MPILIB
625         help
626           Digital signature verification. Currently only RSA is supported.
627           Implementation is done using GnuPG MPI library
628
629 config DIMLIB
630         bool
631         help
632           Dynamic Interrupt Moderation library.
633           Implements an algorithm for dynamically changing CQ moderation values
634           according to run time performance.
635
636 #
637 # libfdt files, only selected if needed.
638 #
639 config LIBFDT
640         bool
641
642 config OID_REGISTRY
643         tristate
644         help
645           Enable fast lookup object identifier registry.
646
647 config UCS2_STRING
648         tristate
649
650 #
651 # generic vdso
652 #
653 source "lib/vdso/Kconfig"
654
655 source "lib/fonts/Kconfig"
656
657 config SG_SPLIT
658         def_bool n
659         help
660          Provides a helper to split scatterlists into chunks, each chunk being
661          a scatterlist. This should be selected by a driver or an API which
662          whishes to split a scatterlist amongst multiple DMA channels.
663
664 config SG_POOL
665         def_bool n
666         help
667          Provides a helper to allocate chained scatterlists. This should be
668          selected by a driver or an API which whishes to allocate chained
669          scatterlist.
670
671 #
672 # sg chaining option
673 #
674
675 config ARCH_NO_SG_CHAIN
676         def_bool n
677
678 config ARCH_HAS_PMEM_API
679         bool
680
681 config MEMREGION
682         bool
683
684 config ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION
685         bool
686
687 config ARCH_HAS_MEMREMAP_COMPAT_ALIGN
688         bool
689
690 # use memcpy to implement user copies for nommu architectures
691 config UACCESS_MEMCPY
692         bool
693
694 config ARCH_HAS_UACCESS_FLUSHCACHE
695         bool
696
697 # arch has a concept of a recoverable synchronous exception due to a
698 # memory-read error like x86 machine-check or ARM data-abort, and
699 # implements copy_mc_to_{user,kernel} to abort and report
700 # 'bytes-transferred' if that exception fires when accessing the source
701 # buffer.
702 config ARCH_HAS_COPY_MC
703         bool
704
705 # Temporary. Goes away when all archs are cleaned up
706 config ARCH_STACKWALK
707        bool
708
709 config STACKDEPOT
710         bool
711         select STACKTRACE
712
713 config STACKDEPOT_ALWAYS_INIT
714         bool
715         select STACKDEPOT
716
717 config REF_TRACKER
718         bool
719         depends on STACKTRACE_SUPPORT
720         select STACKDEPOT
721
722 config SBITMAP
723         bool
724
725 config PARMAN
726         tristate "parman" if COMPILE_TEST
727
728 config OBJAGG
729         tristate "objagg" if COMPILE_TEST
730
731 endmenu
732
733 config GENERIC_IOREMAP
734         bool
735
736 config GENERIC_LIB_ASHLDI3
737         bool
738
739 config GENERIC_LIB_ASHRDI3
740         bool
741
742 config GENERIC_LIB_LSHRDI3
743         bool
744
745 config GENERIC_LIB_MULDI3
746         bool
747
748 config GENERIC_LIB_CMPDI2
749         bool
750
751 config GENERIC_LIB_UCMPDI2
752         bool
753
754 config GENERIC_LIB_DEVMEM_IS_ALLOWED
755         bool
756
757 config PLDMFW
758         bool
759         default n
760
761 config ASN1_ENCODER
762        tristate
763
764 config POLYNOMIAL
765        tristate