vboot: Enable new arm64 SIMD crypto acceleration

This patch passes the correct flag to vboot to enable SIMD crypto
acceleration on arm64 devices. This uses a core part of the ISA and
should thus be supported on all arm64 SoCs -- so we normally always
want it enabled, but there should still be a Kconfig in case a SoC wants
to use the hwcrypto interface for its own (off-CPU) crypto acceleration
engine instead. (You could also disable it to save a small amount of
code size at the cost of speed, if necessary.)

Change-Id: I3820bd6b7505202b7edb6768385ce5deb18777a4
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80710
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
Julius Werner 2024-01-05 10:40:43 -08:00
parent c57b902f9b
commit 366ceeef0f
4 changed files with 26 additions and 0 deletions

View File

@ -49,4 +49,16 @@ config VBOOT_SHA_ARMV8_CE
help
This option enables SHA256 implementation using ARMv8 Crypto Extension.
config VBOOT_ARM64_RSA_ACCELERATION
bool "Use arm64 SIMD instructions to accelerate RSA signature verification"
default y
depends on ARCH_ARM64
help
Use arm64 SIMD instructions (NEON) to parallelize two multiplications
in the modulus exponentiation algorithm, which speeds up RSA signature
verification in vboot. This is supported on all arm64 CPUs so you'd
generally always want this enabled, unless your SoC is overriding
vboot's hwcrypto API with its own crypto accelerator IP instead (or
you're trying really hard to save on code size).
endif

View File

@ -46,6 +46,7 @@ $(VBOOT_FW_LIB): $(obj)/libpayload-config.h
X86_SHA_EXT=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_X86_SHA_EXT)) \
VB2_X86_RSA_ACCELERATION=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_X86_RSA_ACCELERATION)) \
ARMV8_CRYPTO_EXT=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_SHA_ARMV8_CE)) \
ARM64_RSA_ACCELERATION=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_ARM64_RSA_ACCELERATION)) \
UNROLL_LOOPS=1 \
BUILD="$(VBOOT_BUILD_DIR)" \
V=$(V) \

View File

@ -318,6 +318,18 @@ config VBOOT_ARMV8_CE_SHA256_ACCELERATION
help
Use ARMv8 Crypto Extension to accelerate SHA hash calculation in vboot.
config VBOOT_ARM64_RSA_ACCELERATION
bool "Use arm64 SIMD instructions to accelerate RSA signature verification"
default y
depends on ARCH_VERSTAGE_ARM64
help
Use arm64 SIMD instructions (NEON) to parallelize two multiplications
in the modulus exponentiation algorithm, which speeds up RSA signature
verification in vboot. This is supported on all arm64 CPUs so you'd
generally always want this enabled, unless your SoC is overriding
vboot's hwcrypto API with its own crypto accelerator IP instead (or
you're trying really hard to save on code size).
config VBOOT_DEFINE_WIDEVINE_COUNTERS
bool
default n

View File

@ -33,6 +33,7 @@ $$(VBOOT_LIB_$(1)): $(obj)/config.h
VB2_X86_RSA_ACCELERATION="$(if $(CONFIG_ARCH_$(call toupper,$(1))_X86_32)$(CONFIG_ARCH_$(call toupper,$(1))_X86_64),$\
$(CONFIG_VBOOT_X86_RSA_ACCELERATION))" \
ARMV8_CRYPTO_EXT="$(if $(CONFIG_ARCH_$(call toupper,$(1))_ARMV8_64),$$(CONFIG_VBOOT_ARMV8_CE_SHA256_ACCELERATION))" \
ARM64_RSA_ACCELERATION="$(if $(CONFIG_ARCH_$(call toupper,$(1))_ARM64),$$(CONFIG_VBOOT_ARM64_RSA_ACCELERATION))" \
$(MAKE) -C $(VBOOT_SOURCE) \
BUILD=$$(abspath $$(dir $$(VBOOT_LIB_$(1)))) \
V=$(V) \