From: "Ard Biesheuvel" <ardb@kernel.org>
To: Pierre Gondois <pierre.gondois@arm.com>
Cc: devel@edk2.groups.io, Jiewen Yao <jiewen.yao@intel.com>,
Yi Li <yi1.li@intel.com>, Xiaoyu Lu <xiaoyu1.lu@intel.com>,
Guomin Jiang <guomin.jiang@intel.com>,
Leif Lindholm <quic_llindhol@quicinc.com>,
Ard Biesheuvel <ardb+tianocore@kernel.org>,
Sami Mujawar <sami.mujawar@arm.com>,
Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [edk2-devel] [PATCH v5 0/6] CryptoPkg: Enable Openssl native instruction support for AARCH64
Date: Tue, 21 Nov 2023 11:22:35 -0500 [thread overview]
Message-ID: <CAMj1kXGSfPxLASu=+13bRFxj4U2cpiSV7-9b6rSy4MiKv=F=kw@mail.gmail.com> (raw)
In-Reply-To: <20231121084715.1393672-1-pierre.gondois@arm.com>
On Tue, 21 Nov 2023 at 03:48, Pierre Gondois <pierre.gondois@arm.com> wrote:
>
> v5:
> - [PATCH v5 1/6] ArmPkg/ArmLib: Add macros/helper functions around AA64Isar0 register
> - Remove unused ArmReadIdAA64Isar0() declaration
> - [PATCH v4 5/6] CryptoPkg/OpensslLib: Add AArch64Cap for arch specific hooks
> - Removed unused GET_BITFIELD() macro
> - Indentation
>
Thanks again for working on this.
The series looks good to me,
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
(but the MdePkg <-> ArmPkg discussion needs to conclude before this can go in)
> v4:
> - Added Acked-by from Gerd
> - Created bugzilla at:
> https://bugzilla.tianocore.org/show_bug.cgi?id=4601
> - Replaced:
> - [PATCH v3 1/6] ArmPkg/ArmLib: Move ArmReadIdAA64Isar0() to ArmLib
> by:
> - [PATCH v4 1/6] ArmPkg/ArmLib: Add macros/helper functions around AA64Isar0 register
> and:
> - Moved ARM_ID_AA64ISAR0_EL1_* macros to ArmPkg/Include/Chipset/AArch64.h
> - Added macros to get capabilities described in AA64ISAR0
>
> v3:
> - Use ArmPkg's function to access register:
> - Dropped:
> - [PATCH v2 1/7] MdePkg/BaseLib: AARCH64: Add ArmReadCntPctReg()
> - [PATCH v2 2/7] MdePkg/BaseLib: AARCH64: Add ArmReadIdAA64Isar0Reg()
> - [PATCH v2 3/7] MdePkg/BaseRngLib: Prefer ArmReadIdAA64Isar0Reg() over ArmReadIdIsar0()
> - Added:
> - [PATCH v3 1/6] ArmPkg/ArmLib: Move ArmReadIdAA64Isar0() to ArmLib
> - Allow dependency of CryptoPkg over ArmPkg in CI:
> - Added:
> - [PATCH v3 2/6] CryptoPkg/CryptoPkg.ci.yaml: Allow dependency upon
>
> v2:
> - [PATCH v2 2/7] MdePkg/BaseLib: AARCH64: Add ArmReadIdAA64Isar0Reg()
> - Correct bad mask values in MdePkg/Include/Library/BaseLib.h
> - [PATCH v2 4/7] CryptoPkg/OpensslLib: Add native instruction support:
> - Add armcap.c to configure.py:sources_filter_fn() instead of
> manually commenting the file in .inf files
>
> Various OpensslLib implementations are available in edk2. The
> OpensslLibAccel.inf and OpensslLibFullAccel.inf ones use
> architecture specific instructions, e.g. AESE, PMULL, SHA256H, ...,
> allowing to improve speed.
>
> Enable support for Aarch64's native instructions:
> - Add ArmReadCntPctReg() and ArmReadIdAA64Isar0Reg() to
> Aarch64's BaseLib.
> - Generate Aarch64's specific Openssl functions.
> - Add a OpensslStub/AArch64Cap.c file to allow Openssl
> to probe Aarch64 native instruction support.
>
> This patch-set only enable support for GCC for now (MSFT support
> not added).
>
> ---- Testing ----
>
> The tests run are based on the TestBaseCryptLibShell module.
> Each test is run 100 times, then the first 5 values
> (considered as warmup) are removed.
>
> The NoAccel column relies on the OpensslLibFull implementation,
> the Accel column relies on the OpensslLibFullAccel implementation.
> The 'Improvement' column is computed as:
> 100 * ('Accel (ns)' - 'NoAccel (ns)') / 'NoAccel (ns)'
>
> The std deviation of the TestVerifyDhGenerateKey is big.
> It is due to [1] being called with the 'safe' parameter set, leading
> to the prime number taking more time to generate. It requires ~10
> iterations when safe=false, ~1000 iterations when safe=true.
>
> The test was run on a Juno-r2. The native Openssl implementation makes
> use of the following features (cf. [2]):
> - ARMV7_NEON
> - ARMV8_AES
> - ARMV8_SHA1
> - ARMV8_PMULL
> - ARMV8_SHA256
> and misses:
> - ARMV8_SHA512
>
> | TestName | NoAccel (ns) | NoAccel std | Accel (ns) | Accel std | Improvement |
> |:---------------------------------|---------------:|--------------:|-------------:|------------:|--------------:|
> | mPkcs7EkuTest | 14757511 | 14370 | 14947276 | 35677 | 1.28589 |
> | mAeadAesGcmTest | 129667 | 2012 | 113897 | 1366 | -12.1619 |
> | mBlockCipherTest | 7325 | 102 | 6487 | 81 | -11.4403 |
> | mAuthenticodeTest | 72852444 | 3097832 | 67593102 | 3123627 | -7.21917 |
> | mBnTest | 771921 | 57966 | 737656 | 61354 | -4.43893 |
> | mDhTest | 4082083501 | 3340300622 | 3502629757 | 3444890110 | -14.195 |
> | mEcTest | 24666075 | 191971 | 23250301 | 178985 | -5.73976 |
> | mHkdfTest | 848440 | 4295 | 797966 | 4320 | -5.94904 |
> | mHmacTest | 235527 | 36284 | 204823 | 37936 | -13.0363 |
> | mImageTimestampTest | 12801070 | 18327 | 12190046 | 23138 | -4.77323 |
> | mOaepTest | 20032245 | 46525 | 18671388 | 36399 | -6.79333 |
> | mPkcs5Test | 178624 | 1962 | 114852 | 1376 | -35.7018 |
> | mPkcs7Test | 28464572 | 70683 | 25282753 | 82616 | -11.1782 |
> | mPrngTest | 727013 | 3637 | 460076 | 2668 | -36.717 |
> | mRsaCertTest | 39109865 | 90380 | 36452412 | 220712 | -6.79484 |
> | mRsaTest | 22451367 | 60643 | 16672060 | 53643 | -25.7414 |
> | mRsaPssTest | 142051533 | 122172 | 98638975 | 99131 | -30.5611 |
> | mHashTest | 22033 | 6308 | 17650 | 6622 | -19.8929 |
> | mX509Test | 53796289 | 123676 | 51280121 | 187588 | -4.67721 |
>
> Pierre Gondois (6):
> ArmPkg/ArmLib: Add macros/helper functions around AA64Isar0 register
> CryptoPkg/CryptoPkg.ci.yaml: Allow dependency upon ArmPkg
> CryptoPkg/OpensslLib: Add native instruction support for AARCH64
> CryptoPkg/OpensslLib: Generate files for AARCH64 native support
> CryptoPkg/OpensslLib: Add AArch64Cap for arch specific hooks
> CryptoPkg: Enable Openssl Accel builds for AARCH64
>
> ArmPkg/Include/Chipset/AArch64.h | 60 +-
> ArmPkg/Include/Library/ArmLib.h | 218 +-
> ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c | 367 +
> CryptoPkg/CryptoPkg.ci.yaml | 1 +
> CryptoPkg/CryptoPkg.dsc | 23 +-
> .../AARCH64-GCC/crypto/aes/aesv8-armx.S | 3180 ++++++++
> .../AARCH64-GCC/crypto/aes/vpaes-armv8.S | 1196 +++
> .../AARCH64-GCC/crypto/arm64cpuid.S | 129 +
> .../AARCH64-GCC/crypto/bn/armv8-mont.S | 2124 ++++++
> .../crypto/ec/ecp_nistz256-armv8.S | 4242 +++++++++++
> .../crypto/modes/aes-gcm-armv8_64.S | 6389 +++++++++++++++++
> .../AARCH64-GCC/crypto/modes/ghashv8-armx.S | 552 ++
> .../AARCH64-GCC/crypto/sha/keccak1600-armv8.S | 1009 +++
> .../AARCH64-GCC/crypto/sha/sha1-armv8.S | 1211 ++++
> .../AARCH64-GCC/crypto/sha/sha256-armv8.S | 2051 ++++++
> .../AARCH64-GCC/crypto/sha/sha512-armv8.S | 1606 +++++
> .../Library/OpensslLib/OpensslLibAccel.inf | 647 +-
> .../OpensslLib/OpensslLibFullAccel.inf | 696 +-
> .../OpensslLib/OpensslStub/AArch64Cap.c | 66 +
> CryptoPkg/Library/OpensslLib/UefiAsm.conf | 6 +
> CryptoPkg/Library/OpensslLib/configure.py | 6 +-
> CryptoPkg/Readme.md | 14 +-
> 22 files changed, 25770 insertions(+), 23 deletions(-)
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/aes/aesv8-armx.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/aes/vpaes-armv8.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/arm64cpuid.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/bn/armv8-mont.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/ec/ecp_nistz256-armv8.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/modes/aes-gcm-armv8_64.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/modes/ghashv8-armx.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/sha/keccak1600-armv8.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/sha/sha1-armv8.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/sha/sha256-armv8.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslGen/AARCH64-GCC/crypto/sha/sha512-armv8.S
> create mode 100644 CryptoPkg/Library/OpensslLib/OpensslStub/AArch64Cap.c
>
> --
> 2.25.1
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111561): https://edk2.groups.io/g/devel/message/111561
Mute This Topic: https://groups.io/mt/102725176/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
prev parent reply other threads:[~2023-11-21 16:22 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-21 8:47 [edk2-devel] [PATCH v5 0/6] CryptoPkg: Enable Openssl native instruction support for AARCH64 PierreGondois
2023-11-21 8:47 ` [edk2-devel] [PATCH v5 1/6] ArmPkg/ArmLib: Add macros/helper functions around AA64Isar0 register PierreGondois
2023-11-21 8:47 ` [edk2-devel] [PATCH v5 2/6] CryptoPkg/CryptoPkg.ci.yaml: Allow dependency upon ArmPkg PierreGondois
2023-11-21 11:27 ` Yao, Jiewen
2023-11-21 12:59 ` PierreGondois
2023-11-21 13:41 ` Yao, Jiewen
2023-11-21 14:26 ` Leif Lindholm
2023-11-21 14:46 ` Yao, Jiewen
2023-11-21 15:55 ` Leif Lindholm
2023-11-21 16:02 ` Ard Biesheuvel
2023-11-21 16:26 ` Yao, Jiewen
2023-11-21 8:47 ` [edk2-devel] [PATCH v5 3/6] CryptoPkg/OpensslLib: Add native instruction support for AARCH64 PierreGondois
2023-11-21 8:47 ` [edk2-devel] [PATCH v5 4/6] CryptoPkg/OpensslLib: Generate files for AARCH64 native support PierreGondois
2023-11-21 8:47 ` [edk2-devel] [PATCH v5 5/6] CryptoPkg/OpensslLib: Add AArch64Cap for arch specific hooks PierreGondois
2023-11-21 8:47 ` [edk2-devel] [PATCH v5 6/6] CryptoPkg: Enable Openssl Accel builds for AARCH64 PierreGondois
2023-11-21 16:22 ` Ard Biesheuvel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAMj1kXGSfPxLASu=+13bRFxj4U2cpiSV7-9b6rSy4MiKv=F=kw@mail.gmail.com' \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox