]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
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 606d25c559ed88cddd589619d8ff9fe4cb3072ff..7b05094a048045e89d1822cc9a98ed792c24594c 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);
        }