While we are still awaiting the Linux 6.14 release (or a 6.14-rc8 release) with no kernel drop having occurred on Sunday, early pull requests for the Linux 6.15 kernel cycle continue flowing in. Among the early pull requests over the weekend were the CRC code updates that include some nice optimizations for those running on AVX-512 processors.
Eric Biggers of Google sent out the CRC updates for Linux 6.15 on Sunday. This pull includes a rework of the CRC64 cyclic redundancy check code. And most exciting is the rewite of the x86 PCLMULQDQ-optimized CRC code and adding VPCLMULQDQ support. THis also includes acceleration for the crc64_be and crc64_nvme code.
This code slated for inclusion in Linux 6.15 adds optimized CRC functions for the VPCLMULQDQ SIMD instruction found with x86_64 processors supporting AVX-512. Vector Carry-Less Multiplication of Quadwords (VPCLMULQDQ) is found with Intel AVX-512-capable CPUs since Ice Lake and on the AMD side since Zen 4 with AVX-512 or on Zen 3 just in AVX mode.
Eric Biggers explained in the prior patch series working out this VPCLMULQDQ usage within the cyclic redundancy check code:
“This approach allows easily wiring up an x86-optimized implementation of any variant of CRC-8, CRC-16, CRC-32, or CRC-64, including full support for VPCLMULQDQ. On long messages the resulting functions are up to 4x faster than the existing PCLMULQDQ optimized functions when they exist, or up to 29x faster than the existing table-based functions.”
Now those are some big performance improvements.
The full list of pending CRC changes for Linux 6.15 can be found via this pull request.