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]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to