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