libpayload: Add VBOOT_X86_RSA_ACCELERATION config
Add `VBOOT_X86_RSA_ACCELERATION' Kconfig option to enable SSE2 instruction set implementation of modulus exponentiation which is part of the RSA signature verification process. This option is enabled on CHROMEOS. | modpow() function call | original on rex0 | SSE2 on rex0 | |------------------------+------------------+--------------| | depthcharge - step 1 | 0.547 | 0.288 | | depthcharge - step 2 | 0.152 | 0.081 | | depthcharge - step 3 | 0.164 | 0.079 | |------------------------+------------------+--------------| | Total (ms) | 0.863 | 0.448 | | modpow() function call | original on brya0 | SSE2 on rex0 | |------------------------+-------------------+--------------| | depthcharge - step 1 | 0.693 | 0.248 | | depthcharge - step 2 | 0.172 | 0.065 | | depthcharge - step 3 | 0.223 | 0.067 | |------------------------+-------------------+--------------| | Total (ms) | 1.088 | 0.38 | BUG=b:312709384 TEST=modular exponentiation is about twice faster on rex0 and brya0 Change-Id: I801ebd7839261c6bd07fb218e1e36a7108e219bf Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/79290 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
parent
00a9bc68fe
commit
3dcd0d98e4
|
@ -31,6 +31,16 @@ config VBOOT_X86_SHA_EXT
|
||||||
This option enables SHA256 implementation using x86 SHA processor extension
|
This option enables SHA256 implementation using x86 SHA processor extension
|
||||||
instructions: sha256msg1, sha256msg2, sha256rnds2.
|
instructions: sha256msg1, sha256msg2, sha256rnds2.
|
||||||
|
|
||||||
|
config VBOOT_X86_RSA_ACCELERATION
|
||||||
|
bool "Use SSE2 instructions for RSA signature verification"
|
||||||
|
default y if CHROMEOS
|
||||||
|
default n
|
||||||
|
depends on ARCH_X86
|
||||||
|
help
|
||||||
|
Use paddq, pmuludq, psrlq, punpckldq and punpcklqdq SSE2
|
||||||
|
instructions to accelerate the modulus exponentiation which
|
||||||
|
is part of the RSA signature verification process.
|
||||||
|
|
||||||
config VBOOT_SHA_ARMV8_CE
|
config VBOOT_SHA_ARMV8_CE
|
||||||
bool "SHA256 implementation using ARMv8 Crypto Extension"
|
bool "SHA256 implementation using ARMv8 Crypto Extension"
|
||||||
default y if CHROMEOS
|
default y if CHROMEOS
|
||||||
|
|
|
@ -29,6 +29,10 @@ ifeq ($(CONFIG_LP_ARCH_MOCK)$(VBOOT_FIRMWARE_ARCH-y),)
|
||||||
$(error vboot requires architecture to be set in the configuration)
|
$(error vboot requires architecture to be set in the configuration)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_LP_VBOOT_X86_RSA_ACCELERATION),y)
|
||||||
|
CPPFLAGS_common += -DVB2_X86_RSA_ACCELERATION
|
||||||
|
endif
|
||||||
|
|
||||||
$(VBOOT_FW_LIB): $(obj)/libpayload-config.h
|
$(VBOOT_FW_LIB): $(obj)/libpayload-config.h
|
||||||
@printf " MAKE $(subst $(obj)/,,$(@))\n"
|
@printf " MAKE $(subst $(obj)/,,$(@))\n"
|
||||||
+$(Q) FIRMWARE_ARCH="$(VBOOT_FIRMWARE_ARCH-y)" \
|
+$(Q) FIRMWARE_ARCH="$(VBOOT_FIRMWARE_ARCH-y)" \
|
||||||
|
@ -37,6 +41,7 @@ $(VBOOT_FW_LIB): $(obj)/libpayload-config.h
|
||||||
$(MAKE) -C "$(VBOOT_SOURCE)" \
|
$(MAKE) -C "$(VBOOT_SOURCE)" \
|
||||||
TPM2_MODE=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_TPM2_MODE)) \
|
TPM2_MODE=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_TPM2_MODE)) \
|
||||||
X86_SHA_EXT=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_X86_SHA_EXT)) \
|
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)) \
|
ARMV8_CRYPTO_EXT=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_SHA_ARMV8_CE)) \
|
||||||
UNROLL_LOOPS=1 \
|
UNROLL_LOOPS=1 \
|
||||||
BUILD="$(VBOOT_BUILD_DIR)" \
|
BUILD="$(VBOOT_BUILD_DIR)" \
|
||||||
|
|
Loading…
Reference in New Issue