projects/linux·blob master · refs

130 lines · 3.4 KiB

1# SPDX-License-Identifier: GPL-2.0-only
2
3# Kconfig for the kernel's cyclic redundancy check (CRC) library code
4
5config CRC4
6 tristate
7 help
8 The CRC4 library functions. Select this if your module uses any of
9 the functions from <linux/crc4.h>.
10
11config CRC7
12 tristate
13 help
14 The CRC7 library functions. Select this if your module uses any of
15 the functions from <linux/crc7.h>.
16
17config CRC8
18 tristate
19 help
20 The CRC8 library functions. Select this if your module uses any of
21 the functions from <linux/crc8.h>.
22
23config CRC16
24 tristate
25 help
26 The CRC16 library functions. Select this if your module uses any of
27 the functions from <linux/crc16.h>.
28
29config CRC_CCITT
30 tristate
31 help
32 The CRC-CCITT library functions. Select this if your module uses any
33 of the functions from <linux/crc-ccitt.h>.
34
35config CRC_ITU_T
36 tristate
37 help
38 The CRC-ITU-T library functions. Select this if your module uses
39 any of the functions from <linux/crc-itu-t.h>.
40
41config CRC_T10DIF
42 tristate
43 help
44 The CRC-T10DIF library functions. Select this if your module uses
45 any of the functions from <linux/crc-t10dif.h>.
46
47config CRC_T10DIF_ARCH
48 bool
49 depends on CRC_T10DIF && CRC_OPTIMIZATIONS
50 default y if ARM && KERNEL_MODE_NEON
51 default y if ARM64
52 default y if PPC64 && ALTIVEC
53 default y if RISCV && RISCV_ISA_ZBC
54 default y if X86
55
56config CRC32
57 tristate
58 select BITREVERSE
59 help
60 The CRC32 library functions. Select this if your module uses any of
61 the functions from <linux/crc32.h> or <linux/crc32c.h>.
62
63config CRC32_ARCH
64 bool
65 depends on CRC32 && CRC_OPTIMIZATIONS
66 default y if ARM && KERNEL_MODE_NEON
67 default y if ARM64
68 default y if LOONGARCH && 64BIT
69 default y if MIPS && CPU_MIPSR6
70 default y if PPC64 && ALTIVEC
71 default y if RISCV && RISCV_ISA_ZBC
72 default y if S390
73 default y if SPARC64
74 default y if X86
75
76config CRC64
77 tristate
78 help
79 The CRC64 library functions. Select this if your module uses any of
80 the functions from <linux/crc64.h>.
81
82config CRC64_ARCH
83 bool
84 depends on CRC64 && CRC_OPTIMIZATIONS
85 default y if ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN
86 default y if ARM64
87 default y if RISCV && RISCV_ISA_ZBC && 64BIT
88 default y if X86_64
89
90config CRC_OPTIMIZATIONS
91 bool "Enable optimized CRC implementations" if EXPERT
92 depends on !UML
93 default y
94 help
95 Disabling this option reduces code size slightly by disabling the
96 architecture-optimized implementations of any CRC variants that are
97 enabled. CRC checksumming performance may get much slower.
98
99 Keep this enabled unless you're really trying to minimize the size of
100 the kernel.
101
102config CRC_KUNIT_TEST
103 tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS
104 depends on KUNIT && (CRC7 || CRC16 || CRC_T10DIF || CRC32 || CRC64)
105 default KUNIT_ALL_TESTS
106 help
107 Unit tests for the CRC library functions.
108
109 This is intended to help people writing architecture-specific
110 optimized versions. If unsure, say N.
111
112config CRC_ENABLE_ALL_FOR_KUNIT
113 tristate "Enable all CRC functions for KUnit test"
114 depends on KUNIT
115 select CRC7
116 select CRC16
117 select CRC_T10DIF
118 select CRC32
119 select CRC64
120 help
121 Enable all CRC functions that have test code in CRC_KUNIT_TEST.
122
123 Enable this only if you'd like the CRC KUnit test suite to test all
124 the CRC variants, even ones that wouldn't otherwise need to be built.
125
126config CRC_BENCHMARK
127 bool "Benchmark for the CRC functions"
128 depends on CRC_KUNIT_TEST
129 help
130 Include benchmarks in the KUnit test suite for the CRC functions.