]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: aegis128-neon - Move to more abstract 'ksimd' guard API
authorArd Biesheuvel <ardb@kernel.org>
Wed, 1 Oct 2025 10:21:53 +0000 (12:21 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Wed, 12 Nov 2025 08:52:01 +0000 (09:52 +0100)
Move away from calling kernel_neon_begin() and kernel_neon_end()
directly, and instead, use the newly introduced scoped_ksimd() API. This
permits arm64 to modify the kernel mode NEON API without affecting code
that is shared between ARM and arm64.

Reviewed-by: Eric Biggers <ebiggers@kernel.org>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
crypto/aegis128-neon.c

index 9ee50549e8231eef27731c3011b733be240539df..b41807e63bd3e7911d85f5e0c08b3926af339263 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include <asm/cpufeature.h>
-#include <asm/neon.h>
+#include <asm/simd.h>
 
 #include "aegis.h"
 #include "aegis-neon.h"
@@ -24,32 +24,28 @@ void crypto_aegis128_init_simd(struct aegis_state *state,
                               const union aegis_block *key,
                               const u8 *iv)
 {
-       kernel_neon_begin();
-       crypto_aegis128_init_neon(state, key, iv);
-       kernel_neon_end();
+       scoped_ksimd()
+               crypto_aegis128_init_neon(state, key, iv);
 }
 
 void crypto_aegis128_update_simd(struct aegis_state *state, const void *msg)
 {
-       kernel_neon_begin();
-       crypto_aegis128_update_neon(state, msg);
-       kernel_neon_end();
+       scoped_ksimd()
+               crypto_aegis128_update_neon(state, msg);
 }
 
 void crypto_aegis128_encrypt_chunk_simd(struct aegis_state *state, u8 *dst,
                                        const u8 *src, unsigned int size)
 {
-       kernel_neon_begin();
-       crypto_aegis128_encrypt_chunk_neon(state, dst, src, size);
-       kernel_neon_end();
+       scoped_ksimd()
+               crypto_aegis128_encrypt_chunk_neon(state, dst, src, size);
 }
 
 void crypto_aegis128_decrypt_chunk_simd(struct aegis_state *state, u8 *dst,
                                        const u8 *src, unsigned int size)
 {
-       kernel_neon_begin();
-       crypto_aegis128_decrypt_chunk_neon(state, dst, src, size);
-       kernel_neon_end();
+       scoped_ksimd()
+               crypto_aegis128_decrypt_chunk_neon(state, dst, src, size);
 }
 
 int crypto_aegis128_final_simd(struct aegis_state *state,
@@ -58,12 +54,7 @@ int crypto_aegis128_final_simd(struct aegis_state *state,
                               unsigned int cryptlen,
                               unsigned int authsize)
 {
-       int ret;
-
-       kernel_neon_begin();
-       ret = crypto_aegis128_final_neon(state, tag_xor, assoclen, cryptlen,
-                                        authsize);
-       kernel_neon_end();
-
-       return ret;
+       scoped_ksimd()
+               return crypto_aegis128_final_neon(state, tag_xor, assoclen,
+                                                 cryptlen, authsize);
 }