On Tue, 21 Nov 2023 at 03:48, Pierre Gondois <pierre.gond...@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 <a...@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/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to