]> www.infradead.org Git - users/jedix/linux-maple.git/commit
riscv/crc64: add Zbc optimized CRC64 functions
authorEric Biggers <ebiggers@google.com>
Sun, 16 Feb 2025 22:55:30 +0000 (14:55 -0800)
committerEric Biggers <ebiggers@google.com>
Mon, 10 Mar 2025 16:29:27 +0000 (09:29 -0700)
commit511484fa881e8ce32fda63c5c3d3492394dbddda
tree7a8b10bf4afde887ab36d987f160a496c188e47f
parent8bf3e17898eb3dbf1bd07f857a6b06d04602ce78
riscv/crc64: add Zbc optimized CRC64 functions

Wire up crc64_be_arch() and crc64_nvme_arch() for 64-bit RISC-V using
crc-clmul-template.h.  This greatly improves the performance of these
CRCs on Zbc-capable CPUs in 64-bit kernels.

These optimized CRC64 functions are not yet supported in 32-bit kernels,
since crc-clmul-template.h assumes that the CRC fits in an unsigned
long.  That implementation limitation could be addressed, but it would
add a fair bit of complexity, so it has been omitted for now.

Tested-by: Björn Töpel <bjorn@rivosinc.com>
Acked-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20250216225530.306980-5-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@google.com>
arch/riscv/Kconfig
arch/riscv/lib/Makefile
arch/riscv/lib/crc-clmul-consts.h
arch/riscv/lib/crc-clmul.h
arch/riscv/lib/crc64.c [new file with mode: 0644]
arch/riscv/lib/crc64_lsb.c [new file with mode: 0644]
arch/riscv/lib/crc64_msb.c [new file with mode: 0644]