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