diff options
-rw-r--r-- | Documentation/core-api/kernel-api.rst | 14 | ||||
-rw-r--r-- | MAINTAINERS | 3 | ||||
-rw-r--r-- | include/linux/crc64.h | 3 | ||||
-rw-r--r-- | lib/Kconfig | 88 | ||||
-rw-r--r-- | lib/Kconfig.debug | 21 | ||||
-rw-r--r-- | lib/Makefile | 32 | ||||
-rw-r--r-- | lib/crc/.gitignore | 5 | ||||
-rw-r--r-- | lib/crc/Kconfig | 111 | ||||
-rw-r--r-- | lib/crc/Makefile | 32 | ||||
-rw-r--r-- | lib/crc/crc-ccitt.c (renamed from lib/crc-ccitt.c) | 3 | ||||
-rw-r--r-- | lib/crc/crc-itu-t.c (renamed from lib/crc-itu-t.c) | 0 | ||||
-rw-r--r-- | lib/crc/crc-t10dif.c (renamed from lib/crc-t10dif.c) | 0 | ||||
-rw-r--r-- | lib/crc/crc16.c (renamed from lib/crc16.c) | 0 | ||||
-rw-r--r-- | lib/crc/crc32.c (renamed from lib/crc32.c) | 0 | ||||
-rw-r--r-- | lib/crc/crc4.c (renamed from lib/crc4.c) | 0 | ||||
-rw-r--r-- | lib/crc/crc64.c (renamed from lib/crc64.c) | 0 | ||||
-rw-r--r-- | lib/crc/crc7.c (renamed from lib/crc7.c) | 0 | ||||
-rw-r--r-- | lib/crc/crc8.c (renamed from lib/crc8.c) | 0 | ||||
-rw-r--r-- | lib/crc/gen_crc32table.c (renamed from lib/gen_crc32table.c) | 4 | ||||
-rw-r--r-- | lib/crc/gen_crc64table.c (renamed from lib/gen_crc64table.c) | 11 | ||||
-rw-r--r-- | lib/crc/tests/Makefile | 2 | ||||
-rw-r--r-- | lib/crc/tests/crc_kunit.c (renamed from lib/tests/crc_kunit.c) | 0 | ||||
-rw-r--r-- | lib/tests/Makefile | 1 |
23 files changed, 164 insertions, 166 deletions
diff --git a/Documentation/core-api/kernel-api.rst b/Documentation/core-api/kernel-api.rst index ae92a2571388..c4642d9f13a9 100644 --- a/Documentation/core-api/kernel-api.rst +++ b/Documentation/core-api/kernel-api.rst @@ -136,24 +136,24 @@ Arithmetic Overflow Checking CRC Functions ------------- -.. kernel-doc:: lib/crc4.c +.. kernel-doc:: lib/crc/crc4.c :export: -.. kernel-doc:: lib/crc7.c +.. kernel-doc:: lib/crc/crc7.c :export: -.. kernel-doc:: lib/crc8.c +.. kernel-doc:: lib/crc/crc8.c :export: -.. kernel-doc:: lib/crc16.c +.. kernel-doc:: lib/crc/crc16.c :export: -.. kernel-doc:: lib/crc32.c +.. kernel-doc:: lib/crc/crc32.c -.. kernel-doc:: lib/crc-ccitt.c +.. kernel-doc:: lib/crc/crc-ccitt.c :export: -.. kernel-doc:: lib/crc-itu-t.c +.. kernel-doc:: lib/crc/crc-itu-t.c :export: Base 2 log and power Functions diff --git a/MAINTAINERS b/MAINTAINERS index 4bac4ea21b64..b0ec17dfbe03 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6361,8 +6361,7 @@ T: git https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git crc-ne F: Documentation/staging/crc* F: arch/*/lib/crc* F: include/linux/crc* -F: lib/crc* -F: lib/tests/crc_kunit.c +F: lib/crc/ F: scripts/gen-crc-consts.py CREATIVE SB0540 diff --git a/include/linux/crc64.h b/include/linux/crc64.h index 41de30b907df..b6aa290a7931 100644 --- a/include/linux/crc64.h +++ b/include/linux/crc64.h @@ -1,7 +1,4 @@ /* SPDX-License-Identifier: GPL-2.0 */ -/* - * See lib/crc64.c for the related specification and polynomial arithmetic. - */ #ifndef _LINUX_CRC64_H #define _LINUX_CRC64_H diff --git a/lib/Kconfig b/lib/Kconfig index 37db228f70a9..c483951b624f 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -136,95 +136,9 @@ config TRACE_MMIO_ACCESS Create tracepoints for MMIO read/write operations. These trace events can be used for logging all MMIO read/write operations. +source "lib/crc/Kconfig" source "lib/crypto/Kconfig" -config CRC_CCITT - tristate - help - The CRC-CCITT library functions. Select this if your module uses any - of the functions from <linux/crc-ccitt.h>. - -config CRC16 - tristate - help - The CRC16 library functions. Select this if your module uses any of - the functions from <linux/crc16.h>. - -config CRC_T10DIF - tristate - help - The CRC-T10DIF library functions. Select this if your module uses - any of the functions from <linux/crc-t10dif.h>. - -config ARCH_HAS_CRC_T10DIF - bool - -config CRC_T10DIF_ARCH - tristate - default CRC_T10DIF if ARCH_HAS_CRC_T10DIF && CRC_OPTIMIZATIONS - -config CRC_ITU_T - tristate - help - The CRC-ITU-T library functions. Select this if your module uses - any of the functions from <linux/crc-itu-t.h>. - -config CRC32 - tristate - select BITREVERSE - help - The CRC32 library functions. Select this if your module uses any of - the functions from <linux/crc32.h> or <linux/crc32c.h>. - -config ARCH_HAS_CRC32 - bool - -config CRC32_ARCH - tristate - default CRC32 if ARCH_HAS_CRC32 && CRC_OPTIMIZATIONS - -config CRC64 - tristate - help - The CRC64 library functions. Select this if your module uses any of - the functions from <linux/crc64.h>. - -config ARCH_HAS_CRC64 - bool - -config CRC64_ARCH - tristate - default CRC64 if ARCH_HAS_CRC64 && CRC_OPTIMIZATIONS - -config CRC4 - tristate - help - The CRC4 library functions. Select this if your module uses any of - the functions from <linux/crc4.h>. - -config CRC7 - tristate - help - The CRC7 library functions. Select this if your module uses any of - the functions from <linux/crc7.h>. - -config CRC8 - tristate - help - The CRC8 library functions. Select this if your module uses any of - the functions from <linux/crc8.h>. - -config CRC_OPTIMIZATIONS - bool "Enable optimized CRC implementations" if EXPERT - default y - help - Disabling this option reduces code size slightly by disabling the - architecture-optimized implementations of any CRC variants that are - enabled. CRC checksumming performance may get much slower. - - Keep this enabled unless you're really trying to minimize the size of - the kernel. - config XXHASH tristate diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index ebe33181b6e6..3fda96761adb 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -2901,27 +2901,6 @@ config HW_BREAKPOINT_KUNIT_TEST If unsure, say N. -config CRC_KUNIT_TEST - tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS - depends on KUNIT - default KUNIT_ALL_TESTS - select CRC7 - select CRC16 - select CRC_T10DIF - select CRC32 - select CRC64 - help - Unit tests for the CRC library functions. - - This is intended to help people writing architecture-specific - optimized versions. If unsure, say N. - -config CRC_BENCHMARK - bool "Benchmark for the CRC functions" - depends on CRC_KUNIT_TEST - help - Include benchmarks in the KUnit test suite for the CRC functions. - config SIPHASH_KUNIT_TEST tristate "Perform selftest on siphash functions" if !KUNIT_ALL_TESTS depends on KUNIT diff --git a/lib/Makefile b/lib/Makefile index c38582f187dd..14a5928bb57f 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -122,7 +122,7 @@ endif obj-$(CONFIG_DEBUG_INFO_REDUCED) += debug_info.o CFLAGS_debug_info.o += $(call cc-option, -femit-struct-debug-detailed=any) -obj-y += math/ crypto/ tests/ vdso/ +obj-y += math/ crc/ crypto/ tests/ vdso/ obj-$(CONFIG_GENERIC_IOMAP) += iomap.o obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o @@ -148,15 +148,6 @@ obj-$(CONFIG_BITREVERSE) += bitrev.o obj-$(CONFIG_LINEAR_RANGES) += linear_ranges.o obj-$(CONFIG_PACKING) += packing.o obj-$(CONFIG_PACKING_KUNIT_TEST) += packing_test.o -obj-$(CONFIG_CRC_CCITT) += crc-ccitt.o -obj-$(CONFIG_CRC16) += crc16.o -obj-$(CONFIG_CRC_T10DIF)+= crc-t10dif.o -obj-$(CONFIG_CRC_ITU_T) += crc-itu-t.o -obj-$(CONFIG_CRC32) += crc32.o -obj-$(CONFIG_CRC64) += crc64.o -obj-$(CONFIG_CRC4) += crc4.o -obj-$(CONFIG_CRC7) += crc7.o -obj-$(CONFIG_CRC8) += crc8.o obj-$(CONFIG_XXHASH) += xxhash.o obj-$(CONFIG_GENERIC_ALLOCATOR) += genalloc.o @@ -294,27 +285,6 @@ obj-$(CONFIG_ASN1_ENCODER) += asn1_encoder.o obj-$(CONFIG_FONT_SUPPORT) += fonts/ -hostprogs := gen_crc32table -hostprogs += gen_crc64table -clean-files := crc32table.h -clean-files += crc64table.h - -$(obj)/crc32.o: $(obj)/crc32table.h - -quiet_cmd_crc32 = GEN $@ - cmd_crc32 = $< > $@ - -$(obj)/crc32table.h: $(obj)/gen_crc32table - $(call cmd,crc32) - -$(obj)/crc64.o: $(obj)/crc64table.h - -quiet_cmd_crc64 = GEN $@ - cmd_crc64 = $< > $@ - -$(obj)/crc64table.h: $(obj)/gen_crc64table - $(call cmd,crc64) - # # Build a fast OID lookip registry from include/linux/oid_registry.h # diff --git a/lib/crc/.gitignore b/lib/crc/.gitignore new file mode 100644 index 000000000000..a9e48103c9fb --- /dev/null +++ b/lib/crc/.gitignore @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only +/crc32table.h +/crc64table.h +/gen_crc32table +/gen_crc64table diff --git a/lib/crc/Kconfig b/lib/crc/Kconfig new file mode 100644 index 000000000000..e0e7168b74c7 --- /dev/null +++ b/lib/crc/Kconfig @@ -0,0 +1,111 @@ +# SPDX-License-Identifier: GPL-2.0-only + +# Kconfig for the kernel's cyclic redundancy check (CRC) library code + +config CRC4 + tristate + help + The CRC4 library functions. Select this if your module uses any of + the functions from <linux/crc4.h>. + +config CRC7 + tristate + help + The CRC7 library functions. Select this if your module uses any of + the functions from <linux/crc7.h>. + +config CRC8 + tristate + help + The CRC8 library functions. Select this if your module uses any of + the functions from <linux/crc8.h>. + +config CRC16 + tristate + help + The CRC16 library functions. Select this if your module uses any of + the functions from <linux/crc16.h>. + +config CRC_CCITT + tristate + help + The CRC-CCITT library functions. Select this if your module uses any + of the functions from <linux/crc-ccitt.h>. + +config CRC_ITU_T + tristate + help + The CRC-ITU-T library functions. Select this if your module uses + any of the functions from <linux/crc-itu-t.h>. + +config CRC_T10DIF + tristate + help + The CRC-T10DIF library functions. Select this if your module uses + any of the functions from <linux/crc-t10dif.h>. + +config ARCH_HAS_CRC_T10DIF + bool + +config CRC_T10DIF_ARCH + tristate + default CRC_T10DIF if ARCH_HAS_CRC_T10DIF && CRC_OPTIMIZATIONS + +config CRC32 + tristate + select BITREVERSE + help + The CRC32 library functions. Select this if your module uses any of + the functions from <linux/crc32.h> or <linux/crc32c.h>. + +config ARCH_HAS_CRC32 + bool + +config CRC32_ARCH + tristate + default CRC32 if ARCH_HAS_CRC32 && CRC_OPTIMIZATIONS + +config CRC64 + tristate + help + The CRC64 library functions. Select this if your module uses any of + the functions from <linux/crc64.h>. + +config ARCH_HAS_CRC64 + bool + +config CRC64_ARCH + tristate + default CRC64 if ARCH_HAS_CRC64 && CRC_OPTIMIZATIONS + +config CRC_OPTIMIZATIONS + bool "Enable optimized CRC implementations" if EXPERT + default y + help + Disabling this option reduces code size slightly by disabling the + architecture-optimized implementations of any CRC variants that are + enabled. CRC checksumming performance may get much slower. + + Keep this enabled unless you're really trying to minimize the size of + the kernel. + +config CRC_KUNIT_TEST + tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS + depends on KUNIT + default KUNIT_ALL_TESTS + select CRC7 + select CRC16 + select CRC_T10DIF + select CRC32 + select CRC64 + help + Unit tests for the CRC library functions. + + This is intended to help people writing architecture-specific + optimized versions. If unsure, say N. + +config CRC_BENCHMARK + bool "Benchmark for the CRC functions" + depends on CRC_KUNIT_TEST + help + Include benchmarks in the KUnit test suite for the CRC functions. diff --git a/lib/crc/Makefile b/lib/crc/Makefile new file mode 100644 index 000000000000..ff4c30dda452 --- /dev/null +++ b/lib/crc/Makefile @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: GPL-2.0-only + +# Makefile for the kernel's cyclic redundancy check (CRC) library code + +obj-$(CONFIG_CRC4) += crc4.o +obj-$(CONFIG_CRC7) += crc7.o +obj-$(CONFIG_CRC8) += crc8.o +obj-$(CONFIG_CRC16) += crc16.o +obj-$(CONFIG_CRC_CCITT) += crc-ccitt.o +obj-$(CONFIG_CRC_ITU_T) += crc-itu-t.o +obj-$(CONFIG_CRC_T10DIF) += crc-t10dif.o +obj-$(CONFIG_CRC32) += crc32.o +obj-$(CONFIG_CRC64) += crc64.o +obj-y += tests/ + +hostprogs := gen_crc32table gen_crc64table +clean-files := crc32table.h crc64table.h + +$(obj)/crc32.o: $(obj)/crc32table.h +$(obj)/crc64.o: $(obj)/crc64table.h + +quiet_cmd_crc32 = GEN $@ + cmd_crc32 = $< > $@ + +quiet_cmd_crc64 = GEN $@ + cmd_crc64 = $< > $@ + +$(obj)/crc32table.h: $(obj)/gen_crc32table + $(call cmd,crc32) + +$(obj)/crc64table.h: $(obj)/gen_crc64table + $(call cmd,crc64) diff --git a/lib/crc-ccitt.c b/lib/crc/crc-ccitt.c index 9cddf35d3b66..8d2bc419230b 100644 --- a/lib/crc-ccitt.c +++ b/lib/crc/crc-ccitt.c @@ -1,7 +1,4 @@ // SPDX-License-Identifier: GPL-2.0-only -/* - * linux/lib/crc-ccitt.c - */ #include <linux/types.h> #include <linux/module.h> diff --git a/lib/crc-itu-t.c b/lib/crc/crc-itu-t.c index 1d26a1647da5..1d26a1647da5 100644 --- a/lib/crc-itu-t.c +++ b/lib/crc/crc-itu-t.c diff --git a/lib/crc-t10dif.c b/lib/crc/crc-t10dif.c index 311c2ab829f1..311c2ab829f1 100644 --- a/lib/crc-t10dif.c +++ b/lib/crc/crc-t10dif.c diff --git a/lib/crc16.c b/lib/crc/crc16.c index 9c71eda9bf4b..9c71eda9bf4b 100644 --- a/lib/crc16.c +++ b/lib/crc/crc16.c diff --git a/lib/crc32.c b/lib/crc/crc32.c index 6811b37df2aa..6811b37df2aa 100644 --- a/lib/crc32.c +++ b/lib/crc/crc32.c diff --git a/lib/crc4.c b/lib/crc/crc4.c index e7e1779c67d9..e7e1779c67d9 100644 --- a/lib/crc4.c +++ b/lib/crc/crc4.c diff --git a/lib/crc64.c b/lib/crc/crc64.c index 5b1b17057f0a..5b1b17057f0a 100644 --- a/lib/crc64.c +++ b/lib/crc/crc64.c diff --git a/lib/crc7.c b/lib/crc/crc7.c index 8dd991cc6114..8dd991cc6114 100644 --- a/lib/crc7.c +++ b/lib/crc/crc7.c diff --git a/lib/crc8.c b/lib/crc/crc8.c index 1ad8e501d9b6..1ad8e501d9b6 100644 --- a/lib/crc8.c +++ b/lib/crc/crc8.c diff --git a/lib/gen_crc32table.c b/lib/crc/gen_crc32table.c index 6d03425b849e..9a7f31658e35 100644 --- a/lib/gen_crc32table.c +++ b/lib/crc/gen_crc32table.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include <stdio.h> -#include "../include/linux/crc32poly.h" -#include "../include/generated/autoconf.h" +#include "../../include/linux/crc32poly.h" +#include "../../include/generated/autoconf.h" #include <inttypes.h> static uint32_t crc32table_le[256]; diff --git a/lib/gen_crc64table.c b/lib/crc/gen_crc64table.c index e05a4230a0a0..f2be9f62bab7 100644 --- a/lib/gen_crc64table.c +++ b/lib/crc/gen_crc64table.c @@ -1,14 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 /* - * Generate lookup table for the table-driven CRC64 calculation. - * - * gen_crc64table is executed in kernel build time and generates - * lib/crc64table.h. This header is included by lib/crc64.c for - * the table-driven CRC64 calculation. - * - * See lib/crc64.c for more information about which specification - * and polynomial arithmetic that gen_crc64table.c follows to - * generate the lookup table. + * This host program runs at kernel build time and generates the lookup tables + * used by the generic CRC64 code. * * Copyright 2018 SUSE Linux. * Author: Coly Li <colyli@suse.de> diff --git a/lib/crc/tests/Makefile b/lib/crc/tests/Makefile new file mode 100644 index 000000000000..65f63c318ef5 --- /dev/null +++ b/lib/crc/tests/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_CRC_KUNIT_TEST) += crc_kunit.o diff --git a/lib/tests/crc_kunit.c b/lib/crc/tests/crc_kunit.c index f08d985d8860..f08d985d8860 100644 --- a/lib/tests/crc_kunit.c +++ b/lib/crc/tests/crc_kunit.c diff --git a/lib/tests/Makefile b/lib/tests/Makefile index 56d645014482..741d3ac2cba2 100644 --- a/lib/tests/Makefile +++ b/lib/tests/Makefile @@ -10,7 +10,6 @@ obj-$(CONFIG_BLACKHOLE_DEV_KUNIT_TEST) += blackhole_dev_kunit.o obj-$(CONFIG_CHECKSUM_KUNIT) += checksum_kunit.o obj-$(CONFIG_CMDLINE_KUNIT_TEST) += cmdline_kunit.o obj-$(CONFIG_CPUMASK_KUNIT_TEST) += cpumask_kunit.o -obj-$(CONFIG_CRC_KUNIT_TEST) += crc_kunit.o CFLAGS_fortify_kunit.o += $(call cc-disable-warning, unsequenced) CFLAGS_fortify_kunit.o += $(call cc-disable-warning, stringop-overread) CFLAGS_fortify_kunit.o += $(call cc-disable-warning, stringop-truncation) |