public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v5 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64
@ 2020-11-03 21:58 Zurcher, Christopher J
  2020-11-03 21:58 ` [PATCH v5 1/2] " Zurcher, Christopher J
                   ` (3 more replies)
  0 siblings, 4 replies; 28+ messages in thread
From: Zurcher, Christopher J @ 2020-11-03 21:58 UTC (permalink / raw)
  To: devel; +Cc: Jiewen Yao, Jian J Wang, Xiaoyu Lu, Mike Kinney, Ard Biesheuvel

V5 Changes:
  Move ApiHooks.c into X64 folder
  Update process_files.pl to clean architecture-specific subfolders without
    removing them
  Rebased INF file to merge latest changes regarding RngLib vs. TimerLib

V4 Changes:
  Add copyright header to uefi-asm.conf
  Move [Sources.X64] block to cover entire X64-specific config

V3 Changes:
  Added definitions for ptrdiff_t and wchar_t to CrtLibSupport.h for
    LLVM/Clang build support.
  Added -UWIN32 to GCC Flags for LLVM/Clang build support.
  Added missing AES GCM assembly file.

V2 Changes:
  Limit scope of assembly config to SHA and AES functions.
  Removed IA32 native support (reduced config was causing build failure and
    can be added in a later patch).
  Removed XMM instructions from assembly generation.
  Added automatic copyright header porting for generated assembly files.

This patch adds support for building the native instruction algorithms for
the X64 architecture in OpensslLib. The process_files.pl script was modified
to parse the .asm file targets from the OpenSSL build config data struct, and
generate the necessary assembly files for the EDK2 build environment.

For the X64 variant, OpenSSL includes calls to a Windows error handling API,
and that function has been stubbed out in ApiHooks.c.

For all variants, a constructor is added to call the required CPUID function
within OpenSSL to facilitate processor capability checks in the native
algorithms.

Additional native architecture variants should be simple to add by following
the changes made for this architecture.

The OpenSSL assembly files are traditionally generated at build time using a
perl script. To avoid that burden on EDK2 users, these end-result assembly
files are generated during the configuration steps performed by the package
maintainer (through process_files.pl). The perl generator scripts inside
OpenSSL do not parse file comments as they are only meant to create
intermediate build files, so process_files.pl contains additional hooks to
preserve the copyright headers as well as clean up tabs and line endings to
comply with EDK2 coding standards. The resulting file headers align with
the generated .h files which are already included in the EDK2 repository.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
Cc: Mike Kinney <michael.d.kinney@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>

Christopher J Zurcher (2):
  CryptoPkg/OpensslLib: Add native instruction support for X64
  CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64

 CryptoPkg/Library/OpensslLib/OpensslLib.inf                          |    2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf                    |    2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibX64.inf                       |  653 +++
 CryptoPkg/Library/Include/CrtLibSupport.h                            |    2 +
 CryptoPkg/Library/Include/openssl/opensslconf.h                      |    3 -
 CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c                 |   34 +
 CryptoPkg/Library/OpensslLib/X64/ApiHooks.c                          |   18 +
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm     |  732 +++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm   | 1916 ++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm |   78 +
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        | 5103 ++++++++++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        | 1173 +++++
 CryptoPkg/Library/OpensslLib/X64/crypto/modes/aesni-gcm-x86_64.nasm  |   34 +
 CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm      | 1569 ++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm      | 3137 ++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         | 2884 +++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm    | 3461 +++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm       | 3313 +++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm       | 1938 ++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |  491 ++
 CryptoPkg/Library/OpensslLib/process_files.pl                        |  232 +-
 CryptoPkg/Library/OpensslLib/uefi-asm.conf                           |   21 +
 22 files changed, 26746 insertions(+), 50 deletions(-)
 create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
 create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/ApiHooks.c
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/modes/aesni-gcm-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/uefi-asm.conf

-- 
2.28.0.windows.1


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2020-11-13 20:02 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-03 21:58 [PATCH v5 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64 Zurcher, Christopher J
2020-11-03 21:58 ` [PATCH v5 1/2] " Zurcher, Christopher J
2020-11-03 21:58 ` [PATCH v5 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files " Zurcher, Christopher J
2020-11-06  5:56 ` [PATCH v5 0/2] CryptoPkg/OpensslLib: Add native instruction support " Yao, Jiewen
     [not found] ` <1644D590FF4B7423.25549@groups.io>
2020-11-06  6:13   ` [edk2-devel] " Yao, Jiewen
2020-11-06  9:50     ` Zurcher, Christopher J
2020-11-06 10:22       ` Yao, Jiewen
2020-11-06 19:35         ` Zurcher, Christopher J
2020-11-06 23:06           ` Yao, Jiewen
2020-11-07  2:02             ` Zurcher, Christopher J
2020-11-07  2:24               ` Yao, Jiewen
2020-11-07  7:26                 ` Michael D Kinney
2020-11-10 12:31                 ` Laszlo Ersek
2020-11-10 14:28                   ` 回复: " gaoliming
2020-11-11 19:05                     ` Laszlo Ersek
2020-11-10 17:07                   ` Yao, Jiewen
2020-11-11  1:43                     ` Zurcher, Christopher J
2020-11-11  2:19                       ` Yao, Jiewen
2020-11-11 19:09                         ` Laszlo Ersek
2020-11-13  1:22                           ` Zurcher, Christopher J
     [not found]                           ` <1646ECAE89844BF6.31886@groups.io>
2020-11-13  2:28                             ` Zurcher, Christopher J
2020-11-13  7:35                               ` Ard Biesheuvel
2020-11-13 20:02                                 ` Laszlo Ersek
2020-11-11 19:08                       ` Laszlo Ersek
2020-11-11 19:07                     ` Laszlo Ersek
2020-11-09  7:03               ` 回复: " gaoliming
2020-11-10 12:24               ` Laszlo Ersek
2020-11-09  6:56           ` 回复: " gaoliming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox