Kconfig 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. #
  3. # Library configuration
  4. #
  5. config BINARY_PRINTF
  6. def_bool n
  7. menu "Library routines"
  8. config RAID6_PQ
  9. tristate
  10. config RAID6_PQ_BENCHMARK
  11. bool "Automatically choose fastest RAID6 PQ functions"
  12. depends on RAID6_PQ
  13. default y
  14. help
  15. Benchmark all available RAID6 PQ functions on init and choose the
  16. fastest one.
  17. config LINEAR_RANGES
  18. tristate
  19. config PACKING
  20. bool "Generic bitfield packing and unpacking"
  21. default n
  22. help
  23. This option provides the packing() helper function, which permits
  24. converting bitfields between a CPU-usable representation and a
  25. memory representation that can have any combination of these quirks:
  26. - Is little endian (bytes are reversed within a 32-bit group)
  27. - The least-significant 32-bit word comes first (within a 64-bit
  28. group)
  29. - The most significant bit of a byte is at its right (bit 0 of a
  30. register description is numerically 2^7).
  31. Drivers may use these helpers to match the bit indices as described
  32. in the data sheets of the peripherals they are in control of.
  33. When in doubt, say N.
  34. config BITREVERSE
  35. tristate
  36. config HAVE_ARCH_BITREVERSE
  37. bool
  38. default n
  39. help
  40. This option enables the use of hardware bit-reversal instructions on
  41. architectures which support such operations.
  42. config ARCH_HAS_STRNCPY_FROM_USER
  43. bool
  44. config ARCH_HAS_STRNLEN_USER
  45. bool
  46. config GENERIC_STRNCPY_FROM_USER
  47. def_bool !ARCH_HAS_STRNCPY_FROM_USER
  48. config GENERIC_STRNLEN_USER
  49. def_bool !ARCH_HAS_STRNLEN_USER
  50. config GENERIC_NET_UTILS
  51. bool
  52. source "lib/math/Kconfig"
  53. config NO_GENERIC_PCI_IOPORT_MAP
  54. bool
  55. config GENERIC_PCI_IOMAP
  56. bool
  57. config GENERIC_IOMAP
  58. bool
  59. select GENERIC_PCI_IOMAP
  60. config STMP_DEVICE
  61. bool
  62. config ARCH_USE_CMPXCHG_LOCKREF
  63. bool
  64. config ARCH_HAS_FAST_MULTIPLIER
  65. bool
  66. config ARCH_USE_SYM_ANNOTATIONS
  67. bool
  68. config INDIRECT_PIO
  69. bool "Access I/O in non-MMIO mode"
  70. depends on ARM64
  71. help
  72. On some platforms where no separate I/O space exists, there are I/O
  73. hosts which can not be accessed in MMIO mode. Using the logical PIO
  74. mechanism, the host-local I/O resource can be mapped into system
  75. logic PIO space shared with MMIO hosts, such as PCI/PCIe, then the
  76. system can access the I/O devices with the mapped-logic PIO through
  77. I/O accessors.
  78. This way has relatively little I/O performance cost. Please make
  79. sure your devices really need this configure item enabled.
  80. When in doubt, say N.
  81. config INDIRECT_IOMEM
  82. bool
  83. help
  84. This is selected by other options/architectures to provide the
  85. emulated iomem accessors.
  86. config INDIRECT_IOMEM_FALLBACK
  87. bool
  88. depends on INDIRECT_IOMEM
  89. help
  90. If INDIRECT_IOMEM is selected, this enables falling back to plain
  91. mmio accesses when the IO memory address is not a registered
  92. emulated region.
  93. config TRACE_MMIO_ACCESS
  94. bool "Register read/write tracing"
  95. depends on TRACING && ARCH_HAVE_TRACE_MMIO_ACCESS
  96. help
  97. Create tracepoints for MMIO read/write operations. These trace events
  98. can be used for logging all MMIO read/write operations.
  99. source "lib/crypto/Kconfig"
  100. config CRC_CCITT
  101. tristate "CRC-CCITT functions"
  102. help
  103. This option is provided for the case where no in-kernel-tree
  104. modules require CRC-CCITT functions, but a module built outside
  105. the kernel tree does. Such modules that use library CRC-CCITT
  106. functions require M here.
  107. config CRC16
  108. tristate "CRC16 functions"
  109. help
  110. This option is provided for the case where no in-kernel-tree
  111. modules require CRC16 functions, but a module built outside
  112. the kernel tree does. Such modules that use library CRC16
  113. functions require M here.
  114. config CRC_T10DIF
  115. tristate "CRC calculation for the T10 Data Integrity Field"
  116. select CRYPTO
  117. select CRYPTO_CRCT10DIF
  118. help
  119. This option is only needed if a module that's not in the
  120. kernel tree needs to calculate CRC checks for use with the
  121. SCSI data integrity subsystem.
  122. config CRC64_ROCKSOFT
  123. tristate "CRC calculation for the Rocksoft model CRC64"
  124. select CRC64
  125. select CRYPTO
  126. select CRYPTO_CRC64_ROCKSOFT
  127. help
  128. This option provides a CRC64 API to a registered crypto driver.
  129. This is used with the block layer's data integrity subsystem.
  130. config CRC_ITU_T
  131. tristate "CRC ITU-T V.41 functions"
  132. help
  133. This option is provided for the case where no in-kernel-tree
  134. modules require CRC ITU-T V.41 functions, but a module built outside
  135. the kernel tree does. Such modules that use library CRC ITU-T V.41
  136. functions require M here.
  137. config CRC32
  138. tristate "CRC32/CRC32c functions"
  139. default y
  140. select BITREVERSE
  141. help
  142. This option is provided for the case where no in-kernel-tree
  143. modules require CRC32/CRC32c functions, but a module built outside
  144. the kernel tree does. Such modules that use library CRC32/CRC32c
  145. functions require M here.
  146. config CRC32_SELFTEST
  147. tristate "CRC32 perform self test on init"
  148. depends on CRC32
  149. help
  150. This option enables the CRC32 library functions to perform a
  151. self test on initialization. The self test computes crc32_le
  152. and crc32_be over byte strings with random alignment and length
  153. and computes the total elapsed time and number of bytes processed.
  154. choice
  155. prompt "CRC32 implementation"
  156. depends on CRC32
  157. default CRC32_SLICEBY8
  158. help
  159. This option allows a kernel builder to override the default choice
  160. of CRC32 algorithm. Choose the default ("slice by 8") unless you
  161. know that you need one of the others.
  162. config CRC32_SLICEBY8
  163. bool "Slice by 8 bytes"
  164. help
  165. Calculate checksum 8 bytes at a time with a clever slicing algorithm.
  166. This is the fastest algorithm, but comes with a 8KiB lookup table.
  167. Most modern processors have enough cache to hold this table without
  168. thrashing the cache.
  169. This is the default implementation choice. Choose this one unless
  170. you have a good reason not to.
  171. config CRC32_SLICEBY4
  172. bool "Slice by 4 bytes"
  173. help
  174. Calculate checksum 4 bytes at a time with a clever slicing algorithm.
  175. This is a bit slower than slice by 8, but has a smaller 4KiB lookup
  176. table.
  177. Only choose this option if you know what you are doing.
  178. config CRC32_SARWATE
  179. bool "Sarwate's Algorithm (one byte at a time)"
  180. help
  181. Calculate checksum a byte at a time using Sarwate's algorithm. This
  182. is not particularly fast, but has a small 256 byte lookup table.
  183. Only choose this option if you know what you are doing.
  184. config CRC32_BIT
  185. bool "Classic Algorithm (one bit at a time)"
  186. help
  187. Calculate checksum one bit at a time. This is VERY slow, but has
  188. no lookup table. This is provided as a debugging option.
  189. Only choose this option if you are debugging crc32.
  190. endchoice
  191. config CRC64
  192. tristate "CRC64 functions"
  193. help
  194. This option is provided for the case where no in-kernel-tree
  195. modules require CRC64 functions, but a module built outside
  196. the kernel tree does. Such modules that use library CRC64
  197. functions require M here.
  198. config CRC4
  199. tristate "CRC4 functions"
  200. help
  201. This option is provided for the case where no in-kernel-tree
  202. modules require CRC4 functions, but a module built outside
  203. the kernel tree does. Such modules that use library CRC4
  204. functions require M here.
  205. config CRC7
  206. tristate "CRC7 functions"
  207. help
  208. This option is provided for the case where no in-kernel-tree
  209. modules require CRC7 functions, but a module built outside
  210. the kernel tree does. Such modules that use library CRC7
  211. functions require M here.
  212. config LIBCRC32C
  213. tristate "CRC32c (Castagnoli, et al) Cyclic Redundancy-Check"
  214. select CRYPTO
  215. select CRYPTO_CRC32C
  216. help
  217. This option is provided for the case where no in-kernel-tree
  218. modules require CRC32c functions, but a module built outside the
  219. kernel tree does. Such modules that use library CRC32c functions
  220. require M here. See Castagnoli93.
  221. Module will be libcrc32c.
  222. config CRC8
  223. tristate "CRC8 function"
  224. help
  225. This option provides CRC8 function. Drivers may select this
  226. when they need to do cyclic redundancy check according CRC8
  227. algorithm. Module will be called crc8.
  228. config XXHASH
  229. tristate
  230. config AUDIT_GENERIC
  231. bool
  232. depends on AUDIT && !AUDIT_ARCH
  233. default y
  234. config AUDIT_ARCH_COMPAT_GENERIC
  235. bool
  236. default n
  237. config AUDIT_COMPAT_GENERIC
  238. bool
  239. depends on AUDIT_GENERIC && AUDIT_ARCH_COMPAT_GENERIC && COMPAT
  240. default y
  241. config RANDOM32_SELFTEST
  242. bool "PRNG perform self test on init"
  243. help
  244. This option enables the 32 bit PRNG library functions to perform a
  245. self test on initialization.
  246. #
  247. # compression support is select'ed if needed
  248. #
  249. config 842_COMPRESS
  250. select CRC32
  251. tristate
  252. config 842_DECOMPRESS
  253. select CRC32
  254. tristate
  255. config ZLIB_INFLATE
  256. tristate
  257. config ZLIB_DEFLATE
  258. tristate
  259. select BITREVERSE
  260. config ZLIB_DFLTCC
  261. def_bool y
  262. depends on S390
  263. prompt "Enable s390x DEFLATE CONVERSION CALL support for kernel zlib"
  264. help
  265. Enable s390x hardware support for zlib in the kernel.
  266. config LZO_COMPRESS
  267. tristate
  268. config LZO_DECOMPRESS
  269. tristate
  270. config LZ4_COMPRESS
  271. tristate
  272. config LZ4HC_COMPRESS
  273. tristate
  274. config LZ4_DECOMPRESS
  275. tristate
  276. config ZSTD_COMMON
  277. select XXHASH
  278. tristate
  279. config ZSTD_COMPRESS
  280. select ZSTD_COMMON
  281. tristate
  282. config ZSTD_DECOMPRESS
  283. select ZSTD_COMMON
  284. tristate
  285. source "lib/xz/Kconfig"
  286. #
  287. # These all provide a common interface (hence the apparent duplication with
  288. # ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
  289. #
  290. config DECOMPRESS_GZIP
  291. select ZLIB_INFLATE
  292. tristate
  293. config DECOMPRESS_BZIP2
  294. tristate
  295. config DECOMPRESS_LZMA
  296. tristate
  297. config DECOMPRESS_XZ
  298. select XZ_DEC
  299. tristate
  300. config DECOMPRESS_LZO
  301. select LZO_DECOMPRESS
  302. tristate
  303. config DECOMPRESS_LZ4
  304. select LZ4_DECOMPRESS
  305. tristate
  306. config DECOMPRESS_ZSTD
  307. select ZSTD_DECOMPRESS
  308. tristate
  309. #
  310. # Generic allocator support is selected if needed
  311. #
  312. config GENERIC_ALLOCATOR
  313. bool
  314. #
  315. # reed solomon support is select'ed if needed
  316. #
  317. config REED_SOLOMON
  318. tristate
  319. config REED_SOLOMON_ENC8
  320. bool
  321. config REED_SOLOMON_DEC8
  322. bool
  323. config REED_SOLOMON_ENC16
  324. bool
  325. config REED_SOLOMON_DEC16
  326. bool
  327. #
  328. # BCH support is selected if needed
  329. #
  330. config BCH
  331. tristate
  332. config BCH_CONST_PARAMS
  333. bool
  334. help
  335. Drivers may select this option to force specific constant
  336. values for parameters 'm' (Galois field order) and 't'
  337. (error correction capability). Those specific values must
  338. be set by declaring default values for symbols BCH_CONST_M
  339. and BCH_CONST_T.
  340. Doing so will enable extra compiler optimizations,
  341. improving encoding and decoding performance up to 2x for
  342. usual (m,t) values (typically such that m*t < 200).
  343. When this option is selected, the BCH library supports
  344. only a single (m,t) configuration. This is mainly useful
  345. for NAND flash board drivers requiring known, fixed BCH
  346. parameters.
  347. config BCH_CONST_M
  348. int
  349. range 5 15
  350. help
  351. Constant value for Galois field order 'm'. If 'k' is the
  352. number of data bits to protect, 'm' should be chosen such
  353. that (k + m*t) <= 2**m - 1.
  354. Drivers should declare a default value for this symbol if
  355. they select option BCH_CONST_PARAMS.
  356. config BCH_CONST_T
  357. int
  358. help
  359. Constant value for error correction capability in bits 't'.
  360. Drivers should declare a default value for this symbol if
  361. they select option BCH_CONST_PARAMS.
  362. #
  363. # Textsearch support is select'ed if needed
  364. #
  365. config TEXTSEARCH
  366. bool
  367. config TEXTSEARCH_KMP
  368. tristate
  369. config TEXTSEARCH_BM
  370. tristate
  371. config TEXTSEARCH_FSM
  372. tristate
  373. config BTREE
  374. bool
  375. config INTERVAL_TREE
  376. bool
  377. help
  378. Simple, embeddable, interval-tree. Can find the start of an
  379. overlapping range in log(n) time and then iterate over all
  380. overlapping nodes. The algorithm is implemented as an
  381. augmented rbtree.
  382. See:
  383. Documentation/core-api/rbtree.rst
  384. for more information.
  385. config XARRAY_MULTI
  386. bool
  387. help
  388. Support entries which occupy multiple consecutive indices in the
  389. XArray.
  390. config ASSOCIATIVE_ARRAY
  391. bool
  392. help
  393. Generic associative array. Can be searched and iterated over whilst
  394. it is being modified. It is also reasonably quick to search and
  395. modify. The algorithms are non-recursive, and the trees are highly
  396. capacious.
  397. See:
  398. Documentation/core-api/assoc_array.rst
  399. for more information.
  400. config HAS_IOMEM
  401. bool
  402. depends on !NO_IOMEM
  403. default y
  404. config HAS_IOPORT_MAP
  405. bool
  406. depends on HAS_IOMEM && !NO_IOPORT_MAP
  407. default y
  408. source "kernel/dma/Kconfig"
  409. config SGL_ALLOC
  410. bool
  411. default n
  412. config IOMMU_HELPER
  413. bool
  414. config CHECK_SIGNATURE
  415. bool
  416. config CPUMASK_OFFSTACK
  417. bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
  418. help
  419. Use dynamic allocation for cpumask_var_t, instead of putting
  420. them on the stack. This is a bit more expensive, but avoids
  421. stack overflow.
  422. config FORCE_NR_CPUS
  423. bool "NR_CPUS is set to an actual number of CPUs"
  424. depends on SMP
  425. help
  426. Say Yes if you have NR_CPUS set to an actual number of possible
  427. CPUs in your system, not to a default value. This forces the core
  428. code to rely on compile-time value and optimize kernel routines
  429. better.
  430. config CPU_RMAP
  431. bool
  432. depends on SMP
  433. config DQL
  434. bool
  435. config GLOB
  436. bool
  437. # This actually supports modular compilation, but the module overhead
  438. # is ridiculous for the amount of code involved. Until an out-of-tree
  439. # driver asks for it, we'll just link it directly it into the kernel
  440. # when required. Since we're ignoring out-of-tree users, there's also
  441. # no need bother prompting for a manual decision:
  442. # prompt "glob_match() function"
  443. help
  444. This option provides a glob_match function for performing
  445. simple text pattern matching. It originated in the ATA code
  446. to blacklist particular drive models, but other device drivers
  447. may need similar functionality.
  448. All drivers in the Linux kernel tree that require this function
  449. should automatically select this option. Say N unless you
  450. are compiling an out-of tree driver which tells you that it
  451. depends on this.
  452. config GLOB_SELFTEST
  453. tristate "glob self-test on init"
  454. depends on GLOB
  455. help
  456. This option enables a simple self-test of the glob_match
  457. function on startup. It is primarily useful for people
  458. working on the code to ensure they haven't introduced any
  459. regressions.
  460. It only adds a little bit of code and slows kernel boot (or
  461. module load) by a small amount, so you're welcome to play with
  462. it, but you probably don't need it.
  463. #
  464. # Netlink attribute parsing support is select'ed if needed
  465. #
  466. config NLATTR
  467. bool
  468. #
  469. # Generic 64-bit atomic support is selected if needed
  470. #
  471. config GENERIC_ATOMIC64
  472. bool
  473. config LRU_CACHE
  474. tristate
  475. config CLZ_TAB
  476. bool
  477. config IRQ_POLL
  478. bool "IRQ polling library"
  479. help
  480. Helper library to poll interrupt mitigation using polling.
  481. config MPILIB
  482. tristate
  483. select CLZ_TAB
  484. help
  485. Multiprecision maths library from GnuPG.
  486. It is used to implement RSA digital signature verification,
  487. which is used by IMA/EVM digital signature extension.
  488. config SIGNATURE
  489. tristate
  490. depends on KEYS
  491. select CRYPTO
  492. select CRYPTO_SHA1
  493. select MPILIB
  494. help
  495. Digital signature verification. Currently only RSA is supported.
  496. Implementation is done using GnuPG MPI library
  497. config DIMLIB
  498. bool
  499. help
  500. Dynamic Interrupt Moderation library.
  501. Implements an algorithm for dynamically changing CQ moderation values
  502. according to run time performance.
  503. #
  504. # libfdt files, only selected if needed.
  505. #
  506. config LIBFDT
  507. bool
  508. config OID_REGISTRY
  509. tristate
  510. help
  511. Enable fast lookup object identifier registry.
  512. config UCS2_STRING
  513. tristate
  514. #
  515. # generic vdso
  516. #
  517. source "lib/vdso/Kconfig"
  518. source "lib/fonts/Kconfig"
  519. config SG_SPLIT
  520. def_bool n
  521. help
  522. Provides a helper to split scatterlists into chunks, each chunk being
  523. a scatterlist. This should be selected by a driver or an API which
  524. whishes to split a scatterlist amongst multiple DMA channels.
  525. config SG_POOL
  526. def_bool n
  527. help
  528. Provides a helper to allocate chained scatterlists. This should be
  529. selected by a driver or an API which whishes to allocate chained
  530. scatterlist.
  531. #
  532. # sg chaining option
  533. #
  534. config ARCH_NO_SG_CHAIN
  535. def_bool n
  536. config ARCH_HAS_PMEM_API
  537. bool
  538. config MEMREGION
  539. bool
  540. config ARCH_HAS_MEMREMAP_COMPAT_ALIGN
  541. bool
  542. # use memcpy to implement user copies for nommu architectures
  543. config UACCESS_MEMCPY
  544. bool
  545. config ARCH_HAS_UACCESS_FLUSHCACHE
  546. bool
  547. # arch has a concept of a recoverable synchronous exception due to a
  548. # memory-read error like x86 machine-check or ARM data-abort, and
  549. # implements copy_mc_to_{user,kernel} to abort and report
  550. # 'bytes-transferred' if that exception fires when accessing the source
  551. # buffer.
  552. config ARCH_HAS_COPY_MC
  553. bool
  554. # Temporary. Goes away when all archs are cleaned up
  555. config ARCH_STACKWALK
  556. bool
  557. config STACKDEPOT
  558. bool
  559. select STACKTRACE
  560. config STACKDEPOT_ALWAYS_INIT
  561. bool
  562. select STACKDEPOT
  563. config REF_TRACKER
  564. bool
  565. depends on STACKTRACE_SUPPORT
  566. select STACKDEPOT
  567. config SBITMAP
  568. bool
  569. config PARMAN
  570. tristate "parman" if COMPILE_TEST
  571. config OBJAGG
  572. tristate "objagg" if COMPILE_TEST
  573. endmenu
  574. config GENERIC_IOREMAP
  575. bool
  576. config GENERIC_LIB_ASHLDI3
  577. bool
  578. config GENERIC_LIB_ASHRDI3
  579. bool
  580. config GENERIC_LIB_LSHRDI3
  581. bool
  582. config GENERIC_LIB_MULDI3
  583. bool
  584. config GENERIC_LIB_CMPDI2
  585. bool
  586. config GENERIC_LIB_UCMPDI2
  587. bool
  588. config GENERIC_LIB_DEVMEM_IS_ALLOWED
  589. bool
  590. config PLDMFW
  591. bool
  592. default n
  593. config ASN1_ENCODER
  594. tristate
  595. config POLYNOMIAL
  596. tristate