From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web11.3243.1596421800600605411 for ; Sun, 02 Aug 2020 19:30:00 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=yB/lUWyp; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: liming.gao@intel.com) IronPort-SDR: Ey6BRvdao3aXFhxf+XOxaDWASfv+VMdg7J96mFlsvEB0+KmpFkYTG2U2J2peh6wpZuK6cQRKzP fLGDN8hJ3Rpg== X-IronPort-AV: E=McAfee;i="6000,8403,9701"; a="153241382" X-IronPort-AV: E=Sophos;i="5.75,428,1589266800"; d="scan'208";a="153241382" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2020 19:30:00 -0700 IronPort-SDR: +VItPEWfzyUDdprngoar3y+Pa2Wd7A5qJRLUT20S8+9VceKOUeYhySepGeJ7NxlRrbN29T/ndx KrjQY4him1QA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,428,1589266800"; d="scan'208";a="491662868" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga006.fm.intel.com with ESMTP; 02 Aug 2020 19:29:59 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Sun, 2 Aug 2020 19:29:59 -0700 Received: from orsmsx104.amr.corp.intel.com (10.22.225.131) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Sun, 2 Aug 2020 19:29:59 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by ORSMSX104.amr.corp.intel.com (10.22.225.131) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 2 Aug 2020 19:29:58 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.168) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 2 Aug 2020 19:29:58 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TJHKAH+8A/SiAy3PsL2IPg2WyMcuzKZkA5OqwBtza8Q8NAc/eproNHnplk0jnMvEpX+wS7mAWQ9xJTaRYmz3SlqfOZXFlEG9LQdCGnf3Ldne0heeYUjCT14LX0dzQtkJe5q6zuMETxs4pDhVfgSd/EXA2K/dPurgQNW2xleJAS037u1v/l5w2g7F3UUHDN4Sgdzee/d4TtE1FK4JOuUpWZfgDosxRQ6cpqYoMFfsOT9ddTBSXg9vclz/vVd50jg7oK/Cf/GhpinihIJxy1tDiCh04W1Mrm8jSDqywel53nKrAJIChY5OuK5YNKPrcL+ka9318fXB6w9rxy1yj2eqNg== 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=o2IfywnIKZkCzVSMAUPac0HeJrwIHsOzVclCGhkrUUk=; b=Gi90NLkcFoC4p4ra7K5D0o9E/vaPTngv7GhxW8Ra7LqvePcl1LIEpW6///lwBssWKbOSE6cWU2yx17uHhI5gwoGgb9laDq14vFJmU+VIyoFG6tzXoUpeBKzOQI6M0potbmQkfuvhPK0HxatjQOojJsyEPFamtOt94EjxzR9yzTAgTxG/RNQ8rrT4PwasXOc/TNgpHAlxsCHi/iqf+ChX3KSl6xn9UI+3FnBDx7NtraK1i1WQAtwdaeH7NoJ/hbuNfZrbbUmsQb6JZUMUyfK5oMygtMZfwWbOuchB/oyBV02okJTfPaLEjEo6aHYLyfPuHnzygacuGa0bDagMlqRfaw== 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=o2IfywnIKZkCzVSMAUPac0HeJrwIHsOzVclCGhkrUUk=; b=yB/lUWypLqDU8DLWm0WAUw/jDMFWENywfJiqc/CwPS4J7/qDW+Fohni1Y8GLM7jtcD2+ZIfZ+Y31qrWb6l2nDejVxkzjU+NG/O1e3Qjp3TgzxPiin6oxNwd9VGM/p+JDFZj7V2iUnKAnu9htAWV+zpzzMTyOAZNlu6bDSG7uT6Q= Received: from CY4PR11MB1526.namprd11.prod.outlook.com (2603:10b6:910:7::10) by CY4PR1101MB2343.namprd11.prod.outlook.com (2603:10b6:903:ba::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.17; Mon, 3 Aug 2020 02:29:57 +0000 Received: from CY4PR11MB1526.namprd11.prod.outlook.com ([fe80::f8c4:711:84e3:4c97]) by CY4PR11MB1526.namprd11.prod.outlook.com ([fe80::f8c4:711:84e3:4c97%4]) with mapi id 15.20.3239.021; Mon, 3 Aug 2020 02:29:57 +0000 From: "Liming Gao" To: Tom Lendacky , "devel@edk2.groups.io" CC: Brijesh Singh , Ard Biesheuvel , "Dong, Eric" , "Justen, Jordan L" , Laszlo Ersek , "Kinney, Michael D" , "Ni, Ray" Subject: Re: [PATCH v13 06/46] MdePkg/BaseLib: Add support for the XGETBV instruction Thread-Topic: [PATCH v13 06/46] MdePkg/BaseLib: Add support for the XGETBV instruction Thread-Index: AQHWZqGaXRkhJ0qZO0OAjCVuMAJoWqklrqfQ Date: Mon, 3 Aug 2020 02:29:57 +0000 Message-ID: References: <2bedf06b49b28f260377225af9e52609d5500efa.1596134638.git.thomas.lendacky@amd.com> In-Reply-To: <2bedf06b49b28f260377225af9e52609d5500efa.1596134638.git.thomas.lendacky@amd.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: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.194] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a1abe2f5-6936-486c-7bdc-08d837551d0f x-ms-traffictypediagnostic: CY4PR1101MB2343: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WYWJ/yiNHYKVmobN4Xkryr9bzLk2wDXX0n5FCk3pjBkPDwrh/zwvqlMxOaa4Bp1g3Baep/WthLQ5R84XKk0HN56CmKFbIU65O825OD0XbcICnxGPleEs3BtkNVajyVVg0vu+DDhd9ZJ2VvA5OqAm0n4jmendCTavnggeOdLC/dtc1Iju/MJLoycQtuSZmlJMRSb6GHCHds7KvXCQcLi3E5b8Fd9RwWyhvyV6S+DKwfkFyUnx9iMmQ9PNfIeSgUlus3aN+hifVc1RCimLbSSGfdMwldPm365MRT43QmzJJCrEwlb4wF6ZdSU1ic1glv9bq39AF1b/rRrWFU01kByD7lN3lYnITYYdqp5qv2kh9Q2OZ1fmG+gxZ5EnYs0MwbG5p9jVWgZWu5cXJEwz+Fr5Sg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1526.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(376002)(366004)(346002)(136003)(39860400002)(19627235002)(76116006)(64756008)(66446008)(71200400001)(8936002)(66946007)(4326008)(54906003)(66476007)(186003)(966005)(8676002)(5660300002)(316002)(478600001)(55016002)(83380400001)(66556008)(9686003)(110136005)(52536014)(33656002)(86362001)(6506007)(2906002)(107886003)(7696005)(26005)(53546011);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: +iS3z61Xm8mHInEkaIwaJIAl8T3lsr5jgD7+8QfG1i8/KXdwHGcrEjmKjmQ7y7+0g7Z1MAoZsIopDiMA5ZF9p31g9gERRDZwYU8C351eiGtW+TiPcBt5ghcRjcP9ZrXOmNbGryTZ0Mgs8iBQFofbYD5QUpnLdPZI8dmGZX6X3woh1v59wM5kgPwV45ReRt4zzripXZRmUTeytXSO8BGJgMyn/8cbpsTdBjRhZ5nU4n5yCjcdEIqQBrFpQNFv4jD5mN07zp5BJ0nrpFS9AH8WTeQV+DTuCqWVlr5Uw/XtyXqiZPDFO51ERC2OxSvSYbRkdJ2EaUg0ZH4SBMZF+U41TPGK+zUzfx4JayY+wYgCMqODjseF9IXlFd8hZlF5/3LLgxRK6T/Db0buYJLostPcVnnr3rkuYLN2WcLEiJU4Ds7WCZZKa3q6ai7zblWCv+PMYVJ3on0hlgsz59ifC/FSwQd8PC6E4BMQN+9Odf2+Ni9VKbp30sVjmyHF7gDhvxwDJB+ZU4plymuihQ6HDyIiBNG7rdMut7Jal3ovNjvNOxvIxCgbjhD8Pa5e0At/PDcPv7qAxDs2zAGxdqqENdA4JL8SPqGFbuxcD5QDRK387mjZVnRGcL4VPp5sQs7Dsp9Z7OHzfaUifPQca/CPSnGS8w== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1526.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1abe2f5-6936-486c-7bdc-08d837551d0f X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Aug 2020 02:29:57.1387 (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: uZ4r+OY2aZiZocHgZEeFq64+V8p1u5Fqo0uyTzM1ZejfjUX3N5LXAIhTmR1cV7neNJPZM5W7GaaF88RsGkI2cg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2343 Return-Path: liming.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Reviewed-by: Liming Gao -----Original Message----- From: Tom Lendacky =20 Sent: 2020=1B$BG/=1B(B7=1B$B7n=1B(B31=1B$BF|=1B(B 2:43 To: devel@edk2.groups.io Cc: Brijesh Singh ; Ard Biesheuvel ; Dong, Eric ; Justen, Jordan L ; Laszlo Ersek ; Gao, Liming ; Kinney, Michael D ; Ni, Ray Subject: [PATCH v13 06/46] MdePkg/BaseLib: Add support for the XGETBV instr= uction From: Tom Lendacky BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2198 Under SEV-ES, a CPUID instruction requires the current value of the XCR0 re= gister. In order to retrieve that value, the XGETBV instruction needs to be= executed. Provide the necessary support to execute the XGETBV instruction. Cc: Michael D Kinney Cc: Liming Gao Signed-off-by: Tom Lendacky --- MdePkg/Library/BaseLib/BaseLib.inf | 2 ++ MdePkg/Include/Library/BaseLib.h | 17 +++++++++++++ MdePkg/Library/BaseLib/Ia32/XGetBv.nasm | 31 ++++++++++++++++++++++ MdePk= g/Library/BaseLib/X64/XGetBv.nasm | 34 +++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 MdePkg/Library/BaseLib/Ia32/XGetBv.nasm create mode 100644 MdePkg/Library/BaseLib/X64/XGetBv.nasm diff --git a/MdePkg/Library/BaseLib/BaseLib.inf b/MdePkg/Library/BaseLib/Ba= seLib.inf index c740a819cacf..3b93b5db8d24 100644 --- a/MdePkg/Library/BaseLib/BaseLib.inf +++ b/MdePkg/Library/BaseLib/BaseLib.inf @@ -183,6 +183,7 @@ [Sources.Ia32] Ia32/EnableCache.nasm| GCC Ia32/DisableCache.nasm| GCC Ia32/RdRand.nasm + Ia32/XGetBv.nasm =20 Ia32/DivS64x64Remainder.c Ia32/InternalSwitchStack.c | MSFT @@ -315,6 +316,7 @@ [Sources.X64] X64/EnableDisableInterrupts.nasm X64/DisablePaging64.nasm X64/RdRand.nasm + X64/XGetBv.nasm ChkStkGcc.c | GCC =20 [Sources.EBC] diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/Base= Lib.h index 8e7b87cbda4e..7edf0051a0a0 100644 --- a/MdePkg/Include/Library/BaseLib.h +++ b/MdePkg/Include/Library/BaseLib.h @@ -7831,6 +7831,23 @@ AsmLfence ( VOID ); =20 +/** + Executes a XGETBV instruction + + Executes a XGETBV instruction. This function is only available on=20 + IA-32 and x64. + + @param[in] Index Extended control register index + + @return The current value of the extended control regist= er +**/ +UINT64 +EFIAPI +AsmXGetBv ( + IN UINT32 Index + ); + + /** Patch the immediate operand of an IA32 or X64 instruction such that the = byte, word, dword or qword operand is encoded at the end of the instruction's = diff --git a/MdePkg/Library/BaseLib/Ia32/XGetBv.nasm b/MdePkg/Library/BaseL= ib/Ia32/XGetBv.nasm new file mode 100644 index 000000000000..9f7b03bbff35 --- /dev/null +++ b/MdePkg/Library/BaseLib/Ia32/XGetBv.nasm @@ -0,0 +1,31 @@ +;---------------------------------------------------------------------- +-------- +; +; Copyright (C) 2020, Advanced Micro Devices, Inc. All rights=20 +reserved.
; SPDX-License-Identifier: BSD-2-Clause-Patent ; ; Module=20 +Name: +; +; XGetBv.Asm +; +; Abstract: +; +; AsmXgetBv function +; +; Notes: +; +;---------------------------------------------------------------------- +-------- + + SECTION .text + +;---------------------------------------------------------------------- +-------- +; UINT64 +; EFIAPI +; AsmXGetBv ( +; IN UINT32 Index +; ); +;---------------------------------------------------------------------- +-------- +global ASM_PFX(AsmXGetBv) +ASM_PFX(AsmXGetBv): + mov ecx, [esp + 4] + xgetbv + ret diff --git a/MdePkg/Library/BaseLib/X64/XGetBv.nasm b/MdePkg/Library/BaseLi= b/X64/XGetBv.nasm new file mode 100644 index 000000000000..09f3be8ae0a8 --- /dev/null +++ b/MdePkg/Library/BaseLib/X64/XGetBv.nasm @@ -0,0 +1,34 @@ +;---------------------------------------------------------------------- +-------- +; +; Copyright (C) 2020, Advanced Micro Devices, Inc. All rights=20 +reserved.
; SPDX-License-Identifier: BSD-2-Clause-Patent ; ; Module=20 +Name: +; +; XGetBv.Asm +; +; Abstract: +; +; AsmXgetBv function +; +; Notes: +; +;---------------------------------------------------------------------- +-------- + + DEFAULT REL + SECTION .text + +;---------------------------------------------------------------------- +-------- +; UINT64 +; EFIAPI +; AsmXGetBv ( +; IN UINT32 Index +; ); +;---------------------------------------------------------------------- +-------- +global ASM_PFX(AsmXGetBv) +ASM_PFX(AsmXGetBv): + xgetbv + shl rdx, 32 + or rax, rdx + ret + -- 2.27.0