From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.11336.1602984339948433206 for ; Sat, 17 Oct 2020 18:25:40 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=HmuGBmVO; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: jiewen.yao@intel.com) IronPort-SDR: uKOj35phDyLjscyrALnT83c7PRtAu4di19CAR4pTTU5ydpntSghTVgReT0wy3UUqnhdWBGzcRp eTTlT8KoQZVg== X-IronPort-AV: E=McAfee;i="6000,8403,9777"; a="146149817" X-IronPort-AV: E=Sophos;i="5.77,388,1596524400"; d="scan'208";a="146149817" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Oct 2020 18:25:34 -0700 IronPort-SDR: GGQKsa/SrS2bejrzAxkpTQPF19//po4YyP5jfPO+FxfLy6FnkiWYCsvD3vvpss+UENe39N5wEq QE8rXOhkfxgA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,388,1596524400"; d="scan'208";a="301047044" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga007.fm.intel.com with ESMTP; 17 Oct 2020 18:25:34 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Sat, 17 Oct 2020 18:25:33 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Sat, 17 Oct 2020 18:25:33 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Sat, 17 Oct 2020 18:25:33 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.176) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Sat, 17 Oct 2020 18:25:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fgroUq/5EhMBffYC/QOWz/s1BA9yBlqepgAgeaT0QAC6BcL/c87ldUzOXUvYTFWlsWzd9B3apDCKz27JqBe0TlD8rU9LoXFkH0BYn3OV4hOYeIZferEfCngtGsoX7lQVbipip+1nny6cOhv9jYgr6Vs5lX02iZ3IK0d9NntJQLrJLhefZJRbeDwHEZIvzcLADTShXw4F/f0Jr0uQEkarEKwZhRbao8VXUUvWcSejZ8XD5e8Y8w+O4CXxTQ5hutkGSiBzYxPJlZKr/85cWIqgdqiXm+7qYjkgUxPoOZQmqEXXe2Ni40xGeProFbcJ3506ZMmdZlxArhiwRYHP6qep+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zLlfFhmqf/GkCre382qhNS5Gdag9aUmQh5aKDXS6Zns=; b=MOsdvH/YwrCO7oYfJIu8cDqRGK4Z3S1rV0TbYPsd7g3zMIF68BMhg9kt5SJS99BjIN0ck7cCXv/A95ktuVl2hkKgf80LFilfHIUrt46vN38WdJn9MGPxu+y3fccsDY5P6yJS8Hnw1AYbVuffJHsxOeBNpMvLZAY66L18/2nOJWPSMloJmoVoBqeIJhaHqC0DYQZ59WSyybOzcW/m0ge8k6RhRAya1KYM/FPa7vAGamjQ+FOJBfszmWnIZAF0AU4AC6pjLcLDYF8coyFyNCPbgKhJl6yMzsYsI+C/IEpwxtZav9bpifR8S4J5wDjk+0K3KXrpLprlCRgKJ7iSmTq8ww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zLlfFhmqf/GkCre382qhNS5Gdag9aUmQh5aKDXS6Zns=; b=HmuGBmVOJz7CuUnzXJH/Am0h3GXot6G2xrQ+6Scv8YTQAuvi/HkVy4mplxWJUz8Vnq4oi7RggeJSZDfyBYoKc11L6rcH3QOcvMlADXHtlWTWah5Sb8d4VgMXAU/VHAlOl+6q0T/4hUOxIgwjIP7trFb0W2ueWWoehjs6B6VaFhc= Received: from CY4PR11MB1288.namprd11.prod.outlook.com (2603:10b6:903:23::8) by CY4PR11MB1909.namprd11.prod.outlook.com (2603:10b6:903:11f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.23; Sun, 18 Oct 2020 01:25:31 +0000 Received: from CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::8948:caa4:ca1a:23ac]) by CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::8948:caa4:ca1a:23ac%10]) with mapi id 15.20.3477.027; Sun, 18 Oct 2020 01:25:31 +0000 From: "Yao, Jiewen" To: "Zurcher, Christopher J" , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Lu, XiaoyuX" , Ard Biesheuvel Subject: Re: [PATCH v3 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64 Thread-Topic: [PATCH v3 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64 Thread-Index: AQHWomtsc/hyP1oknUui8L6WK87Cr6mckeOw Date: Sun, 18 Oct 2020 01:25:31 +0000 Message-ID: References: <20201014204842.4161-1-christopher.j.zurcher@intel.com> In-Reply-To: <20201014204842.4161-1-christopher.j.zurcher@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [101.80.124.211] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: de0c2f44-d322-4447-3373-08d87304b47c x-ms-traffictypediagnostic: CY4PR11MB1909: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7FY/A2PE1ymQ5npVNCktrcAaKEghOYljVllSygIkZ9mb/GjGkFKTHGmt6HfxxDNFw71Iwa5KocYqlUCV6qTA90t4YyKrnrCkC5Wmu9rmHaAsbTDVlEnfTEaKRk0G3V7wYShhgjfIxXtuiIBg3WuLnSXIwypMaCc7soMFsQf4D6b26GA5rnaStdHmE8g3jLAphcR2HJ2MKtfax6YU+hFMolqD4aRGox6EDZFQXR1iUDjrCDrG9NrvWnqHGYWo40OLWGcJf6kNhzqkqFpnV7k2YKwtJlGv5QU9Rflm+Lb0gISoSmpycbjGacy+/vFzREYdQkI4URplvtXFH4HEdV8eVSUisgKFSVykTaoel7aeiZt2SiHrlro8qlcJKhkMj3BUZ7nMLoo1CkXiOYVYKBzDoA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1288.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(136003)(396003)(366004)(376002)(346002)(2906002)(55016002)(110136005)(316002)(8676002)(966005)(6506007)(33656002)(53546011)(9686003)(54906003)(186003)(26005)(86362001)(19627235002)(83380400001)(71200400001)(4326008)(76116006)(7696005)(66946007)(52536014)(66476007)(66556008)(66446008)(64756008)(8936002)(5660300002)(478600001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: LLifc4NWQpbFF0lyOzciHxHwZl6GXuyuNHop85LgcgFVKaXvvjvdeRPVH8fR+Id9ACKcffiTSWCLokJ9ySppp4uaEp/cpBCjGfy+sVisQjRt0IWUsINHEkvQIpQovNv8/AbCUUh1KojMtvHBzXO9TkhyAU4sNuxV+uNygNABELbvU2ENZtPAgMMXXrV6mlaUWBwhWNtfsSxYj/4yCkhRYfoNfinE/XTCnF+aMCFHgVEsabvQWI0gp0jXwx9RMuK9+/3dDU74vSVqgWw1V8F/TGM6eUFSG79D01/ePYcuUq7HmxWUGIANlP3QsY7I3qXFyAzv07USDh+kK7kGQ78ke3VCKHjMR9GKEbbnL/hJs3a3oMWO0MID/tWJDxxbbzW78w2mbjqMCiuLHY15Mp6H2icjND+sQTWjqP+/XIYtIiPkWk0px4m7vJ7gzFenxiQzS8XcwYQcHmXAe2agVunQhgbuqBYt5Sw1OoKxOOQRmrqgRxQmnE2rgvvwW9TtUMc/41EhQjGl2dni/c2id3hpyZXFQLMpBbBwDsXeUvFqv+4gjrGDzfWEFjxg/snkXPK1hR8YgCUqL/59NhR0PlsBA6U1qDgmGAasc2BRF7Z3EKgQjxos8zTRKkt2pNaFOTzi6AufZI6HzbUCb3lc/uJJQQ== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1288.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: de0c2f44-d322-4447-3373-08d87304b47c X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2020 01:25:31.6657 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nmzY2c+7XWlKmCE8RSQIdRlK8W/nIxj2Tqo1xIre1Y/z3aJOdGY1ZF3GH5+pYULknjxSULgseDVQZ0b4mtNDvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1909 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Thanks Zurcher. Comment: 1) I do not see the copy right header and license header for uefi-asm.conf.= Please add it. 2) Is "ApiHooks.c" only for Visual Studio? Do we need it for GCC and LLVM? If it is only for visual studio, I suggest we rename to MsftApiHooks.c, and= add "| MSFT" in INF. 3) Since nasm is only for X64=B8 please use [Source.X64] for them. Please refer to https://github.com/tianocore/edk2/blob/master/MdePkg/Librar= y/BaseLib/BaseLib.inf, on 2) and 3). I want to get ACK from Mike Kinney, to see if it is right way to manually a= dd nasm and ApiHooks.c. Or if we need some extra documentation for that. Please do add him as reviewer in next version patch. I treat the ApiHooks.c is a work-around and it should be removed in the fut= ure, once openssl resolve it. Maybe we need a Bugzilla to track this. Thank you Yao Jiewen > -----Original Message----- > From: Christopher J Zurcher > Sent: Thursday, October 15, 2020 4:49 AM > To: devel@edk2.groups.io > Cc: Yao, Jiewen ; Wang, Jian J > ; Lu, XiaoyuX ; Ard > Biesheuvel > Subject: [PATCH v3 0/2] CryptoPkg/OpensslLib: Add native instruction > support for X64 >=20 > 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. >=20 > V2 Changes: > Limit scope of assembly config to SHA and AES functions. > Removed IA32 native support (reduced config was causing build failure a= nd > can be added in a later patch). > Removed XMM instructions from assembly generation. > Added automatic copyright header porting for generated assembly files. >=20 > This patch adds support for building the native instruction algorithms fo= r > the X64 architecture in OpensslLib. The process_files.pl script was modif= ied > to parse the .asm file targets from the OpenSSL build config data struct,= and > generate the necessary assembly files for the EDK2 build environment. >=20 > For the X64 variant, OpenSSL includes calls to a Windows error handling A= PI, > and that function has been stubbed out in ApiHooks.c. >=20 > For all variants, a constructor is added to call the required CPUID funct= ion > within OpenSSL to facilitate processor capability checks in the native > algorithms. >=20 > Additional native architecture variants should be simple to add by follow= ing > the changes made for this architecture. >=20 > The OpenSSL assembly files are traditionally generated at build time usin= g a > perl script. To avoid that burden on EDK2 users, these end-result assembl= y > files are generated during the configuration steps performed by the packa= ge > 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 t= o > 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. >=20 > Cc: Jiewen Yao > Cc: Jian J Wang > Cc: Xiaoyu Lu > Cc: Ard Biesheuvel >=20 > Christopher J Zurcher (2): > CryptoPkg/OpensslLib: Add native instruction support for X64 > CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64 >=20 > CryptoPkg/Library/OpensslLib/OpensslLib.inf | = 2 +- > CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | = 2 +- > CryptoPkg/Library/OpensslLib/OpensslLibX64.inf | = 657 +++ > CryptoPkg/Library/Include/CrtLibSupport.h | = 2 + > CryptoPkg/Library/Include/openssl/opensslconf.h | = 3 - > CryptoPkg/Library/OpensslLib/ApiHooks.c | = 18 + > CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c | = 34 + > 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 | = 223 +- > CryptoPkg/Library/OpensslLib/uefi-asm.conf | = 15 + > 22 files changed, 26735 insertions(+), 50 deletions(-) > create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibX64.inf > create mode 100644 CryptoPkg/Library/OpensslLib/ApiHooks.c > create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibConstructor.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 >=20 > -- > 2.28.0.windows.1