Hello Pierre, Thanks for working on this.
On Wed, 8 Nov 2023 at 15:39, Pierre Gondois <pierre.gond...@arm.com> wrote: > > Hello Yi, > > 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_SHA256 > and misses: > - ARMV8_PMULL Why was this omitted? Juno implements the underlying instruction so we should be able to use this code too. > - ARMV8_SHA512 > > [1] > CryptoPkg/Library/OpensslLib/openssl/crypto/bn/bn_prime.c:BN_generate_prime_ex2() > [2] CryptoPkg/Library/OpensslLib/openssl/crypto/arm_arch.h > > | TestName | NoAccel (ns) | NoAccel std | Accel (ns) | > Accel std | Improvement | > |:--------------------|---------------:|--------------:|-------------:|------------:|--------------:| > | mPkcs7EkuTest | 14883462 | 16175 | 14777782 | > 28099 | -0.71005 | > | mAeadAesGcmTest | 137082 | 1937 | 116010 | > 722 | -15.3718 | > | mBlockCipherTest | 7390 | 85 | 7192 | > 189 | -2.6793 | > | mAuthenticodeTest | 71440889 | 3150754 | 64153427 | > 1525259 | -10.2007 | > | mBnTest | 755820 | 55968 | 730951 | > 65075 | -3.29033 | > | mDhTest | 3625850738 | 3194665276 | 2585215827 | > 2394541660 | -28.7004 | > | mEcTest | 24661474 | 187448 | 23480124 | > 174758 | -4.79027 | > | mHkdfTest | 1013338 | 4648 | 903299 | > 7193 | -10.8591 | > | mHmacTest | 250284 | 35322 | 213063 | > 36323 | -14.8715 | > | mImageTimestampTest | 14674681 | 87409 | 11877127 | > 20965 | -19.0638 | > | mOaepTest | 25750532 | 100301 | 18066871 | > 40274 | -29.8388 | > | mPkcs5Test | 174126 | 1537 | 151554 | > 2287 | -12.963 | > | mPkcs7Test | 28141988 | 62781 | 25136968 | > 59675 | -10.6781 | > | mPrngTest | 750055 | 3376 | 451404 | > 4437 | -39.8172 | > | mRsaCertTest | 38935884 | 90999 | 36458419 | > 97471 | -6.36294 | > | mRsaTest | 22441717 | 61863 | 16673925 | > 58522 | -25.7012 | > | mRsaPssTest | 142031418 | 131585 | 98656708 | > 110644 | -30.5388 | > | mHashTest | 22383 | 6507 | 17628 | > 7553 | -21.2438 | > | mX509Test | 53441738 | 90749 | 51609184 | > 184683 | -3.42907 | > > Regards, > Pierre > > On 11/7/23 03:38, Li, Yi1 wrote: > > Hi Pierre, > > > > Could you share what tests you did and the test results? > > > > Regards, > > Yi > > > > -----Original Message----- > > From: Pierre Gondois <pierre.gond...@arm.com> > > Sent: Thursday, November 2, 2023 9:54 PM > > To: devel@edk2.groups.io > > Cc: Yao, Jiewen <jiewen....@intel.com>; Li, Yi1 <yi1...@intel.com>; Lu, > > Xiaoyu1 <xiaoyu1...@intel.com>; Jiang, Guomin <guomin.ji...@intel.com>; > > Leif Lindholm <quic_llind...@quicinc.com>; Ard Biesheuvel > > <ardb+tianoc...@kernel.org>; Sami Mujawar <sami.muja...@arm.com>; Gerd > > Hoffmann <kra...@redhat.com> > > Subject: [PATCH v1 0/7] CryptoPkg: Enable Openssl native instruction > > support for AARCH64 > > > > 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). > > > > Pierre Gondois (7): > > MdePkg/BaseLib: AARCH64: Add ArmReadCntPctReg() > > MdePkg/BaseLib: AARCH64: Add ArmReadIdAA64Isar0Reg() > > MdePkg/BaseRngLib: Prefer ArmReadIdAA64Isar0Reg() over > > ArmReadIdIsar0() > > 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 > > > > 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 | 642 +- > > .../OpensslLib/OpensslLibFullAccel.inf | 691 +- > > .../OpensslLib/OpensslStub/AArch64Cap.c | 107 + > > CryptoPkg/Library/OpensslLib/UefiAsm.conf | 6 + > > CryptoPkg/Library/OpensslLib/configure.py | 5 +- > > CryptoPkg/Readme.md | 14 +- > > MdePkg/Include/Library/BaseLib.h | 86 + > > .../BaseLib/AArch64/ArmReadCntPctReg.S | 30 + > > .../BaseLib/AArch64/ArmReadCntPctReg.asm | 30 + > > .../AArch64/ArmReadIdAA64Isar0Reg.S} | 10 +- > > .../AArch64/ArmReadIdAA64Isar0Reg.asm} | 10 +- > > MdePkg/Library/BaseLib/BaseLib.inf | 6 +- > > MdePkg/Library/BaseRngLib/AArch64/ArmRng.h | 12 - > > MdePkg/Library/BaseRngLib/AArch64/Rndr.c | 14 +- > > MdePkg/Library/BaseRngLib/BaseRngLib.inf | 2 - > > 27 files changed, 25320 insertions(+), 57 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 > > create mode 100644 MdePkg/Library/BaseLib/AArch64/ArmReadCntPctReg.S > > create mode 100644 MdePkg/Library/BaseLib/AArch64/ArmReadCntPctReg.asm > > rename MdePkg/Library/{BaseRngLib/AArch64/ArmReadIdIsar0.S => > > BaseLib/AArch64/ArmReadIdAA64Isar0Reg.S} (70%) rename > > MdePkg/Library/{BaseRngLib/AArch64/ArmReadIdIsar0.asm => > > BaseLib/AArch64/ArmReadIdAA64Isar0Reg.asm} (72%) > > > > -- > > 2.25.1 > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#110917): https://edk2.groups.io/g/devel/message/110917 Mute This Topic: https://groups.io/mt/102342394/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-