[PATCH 00/11] Wire up CRC-T10DIF library functions to arch-optimized code
Zhihang Shao
zhihang.shao.iscas at gmail.com
Tue Nov 19 21:05:58 AEDT 2024
On 2024/11/17 8:22, Eric Biggers wrote:
> This patchset is also available in git via:
>
> git fetchhttps://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git crc-t10dif-lib-v1
>
> This patchset updates the kernel's CRC-T10DIF library functions to be
> directly optimized for x86, arm, arm64, and powerpc without taking an
> unnecessary and inefficient detour through the crypto API. It follows
> the same approach that I'm taking for CRC32 in the patchset
> https://lore.kernel.org/linux-crypto/20241103223154.136127-1-ebiggers@kernel.org
>
> This patchset also adds a CRC KUnit test suite that covers multiple CRC
> variants, and deletes some older ad-hoc tests that are obsoleted by it.
>
> This patchset has several dependencies including my CRC32 patchset and
> patches queued in several trees for 6.13. It can be retrieved from git
> using the command given above. This is targeting 6.14.
>
> Eric Biggers (11):
> lib/crc-t10dif: stop wrapping the crypto API
> lib/crc-t10dif: add support for arch overrides
> crypto: crct10dif - expose arch-optimized lib function
> x86/crc-t10dif: expose CRC-T10DIF function through lib
> arm/crc-t10dif: expose CRC-T10DIF function through lib
> arm64/crc-t10dif: expose CRC-T10DIF function through lib
> powerpc/crc-t10dif: expose CRC-T10DIF function through lib
> lib/crc_kunit.c: add KUnit test suite for CRC library functions
> lib/crc32test: delete obsolete crc32test.c
> powerpc/crc: delete obsolete crc-vpmsum_test.c
> MAINTAINERS: add entry for CRC library
>
> MAINTAINERS | 11 +
> arch/arm/Kconfig | 1 +
> arch/arm/crypto/Kconfig | 11 -
> arch/arm/crypto/Makefile | 2 -
> arch/arm/crypto/crct10dif-ce-glue.c | 124 ---
> arch/arm/lib/Makefile | 3 +
> .../crc-t10dif-core.S} | 0
> arch/arm/lib/crc-t10dif-glue.c | 77 ++
> arch/arm64/Kconfig | 1 +
> arch/arm64/configs/defconfig | 1 -
> arch/arm64/crypto/Kconfig | 10 -
> arch/arm64/crypto/Makefile | 3 -
> arch/arm64/crypto/crct10dif-ce-glue.c | 132 ---
> arch/arm64/lib/Makefile | 3 +
> .../crc-t10dif-core.S} | 0
> arch/arm64/lib/crc-t10dif-glue.c | 78 ++
> arch/m68k/configs/amiga_defconfig | 1 -
> arch/m68k/configs/apollo_defconfig | 1 -
> arch/m68k/configs/atari_defconfig | 1 -
> arch/m68k/configs/bvme6000_defconfig | 1 -
> arch/m68k/configs/hp300_defconfig | 1 -
> arch/m68k/configs/mac_defconfig | 1 -
> arch/m68k/configs/multi_defconfig | 1 -
> arch/m68k/configs/mvme147_defconfig | 1 -
> arch/m68k/configs/mvme16x_defconfig | 1 -
> arch/m68k/configs/q40_defconfig | 1 -
> arch/m68k/configs/sun3_defconfig | 1 -
> arch/m68k/configs/sun3x_defconfig | 1 -
> arch/powerpc/Kconfig | 1 +
> arch/powerpc/configs/powernv_defconfig | 1 -
> arch/powerpc/configs/ppc64_defconfig | 2 -
> arch/powerpc/crypto/Kconfig | 20 -
> arch/powerpc/crypto/Makefile | 3 -
> arch/powerpc/crypto/crc-vpmsum_test.c | 133 ---
> arch/powerpc/lib/Makefile | 3 +
> .../crc-t10dif-glue.c} | 69 +-
> .../{crypto => lib}/crct10dif-vpmsum_asm.S | 2 +-
> arch/s390/configs/debug_defconfig | 1 -
> arch/x86/Kconfig | 1 +
> arch/x86/crypto/Kconfig | 10 -
> arch/x86/crypto/Makefile | 3 -
> arch/x86/crypto/crct10dif-pclmul_glue.c | 143 ---
> arch/x86/lib/Makefile | 3 +
> arch/x86/lib/crc-t10dif-glue.c | 51 ++
> .../{crypto => lib}/crct10dif-pcl-asm_64.S | 0
> crypto/Kconfig | 1 +
> crypto/Makefile | 3 +-
> crypto/crct10dif_common.c | 82 --
> crypto/crct10dif_generic.c | 82 +-
> include/linux/crc-t10dif.h | 28 +-
> lib/Kconfig | 43 +-
> lib/Kconfig.debug | 20 +
> lib/Makefile | 2 +-
> lib/crc-t10dif.c | 156 +---
> lib/crc32test.c | 852 ------------------
> lib/crc_kunit.c | 428 +++++++++
> .../testing/selftests/arm64/fp/kernel-test.c | 3 +-
> 57 files changed, 867 insertions(+), 1748 deletions(-)
> delete mode 100644 arch/arm/crypto/crct10dif-ce-glue.c
> rename arch/arm/{crypto/crct10dif-ce-core.S => lib/crc-t10dif-core.S} (100%)
> create mode 100644 arch/arm/lib/crc-t10dif-glue.c
> delete mode 100644 arch/arm64/crypto/crct10dif-ce-glue.c
> rename arch/arm64/{crypto/crct10dif-ce-core.S => lib/crc-t10dif-core.S} (100%)
> create mode 100644 arch/arm64/lib/crc-t10dif-glue.c
> delete mode 100644 arch/powerpc/crypto/crc-vpmsum_test.c
> rename arch/powerpc/{crypto/crct10dif-vpmsum_glue.c => lib/crc-t10dif-glue.c} (50%)
> rename arch/powerpc/{crypto => lib}/crct10dif-vpmsum_asm.S (99%)
> delete mode 100644 arch/x86/crypto/crct10dif-pclmul_glue.c
> create mode 100644 arch/x86/lib/crc-t10dif-glue.c
> rename arch/x86/{crypto => lib}/crct10dif-pcl-asm_64.S (100%)
> delete mode 100644 crypto/crct10dif_common.c
> delete mode 100644 lib/crc32test.c
> create mode 100644 lib/crc_kunit.c
Good job. It's great to see the code being simplified.
I still want to submit an optimization patchabout CRC-T10DIFfor RISC-V.
I don't know if it would be more appropriate for me to rewrite a patch
after your patch is officially applied.
What do you think?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20241119/8b48270d/attachment.htm>
More information about the Linuxppc-dev
mailing list