[edk2-devel] [PATCH v6 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64

Yao, Jiewen jiewen.yao at intel.com
Wed Jun 23 12:41:37 UTC 2021


Hi Christopher
Thank you very much to resume this work. :-)

I have no problem to approve CryptoPkg. (I believe I already did that in last year).

But since you updated base tool. We need base tool package maintainer to approve that change.

A good practice is to split the patch from package level. Then we can let each package maintainer approve its own package.

I will be waiting for the response from base tool owner to review " BaseTools/Scripts/GccBase.lds " and give R-B.


Thank you
Yao Jiewen

> -----Original Message-----
> From: Christopher Zurcher <christopher.zurcher at outlook.com>
> Sent: Tuesday, June 22, 2021 6:05 AM
> To: devel at edk2.groups.io; gaoliming at byosoft.com.cn
> Cc: Yao, Jiewen <jiewen.yao at intel.com>; Wang, Jian J <jian.j.wang at intel.com>;
> Lu, XiaoyuX <xiaoyux.lu at intel.com>; Kinney, Michael D
> <michael.d.kinney at intel.com>; 'Ard Biesheuvel' <ard.biesheuvel at arm.com>
> Subject: RE: [edk2-devel] [PATCH v6 0/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> Yes this was discussed last year, sorry for the delay in follow-up, I was changing
> jobs.
> The problem is that the assembly code provided by OpenSSL uses
> "wrt ..imagebase" which is only supported by win64, not elf64. It was requested
> at the time that I include the OpenSSL-provided .S files as a GCC tool chain
> alternative.
> 
> Thanks,
> Christopher Zurcher
> 
> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of gaoliming
> Sent: Sunday, June 20, 2021 18:34
> To: devel at edk2.groups.io; christopher.zurcher at outlook.com
> Cc: 'Jiewen Yao' <jiewen.yao at intel.com>; 'Jian J Wang'
> <jian.j.wang at intel.com>; 'Xiaoyu Lu' <xiaoyux.lu at intel.com>; 'Mike Kinney'
> <michael.d.kinney at intel.com>; 'Ard Biesheuvel' <ard.biesheuvel at arm.com>
> Subject: 回复: [edk2-devel] [PATCH v6 0/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> Christopher:
>   Nasm should support GCC tool chain. Do you meet with the problem on nasm
> version assembly code?
>   So, you have to add GAS assembly code. This topic may be discussed last year.
> Can you give some detail for it?
> 
> Thanks
> Liming
> > -----邮件原件-----
> > 发件人: devel at edk2.groups.io <devel at edk2.groups.io> 代表 Christopher
> > Zurcher
> > 发送时间: 2021年6月19日 10:09
> > 收件人: devel at edk2.groups.io
> > 抄送: Jiewen Yao <jiewen.yao at intel.com>; Jian J Wang
> > <jian.j.wang at intel.com>; Xiaoyu Lu <xiaoyux.lu at intel.com>; Mike Kinney
> > <michael.d.kinney at intel.com>; Ard Biesheuvel <ard.biesheuvel at arm.com>
> > 主题: [edk2-devel] [PATCH v6 0/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > From: Christopher Zurcher <christopher.zurcher at microsoft.com>
> >
> > V6 Changes:
> >   Add GCC-compatible version of these modifications. Supporting GCC
> > build
> of
> >     native OpenSSL .S files requires removal of *(COMMON) from the
> > /DISCARD/
> >     section of the GCC linker script.
> >   The VS/CLANG portion of the patch is unchanged from the
> > previously-approved
> >     patchset.
> >
> > 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 at intel.com>
> > Cc: Jian J Wang <jian.j.wang at intel.com>
> > Cc: Xiaoyu Lu <xiaoyux.lu at intel.com>
> > Cc: Mike Kinney <michael.d.kinney at intel.com>
> > Cc: Ard Biesheuvel <ard.biesheuvel at arm.com>
> >
> > Christopher Zurcher (2):
> >   CryptoPkg/OpensslLib: Add native instruction support for X64
> >   CryptoPkg/OpensslLib: Commit the auto-generated assembly files for
> > X64
> >
> >  BaseTools/Scripts/GccBase.lds
> > |    1 -
> >  CryptoPkg/CryptoPkg.ci.yaml
> > |   21 +-
> >  CryptoPkg/Library/Include/CrtLibSupport.h
> > |    2 +
> >  CryptoPkg/Library/Include/openssl/opensslconf.h
> > |    3 -
> >  CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > |    2 +-
> >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > |   44 +
> >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > |    2 +-
> >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > |  653 +++
> >  CryptoPkg/Library/OpensslLib/OpensslLibX64Gcc.inf
> > |  653 +++
> >  CryptoPkg/Library/OpensslLib/UefiAsm.conf
> > |   30 +
> >  CryptoPkg/Library/OpensslLib/X64/ApiHooks.c
> > |   22 +
> >  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/X64Gcc/crypto/aes/aesni-mb-x86_64.S
> > |  552 +++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1-x86_64.S
> > | 1719 +++++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256-x86_64.S
> > |
> > 69 +
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S
> > | 4484 +++++++++++++++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S
> > |  863 ++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm-x86_64.S
> > |   29 +
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash-x86_64.S
> > | 1386 ++++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S
> > | 2962 ++++++++++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S
> > | 2631 ++++++++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb-x86_64.S
> > | 3286 +++++++++++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S
> > | 3097 ++++++++++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S
> > | 1811 +++++++
> >  CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S
> > |  491 ++
> >  CryptoPkg/Library/OpensslLib/process_files.pl
> > |  241 +-
> >  38 files changed, 50828 insertions(+), 55 deletions(-)  create mode
> > 100644 CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> >  create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> >  create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibX64Gcc.inf
> >  create mode 100644 CryptoPkg/Library/OpensslLib/UefiAsm.conf
> >  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/X64Gcc/crypto/aes/aesni-mb-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S
> >  create mode 100644
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S
> >
> > --
> > 2.32.0.windows.1
> >
> >
> >
> >
> >
> 
> 
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#76982): https://edk2.groups.io/g/devel/message/76982
Mute This Topic: https://groups.io/mt/83700667/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list