]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - lib/Kconfig
iov_iter: Fix iov_iter_get_pages{,_alloc} page fault return value
[mirror_ubuntu-jammy-kernel.git] / lib / Kconfig
CommitLineData
ec8f24b7 1# SPDX-License-Identifier: GPL-2.0-only
1da177e4
LT
2#
3# Library configuration
4#
5
4370aa4a
LJ
6config BINARY_PRINTF
7 def_bool n
8
1da177e4
LT
9menu "Library routines"
10
f5e70d0f
DW
11config RAID6_PQ
12 tristate
13
be85f93a
DV
14config 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
d2218d4e
MV
22config LINEAR_RANGES
23 tristate
24
554aae35
VO
25config 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
a5cfc1ec
AM
42config BITREVERSE
43 tristate
44
556d2f05 45config HAVE_ARCH_BITREVERSE
841c0090 46 bool
556d2f05
YW
47 default n
48 depends on BITREVERSE
49 help
9e522c0d
AM
50 This option enables the use of hardware bit-reversal instructions on
51 architectures which support such operations.
556d2f05 52
e6226997 53config ARCH_HAS_STRNCPY_FROM_USER
2922585b
DM
54 bool
55
e6226997 56config ARCH_HAS_STRNLEN_USER
a08c5356
LT
57 bool
58
e6226997
AB
59config GENERIC_STRNCPY_FROM_USER
60 def_bool !ARCH_HAS_STRNCPY_FROM_USER
61
62config GENERIC_STRNLEN_USER
63 def_bool !ARCH_HAS_STRNLEN_USER
64
4cd5773a
AS
65config GENERIC_NET_UTILS
66 bool
67
19870def 68config GENERIC_FIND_FIRST_BIT
9ba16087 69 bool
19870def 70
2c64e9cb
AS
71source "lib/math/Kconfig"
72
b923650b
MT
73config NO_GENERIC_PCI_IOPORT_MAP
74 bool
75
66eab4df
MT
76config GENERIC_PCI_IOMAP
77 bool
78
4673ca8e
MT
79config GENERIC_IOMAP
80 bool
66eab4df 81 select GENERIC_PCI_IOMAP
4673ca8e 82
4ccf4bea
WS
83config STMP_DEVICE
84 bool
22b361d1 85
bc08b449
LT
86config ARCH_USE_CMPXCHG_LOCKREF
87 bool
88
72d93104
LT
89config ARCH_HAS_FAST_MULTIPLIER
90 bool
91
2ce0d7f9
MB
92config ARCH_USE_SYM_ANNOTATIONS
93 bool
94
031e3601
ZY
95config INDIRECT_PIO
96 bool "Access I/O in non-MMIO mode"
97 depends on ARM64
98 help
99 On some platforms where no separate I/O space exists, there are I/O
100 hosts which can not be accessed in MMIO mode. Using the logical PIO
101 mechanism, the host-local I/O resource can be mapped into system
102 logic PIO space shared with MMIO hosts, such as PCI/PCIe, then the
103 system can access the I/O devices with the mapped-logic PIO through
104 I/O accessors.
105
106 This way has relatively little I/O performance cost. Please make
107 sure your devices really need this configure item enabled.
108
109 When in doubt, say N.
110
ca2e3342
JB
111config INDIRECT_IOMEM
112 bool
113 help
114 This is selected by other options/architectures to provide the
115 emulated iomem accessors.
116
117config INDIRECT_IOMEM_FALLBACK
118 bool
119 depends on INDIRECT_IOMEM
120 help
121 If INDIRECT_IOMEM is selected, this enables falling back to plain
122 mmio accesses when the IO memory address is not a registered
123 emulated region.
124
1da177e4
LT
125config CRC_CCITT
126 tristate "CRC-CCITT functions"
127 help
128 This option is provided for the case where no in-kernel-tree
129 modules require CRC-CCITT functions, but a module built outside
130 the kernel tree does. Such modules that use library CRC-CCITT
131 functions require M here.
132
7657ec1f
EP
133config CRC16
134 tristate "CRC16 functions"
135 help
136 This option is provided for the case where no in-kernel-tree
137 modules require CRC16 functions, but a module built outside
138 the kernel tree does. Such modules that use library CRC16
139 functions require M here.
140
f11f594e
MP
141config CRC_T10DIF
142 tristate "CRC calculation for the T10 Data Integrity Field"
68411521
HX
143 select CRYPTO
144 select CRYPTO_CRCT10DIF
f11f594e
MP
145 help
146 This option is only needed if a module that's not in the
147 kernel tree needs to calculate CRC checks for use with the
148 SCSI data integrity subsystem.
149
3e7cbae7
ID
150config CRC_ITU_T
151 tristate "CRC ITU-T V.41 functions"
152 help
153 This option is provided for the case where no in-kernel-tree
154 modules require CRC ITU-T V.41 functions, but a module built outside
155 the kernel tree does. Such modules that use library CRC ITU-T V.41
156 functions require M here.
157
1da177e4 158config CRC32
46c5801e 159 tristate "CRC32/CRC32c functions"
1da177e4 160 default y
906d66df 161 select BITREVERSE
1da177e4
LT
162 help
163 This option is provided for the case where no in-kernel-tree
46c5801e
DW
164 modules require CRC32/CRC32c functions, but a module built outside
165 the kernel tree does. Such modules that use library CRC32/CRC32c
166 functions require M here.
1da177e4 167
3863ef31 168config CRC32_SELFTEST
5fb7f874 169 tristate "CRC32 perform self test on init"
3863ef31
BP
170 depends on CRC32
171 help
172 This option enables the CRC32 library functions to perform a
173 self test on initialization. The self test computes crc32_le
174 and crc32_be over byte strings with random alignment and length
175 and computes the total elapsed time and number of bytes processed.
176
5cde7656
DW
177choice
178 prompt "CRC32 implementation"
179 depends on CRC32
180 default CRC32_SLICEBY8
82edb4ba
DW
181 help
182 This option allows a kernel builder to override the default choice
183 of CRC32 algorithm. Choose the default ("slice by 8") unless you
184 know that you need one of the others.
5cde7656
DW
185
186config CRC32_SLICEBY8
187 bool "Slice by 8 bytes"
188 help
189 Calculate checksum 8 bytes at a time with a clever slicing algorithm.
190 This is the fastest algorithm, but comes with a 8KiB lookup table.
191 Most modern processors have enough cache to hold this table without
192 thrashing the cache.
193
194 This is the default implementation choice. Choose this one unless
195 you have a good reason not to.
196
197config CRC32_SLICEBY4
198 bool "Slice by 4 bytes"
199 help
200 Calculate checksum 4 bytes at a time with a clever slicing algorithm.
201 This is a bit slower than slice by 8, but has a smaller 4KiB lookup
202 table.
203
204 Only choose this option if you know what you are doing.
205
206config CRC32_SARWATE
207 bool "Sarwate's Algorithm (one byte at a time)"
208 help
209 Calculate checksum a byte at a time using Sarwate's algorithm. This
210 is not particularly fast, but has a small 256 byte lookup table.
211
212 Only choose this option if you know what you are doing.
213
214config CRC32_BIT
215 bool "Classic Algorithm (one bit at a time)"
216 help
217 Calculate checksum one bit at a time. This is VERY slow, but has
218 no lookup table. This is provided as a debugging option.
219
220 Only choose this option if you are debugging crc32.
221
222endchoice
223
feba04fd
CL
224config CRC64
225 tristate "CRC64 functions"
226 help
227 This option is provided for the case where no in-kernel-tree
228 modules require CRC64 functions, but a module built outside
229 the kernel tree does. Such modules that use library CRC64
230 functions require M here.
231
0cbaa448
JK
232config CRC4
233 tristate "CRC4 functions"
234 help
235 This option is provided for the case where no in-kernel-tree
236 modules require CRC4 functions, but a module built outside
237 the kernel tree does. Such modules that use library CRC4
238 functions require M here.
239
ad241528
JN
240config CRC7
241 tristate "CRC7 functions"
242 help
243 This option is provided for the case where no in-kernel-tree
244 modules require CRC7 functions, but a module built outside
245 the kernel tree does. Such modules that use library CRC7
246 functions require M here.
247
1da177e4
LT
248config LIBCRC32C
249 tristate "CRC32c (Castagnoli, et al) Cyclic Redundancy-Check"
93027354 250 select CRYPTO
69c35efc 251 select CRYPTO_CRC32C
1da177e4
LT
252 help
253 This option is provided for the case where no in-kernel-tree
254 modules require CRC32c functions, but a module built outside the
255 kernel tree does. Such modules that use library CRC32c functions
256 require M here. See Castagnoli93.
257 Module will be libcrc32c.
258
7150962d
AS
259config CRC8
260 tristate "CRC8 function"
261 help
262 This option provides CRC8 function. Drivers may select this
263 when they need to do cyclic redundancy check according CRC8
264 algorithm. Module will be called crc8.
265
5d240522
NT
266config XXHASH
267 tristate
268
e65e1fc2
AV
269config AUDIT_GENERIC
270 bool
271 depends on AUDIT && !AUDIT_ARCH
272 default y
273
4b588411
AT
274config AUDIT_ARCH_COMPAT_GENERIC
275 bool
276 default n
277
278config AUDIT_COMPAT_GENERIC
279 bool
280 depends on AUDIT_GENERIC && AUDIT_ARCH_COMPAT_GENERIC && COMPAT
281 default y
282
a6a9c0f1
DB
283config RANDOM32_SELFTEST
284 bool "PRNG perform self test on init"
a6a9c0f1
DB
285 help
286 This option enables the 32 bit PRNG library functions to perform a
287 self test on initialization.
288
1da177e4
LT
289#
290# compression support is select'ed if needed
291#
2da572c9 292config 842_COMPRESS
5b571677 293 select CRC32
2da572c9
DS
294 tristate
295
296config 842_DECOMPRESS
5b571677 297 select CRC32
2da572c9
DS
298 tristate
299
1da177e4
LT
300config ZLIB_INFLATE
301 tristate
302
303config ZLIB_DEFLATE
304 tristate
1fd4e5c3 305 select BITREVERSE
1da177e4 306
aa5b395b
MZ
307config ZLIB_DFLTCC
308 def_bool y
309 depends on S390
310 prompt "Enable s390x DEFLATE CONVERSION CALL support for kernel zlib"
311 help
312 Enable s390x hardware support for zlib in the kernel.
313
64c70b1c
RP
314config LZO_COMPRESS
315 tristate
316
317config LZO_DECOMPRESS
318 tristate
319
c72ac7a1
CM
320config LZ4_COMPRESS
321 tristate
322
323config LZ4HC_COMPRESS
324 tristate
325
e76e1fdf
KL
326config LZ4_DECOMPRESS
327 tristate
328
73f3d1b4
NT
329config ZSTD_COMPRESS
330 select XXHASH
331 tristate
332
333config ZSTD_DECOMPRESS
334 select XXHASH
335 tristate
336
24fa0402
LC
337source "lib/xz/Kconfig"
338
c8531ab3
PA
339#
340# These all provide a common interface (hence the apparent duplication with
341# ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
342#
343config DECOMPRESS_GZIP
7856a16e 344 select ZLIB_INFLATE
c8531ab3
PA
345 tristate
346
347config DECOMPRESS_BZIP2
348 tristate
349
350config DECOMPRESS_LZMA
351 tristate
352
3ebe1243
LC
353config DECOMPRESS_XZ
354 select XZ_DEC
355 tristate
356
cacb246f
AT
357config DECOMPRESS_LZO
358 select LZO_DECOMPRESS
359 tristate
360
e76e1fdf
KL
361config DECOMPRESS_LZ4
362 select LZ4_DECOMPRESS
363 tristate
364
4963bb2b
NT
365config DECOMPRESS_ZSTD
366 select ZSTD_DECOMPRESS
367 tristate
368
f14f75b8
JS
369#
370# Generic allocator support is selected if needed
371#
372config GENERIC_ALLOCATOR
6341e62b 373 bool
f14f75b8 374
1da177e4
LT
375#
376# reed solomon support is select'ed if needed
377#
378config REED_SOLOMON
379 tristate
380
381config REED_SOLOMON_ENC8
6341e62b 382 bool
1da177e4
LT
383
384config REED_SOLOMON_DEC8
6341e62b 385 bool
1da177e4
LT
386
387config REED_SOLOMON_ENC16
6341e62b 388 bool
1da177e4
LT
389
390config REED_SOLOMON_DEC16
6341e62b 391 bool
1da177e4 392
437aa565
ID
393#
394# BCH support is selected if needed
395#
396config BCH
397 tristate
398
399config BCH_CONST_PARAMS
6341e62b 400 bool
437aa565
ID
401 help
402 Drivers may select this option to force specific constant
403 values for parameters 'm' (Galois field order) and 't'
404 (error correction capability). Those specific values must
405 be set by declaring default values for symbols BCH_CONST_M
406 and BCH_CONST_T.
407 Doing so will enable extra compiler optimizations,
408 improving encoding and decoding performance up to 2x for
409 usual (m,t) values (typically such that m*t < 200).
410 When this option is selected, the BCH library supports
411 only a single (m,t) configuration. This is mainly useful
412 for NAND flash board drivers requiring known, fixed BCH
413 parameters.
414
415config BCH_CONST_M
416 int
417 range 5 15
418 help
419 Constant value for Galois field order 'm'. If 'k' is the
420 number of data bits to protect, 'm' should be chosen such
421 that (k + m*t) <= 2**m - 1.
422 Drivers should declare a default value for this symbol if
423 they select option BCH_CONST_PARAMS.
424
425config BCH_CONST_T
426 int
427 help
428 Constant value for error correction capability in bits 't'.
429 Drivers should declare a default value for this symbol if
430 they select option BCH_CONST_PARAMS.
431
f7704347
DM
432#
433# Textsearch support is select'ed if needed
434#
2de4ff7b 435config TEXTSEARCH
6341e62b 436 bool
1da177e4 437
df3fb93a 438config TEXTSEARCH_KMP
f7704347 439 tristate
df3fb93a 440
8082e4ed 441config TEXTSEARCH_BM
29cb9f9c 442 tristate
8082e4ed 443
6408f79c 444config TEXTSEARCH_FSM
f7704347 445 tristate
6408f79c 446
5db53f3e 447config BTREE
6341e62b 448 bool
5db53f3e 449
a88cc108 450config INTERVAL_TREE
6341e62b 451 bool
a88cc108
CW
452 help
453 Simple, embeddable, interval-tree. Can find the start of an
454 overlapping range in log(n) time and then iterate over all
455 overlapping nodes. The algorithm is implemented as an
456 augmented rbtree.
457
458 See:
459
14bbe3e3 460 Documentation/core-api/rbtree.rst
a88cc108
CW
461
462 for more information.
463
02c02bf1 464config XARRAY_MULTI
57578c2e 465 bool
02c02bf1
MW
466 help
467 Support entries which occupy multiple consecutive indices in the
468 XArray.
57578c2e 469
3cb98950
DH
470config ASSOCIATIVE_ARRAY
471 bool
472 help
473 Generic associative array. Can be searched and iterated over whilst
474 it is being modified. It is also reasonably quick to search and
475 modify. The algorithms are non-recursive, and the trees are highly
476 capacious.
477
478 See:
479
5fb94e9c 480 Documentation/core-api/assoc_array.rst
3cb98950
DH
481
482 for more information.
483
5ea81769 484config HAS_IOMEM
6341e62b 485 bool
5ea81769
AV
486 depends on !NO_IOMEM
487 default y
488
ce816fa8 489config HAS_IOPORT_MAP
6341e62b 490 bool
ce816fa8 491 depends on HAS_IOMEM && !NO_IOPORT_MAP
ee36c2bf
AV
492 default y
493
cf65a0f6 494source "kernel/dma/Kconfig"
411f0f3e 495
e80a0af4
BVA
496config SGL_ALLOC
497 bool
498 default n
499
a4ce5a48
CH
500config IOMMU_HELPER
501 bool
502
928923c7
GU
503config CHECK_SIGNATURE
504 bool
505
aab46da0
RR
506config CPUMASK_OFFSTACK
507 bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
508 help
509 Use dynamic allocation for cpumask_var_t, instead of putting
510 them on the stack. This is a bit more expensive, but avoids
511 stack overflow.
512
c39649c3
BH
513config CPU_RMAP
514 bool
515 depends on SMP
516
75957ba3
TH
517config DQL
518 bool
519
b0125085
GS
520config GLOB
521 bool
522# This actually supports modular compilation, but the module overhead
523# is ridiculous for the amount of code involved. Until an out-of-tree
524# driver asks for it, we'll just link it directly it into the kernel
525# when required. Since we're ignoring out-of-tree users, there's also
526# no need bother prompting for a manual decision:
527# prompt "glob_match() function"
528 help
529 This option provides a glob_match function for performing
530 simple text pattern matching. It originated in the ATA code
531 to blacklist particular drive models, but other device drivers
532 may need similar functionality.
533
534 All drivers in the Linux kernel tree that require this function
535 should automatically select this option. Say N unless you
536 are compiling an out-of tree driver which tells you that it
537 depends on this.
538
5f9be824 539config GLOB_SELFTEST
ba95b045 540 tristate "glob self-test on init"
5f9be824
GS
541 depends on GLOB
542 help
543 This option enables a simple self-test of the glob_match
544 function on startup. It is primarily useful for people
545 working on the code to ensure they haven't introduced any
546 regressions.
547
548 It only adds a little bit of code and slows kernel boot (or
549 module load) by a small amount, so you're welcome to play with
550 it, but you probably don't need it.
551
e9cc8bdd
GU
552#
553# Netlink attribute parsing support is select'ed if needed
554#
555config NLATTR
556 bool
557
09d4e0ed
PM
558#
559# Generic 64-bit atomic support is selected if needed
560#
561config GENERIC_ATOMIC64
562 bool
563
b411b363
PR
564config LRU_CACHE
565 tristate
566
c6df4b17
DM
567config CLZ_TAB
568 bool
569
511cbce2
CH
570config IRQ_POLL
571 bool "IRQ polling library"
572 help
573 Helper library to poll interrupt mitigation using polling.
574
d9c46b18 575config MPILIB
2e5f094b 576 tristate
c6df4b17 577 select CLZ_TAB
d9c46b18
DK
578 help
579 Multiprecision maths library from GnuPG.
580 It is used to implement RSA digital signature verification,
581 which is used by IMA/EVM digital signature extension.
582
5e8898e9 583config SIGNATURE
2e5f094b 584 tristate
0d1f64f6
DK
585 depends on KEYS
586 select CRYPTO
be440ec7 587 select CRYPTO_SHA1
051dbb91
DK
588 select MPILIB
589 help
590 Digital signature verification. Currently only RSA is supported.
591 Implementation is done using GnuPG MPI library
592
4f75da36 593config DIMLIB
424adc32 594 bool
4f75da36
TG
595 help
596 Dynamic Interrupt Moderation library.
991ad2b2 597 Implements an algorithm for dynamically changing CQ moderation values
4f75da36
TG
598 according to run time performance.
599
ab253839
DD
600#
601# libfdt files, only selected if needed.
602#
603config LIBFDT
604 bool
605
a77ad6ea
DH
606config OID_REGISTRY
607 tristate
608 help
609 Enable fast lookup object identifier registry.
610
0635eb8a 611config UCS2_STRING
68d4b3df 612 tristate
0635eb8a 613
00b26474
VF
614#
615# generic vdso
616#
617source "lib/vdso/Kconfig"
618
ee89bd6b
GU
619source "lib/fonts/Kconfig"
620
f8bcbe62
RJ
621config SG_SPLIT
622 def_bool n
623 help
7f7e92f7
GU
624 Provides a helper to split scatterlists into chunks, each chunk being
625 a scatterlist. This should be selected by a driver or an API which
626 whishes to split a scatterlist amongst multiple DMA channels.
f8bcbe62 627
9b1d6c89
ML
628config SG_POOL
629 def_bool n
630 help
631 Provides a helper to allocate chained scatterlists. This should be
632 selected by a driver or an API which whishes to allocate chained
633 scatterlist.
634
308c09f1
LA
635#
636# sg chaining option
637#
638
7c703e54 639config ARCH_NO_SG_CHAIN
308c09f1
LA
640 def_bool n
641
61031952
RZ
642config ARCH_HAS_PMEM_API
643 bool
644
33dd7075
DW
645config MEMREGION
646 bool
647
9ffc1d19
DW
648config ARCH_HAS_MEMREMAP_COMPAT_ALIGN
649 bool
650
bd79f947
CH
651# use memcpy to implement user copies for nommu architectures
652config UACCESS_MEMCPY
653 bool
654
0aed55af
DW
655config ARCH_HAS_UACCESS_FLUSHCACHE
656 bool
657
ec6347bb
DW
658# arch has a concept of a recoverable synchronous exception due to a
659# memory-read error like x86 machine-check or ARM data-abort, and
660# implements copy_mc_to_{user,kernel} to abort and report
661# 'bytes-transferred' if that exception fires when accessing the source
662# buffer.
663config ARCH_HAS_COPY_MC
522239b4
DW
664 bool
665
214d8ca6
TG
666# Temporary. Goes away when all archs are cleaned up
667config ARCH_STACKWALK
668 bool
669
cd11016e
AP
670config STACKDEPOT
671 bool
672 select STACKTRACE
673
d2620936
YL
674config STACK_HASH_ORDER
675 int "stack depot hash size (12 => 4KB, 20 => 1024KB)"
676 range 12 20
677 default 20
678 depends on STACKDEPOT
679 help
680 Select the hash size as a power of 2 for the stackdepot hash table.
681 Choose a lower value to reduce the memory impact.
682
88459642
OS
683config SBITMAP
684 bool
685
44091d29 686config PARMAN
9d25af69 687 tristate "parman" if COMPILE_TEST
44091d29 688
3dfdecc6
RD
689config OBJAGG
690 tristate "objagg" if COMPILE_TEST
691
2de4ff7b 692endmenu
b35cd988 693
80b0ca98
CH
694config GENERIC_IOREMAP
695 bool
696
e3d59805 697config GENERIC_LIB_ASHLDI3
b35cd988
PD
698 bool
699
e3d59805 700config GENERIC_LIB_ASHRDI3
b35cd988
PD
701 bool
702
e3d59805 703config GENERIC_LIB_LSHRDI3
b35cd988
PD
704 bool
705
e3d59805 706config GENERIC_LIB_MULDI3
b35cd988
PD
707 bool
708
e3d59805 709config GENERIC_LIB_CMPDI2
b35cd988
PD
710 bool
711
e3d59805 712config GENERIC_LIB_UCMPDI2
b35cd988 713 bool
b8265621 714
527701ed
PD
715config GENERIC_LIB_DEVMEM_IS_ALLOWED
716 bool
717
b8265621
JK
718config PLDMFW
719 bool
720 default n
b0706762
JB
721
722config ASN1_ENCODER
723 tristate