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 ARCH_HAS_CRC_T10DIF 48 bool 49 50config CRC_T10DIF_ARCH 51 bool 52 depends on CRC_T10DIF && CRC_OPTIMIZATIONS 53 default y if ARM && KERNEL_MODE_NEON 54 default y if ARM64 && KERNEL_MODE_NEON 55 default y if PPC64 && ALTIVEC 56 default y if RISCV && RISCV_ISA_ZBC 57 default y if X86 58 59config CRC32 60 tristate 61 select BITREVERSE 62 help 63 The CRC32 library functions. Select this if your module uses any of 64 the functions from <linux/crc32.h> or <linux/crc32c.h>. 65 66config ARCH_HAS_CRC32 67 bool 68 69config CRC32_ARCH 70 bool 71 depends on CRC32 && CRC_OPTIMIZATIONS 72 default y if ARM && KERNEL_MODE_NEON 73 default y if ARM64 74 default y if LOONGARCH 75 default y if MIPS && CPU_MIPSR6 76 default y if PPC64 && ALTIVEC 77 default y if RISCV && RISCV_ISA_ZBC 78 default y if S390 79 default y if SPARC64 80 default y if X86 81 82config CRC64 83 tristate 84 help 85 The CRC64 library functions. Select this if your module uses any of 86 the functions from <linux/crc64.h>. 87 88config ARCH_HAS_CRC64 89 bool 90 91config CRC64_ARCH 92 bool 93 depends on CRC64 && CRC_OPTIMIZATIONS 94 default y if RISCV && RISCV_ISA_ZBC && 64BIT 95 default y if X86_64 96 97config CRC_OPTIMIZATIONS 98 bool "Enable optimized CRC implementations" if EXPERT 99 depends on !UML 100 default y 101 help 102 Disabling this option reduces code size slightly by disabling the 103 architecture-optimized implementations of any CRC variants that are 104 enabled. CRC checksumming performance may get much slower. 105 106 Keep this enabled unless you're really trying to minimize the size of 107 the kernel. 108 109config CRC_KUNIT_TEST 110 tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS 111 depends on KUNIT 112 default KUNIT_ALL_TESTS 113 select CRC7 114 select CRC16 115 select CRC_T10DIF 116 select CRC32 117 select CRC64 118 help 119 Unit tests for the CRC library functions. 120 121 This is intended to help people writing architecture-specific 122 optimized versions. If unsure, say N. 123 124config CRC_BENCHMARK 125 bool "Benchmark for the CRC functions" 126 depends on CRC_KUNIT_TEST 127 help 128 Include benchmarks in the KUnit test suite for the CRC functions. 129