crypto: arm64/crct10dif - Remove obsolete chunking logic
authorArd Biesheuvel <ardb@kernel.org>
Tue, 5 Nov 2024 16:09:01 +0000 (17:09 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 15 Nov 2024 11:52:51 +0000 (19:52 +0800)
This is a partial revert of commit fc754c024a343b, which moved the logic
into C code which ensures that kernel mode NEON code does not hog the
CPU for too long.

This is no longer needed now that kernel mode NEON no longer disables
preemption, so we can drop this.

Reviewed-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm64/crypto/crct10dif-ce-glue.c

index 606d25c..7b05094 100644 (file)
@@ -37,18 +37,9 @@ static int crct10dif_update_pmull_p8(struct shash_desc *desc, const u8 *data,
        u16 *crc = shash_desc_ctx(desc);
 
        if (length >= CRC_T10DIF_PMULL_CHUNK_SIZE && crypto_simd_usable()) {
-               do {
-                       unsigned int chunk = length;
-
-                       if (chunk > SZ_4K + CRC_T10DIF_PMULL_CHUNK_SIZE)
-                               chunk = SZ_4K;
-
-                       kernel_neon_begin();
-                       *crc = crc_t10dif_pmull_p8(*crc, data, chunk);
-                       kernel_neon_end();
-                       data += chunk;
-                       length -= chunk;
-               } while (length);
+               kernel_neon_begin();
+               *crc = crc_t10dif_pmull_p8(*crc, data, length);
+               kernel_neon_end();
        } else {
                *crc = crc_t10dif_generic(*crc, data, length);
        }
@@ -62,18 +53,9 @@ static int crct10dif_update_pmull_p64(struct shash_desc *desc, const u8 *data,
        u16 *crc = shash_desc_ctx(desc);
 
        if (length >= CRC_T10DIF_PMULL_CHUNK_SIZE && crypto_simd_usable()) {
-               do {
-                       unsigned int chunk = length;
-
-                       if (chunk > SZ_4K + CRC_T10DIF_PMULL_CHUNK_SIZE)
-                               chunk = SZ_4K;
-
-                       kernel_neon_begin();
-                       *crc = crc_t10dif_pmull_p64(*crc, data, chunk);
-                       kernel_neon_end();
-                       data += chunk;
-                       length -= chunk;
-               } while (length);
+               kernel_neon_begin();
+               *crc = crc_t10dif_pmull_p64(*crc, data, length);
+               kernel_neon_end();
        } else {
                *crc = crc_t10dif_generic(*crc, data, length);
        }