[PATCH 5/5] lib/crc: arm: Enable arm64's NEON intrinsics implementation of crc64
Ard Biesheuvel
ardb at kernel.org
Tue Mar 31 01:20:02 PDT 2026
On Tue, 31 Mar 2026, at 08:47, Christoph Hellwig wrote:
>> depends on CRC64 && CRC_OPTIMIZATIONS
>> + default y if ARM && KERNEL_MODE_NEON && !(CPU_BIG_ENDIAN && CC_IS_CLANG)
>
> It would be useful to throw in a comment here why it is disabled for
> big-endian on clang.
>
Ack.
>> +#define crc64_be_arch crc64_be_generic
>> +
>> +static inline u64 crc64_nvme_arch(u64 crc, const u8 *p, size_t len)
>> +{
>> + if (len >= 128 && static_branch_likely(&have_pmull) &&
>> + likely(may_use_simd())) {
>> + do {
>> + size_t chunk = min_t(size_t, len & ~15, SZ_4K);
>> +
>> + scoped_ksimd()
>> + crc = crc64_nvme_arm64_c(crc, p, chunk);
>> +
>> + p += chunk;
>> + len -= chunk;
>> + } while (len >= 128);
>> + }
>
> From reading the earlier patches, I'll assume arm SIMD code is
> non-preemptable and thus you want the chunking here? Maybe add
> a little comment explaining that?
Indeed.
More information about the linux-arm-kernel
mailing list