]> www.infradead.org Git - users/hch/misc.git/commitdiff
lib/crypto: blake2s: Always enable arch-optimized BLAKE2s code
authorEric Biggers <ebiggers@kernel.org>
Wed, 27 Aug 2025 15:11:28 +0000 (08:11 -0700)
committerEric Biggers <ebiggers@kernel.org>
Fri, 29 Aug 2025 16:50:19 +0000 (09:50 -0700)
When support for a crypto algorithm is enabled, the arch-optimized
implementation of that algorithm should be enabled too.  We've learned
this the hard way many times over the years: people regularly forget to
enable the arch-optimized implementations of the crypto algorithms,
resulting in significant performance being left on the table.

Currently, BLAKE2s support is always enabled ('obj-y'), since random.c
uses it.  Therefore, the arch-optimized BLAKE2s code, which exists for
ARM and x86_64, should be always enabled too.  Let's do that.

Note that the effect on kernel image size is very small and should not
be a concern.  On ARM, enabling CRYPTO_BLAKE2S_ARM actually *shrinks*
the kernel size by about 1200 bytes, since the ARM-optimized
blake2s_compress() completely replaces the generic blake2s_compress().
On x86_64, enabling CRYPTO_BLAKE2S_X86 increases the kernel size by
about 1400 bytes, as the generic blake2s_compress() is still included as
a fallback; however, for context, that is only about a quarter the size
of the generic blake2s_compress().  The x86_64 optimized BLAKE2s code
uses much less icache at runtime than the generic code.

Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20250827151131.27733-10-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
lib/crypto/arm/Kconfig
lib/crypto/x86/Kconfig

index 740341aa35d2130fe81f6e1e16963c8047ebfb31..a5607ad079c4ffc0b1e7af4103e0c1748fc0abd5 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 
 config CRYPTO_BLAKE2S_ARM
-       bool "Hash functions: BLAKE2s"
+       def_bool y
        select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
        help
          BLAKE2s cryptographic hash function (RFC 7693)
index eb47da71aa6b6dff46b02e24120b75c757707d83..ffa718321369f71cbc8d53558cc210e68775460d 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 
 config CRYPTO_BLAKE2S_X86
-       bool "Hash functions: BLAKE2s (SSSE3/AVX-512)"
+       def_bool y
        depends on 64BIT
        select CRYPTO_LIB_BLAKE2S_GENERIC
        select CRYPTO_ARCH_HAVE_LIB_BLAKE2S