From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.10593.1617329750202484979 for ; Thu, 01 Apr 2021 19:15:50 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=y9xswWPm; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: ray.ni@intel.com) IronPort-SDR: GL4omWUDNARKomNZ0JjFTtM6vYxLF3lHGr2rDnlXfeLcZBr6QdhBunyXonQ3QV9Ou8pW6086eN YKmJWy9Dm32g== X-IronPort-AV: E=McAfee;i="6000,8403,9941"; a="190142027" X-IronPort-AV: E=Sophos;i="5.81,298,1610438400"; d="scan'208";a="190142027" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Apr 2021 19:15:49 -0700 IronPort-SDR: uIvtMBCmCBEZzjfa58tUedRwlb22+Tw5k9k15jfxJdNmjHtEm9u15+3RiIKk53TPs+49CfMj9y NA+WZJ2whdJA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,298,1610438400"; d="scan'208";a="446550384" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga002.fm.intel.com with ESMTP; 01 Apr 2021 19:15:48 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) 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.2106.2; Thu, 1 Apr 2021 19:15:48 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Thu, 1 Apr 2021 19:15:48 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.104) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Thu, 1 Apr 2021 19:15:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S2yM1KGIr6v0Xt8bJqAiy1l9DAoV2tY4ySRXQ7qlkEDIlYJ233iDl3OrKe1rm9+4PPXG1GS/hN2RQpXVGpa+TrLKDj1zVwajAbzp+9pS9WWu/sJ93+UHZJepe+YLkixsWz/NQwkwFbrsDXyCpLGYFw5PR3sfx++L29xm5oKfQpnn3pysHBwyZnZ95ZLqNwYHrZP9zPmMgV49WZLe134AqG02S/4opXavRe8X/JJoZHn2mReH3CbaOfMu6+gBpFQ8BQgQa5WEqAI0fvb1iT017xUv8Tl2R0bG3UjD1hrTA8LiJ7nkt61dPAAKLKroMPboU2YuZxmgcXrPOkt2TnmOOA== 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=sy8pLe7oiRTLJjM53FNgAivfQXcPeRHjdlTagdwFKm0=; b=JyFaIYm/9jpVrKKz7lZh/k/JgGak1KnrEpe1bFByO1g4zlRMb1Iy0ZyBLjWIOAVGI2KAyQp1FqS/48ufaL2+vVRBhBRr8vPq65MNAQnyWmSQbgDjoep6a4nWn5b18SCooAyrSxWpWE1LMtAVOUPXXoLxKtsmwRbPIwdxOk6IoqW2x1hegzca+bOhJmSQY2GUNT9K0o9z3ulCFCinoxuM2+YlV4+pFr+NzBK1Dl9Vas++DK3fy2HirMvng6owwkdySQ9Oj+jaExBwAThcGH4wC9q0SqTAjVevz15eeh+AOI1t2H/tTnmZn1p4Ixt1GOGNdQcWzupUPYPF6aLpf9+IWg== 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=sy8pLe7oiRTLJjM53FNgAivfQXcPeRHjdlTagdwFKm0=; b=y9xswWPm4ArxBPCElAy6Tln4zuwnJT9YLV5cbxy1mjl62oP6jnPpxsq1vUcvjQNJD3i56EwKR5N7RDq0v5V/tq2SMmJzhogty3HQMRVdBFmBz03qNyl8N+KQQIB67cHFTHHMsCvHZlTZOiTFaPPbrU1iExqvukb2WY1lwhesyaI= Received: from CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) by MWHPR11MB1405.namprd11.prod.outlook.com (2603:10b6:300:21::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.27; Fri, 2 Apr 2021 02:15:47 +0000 Received: from CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::59d6:8b94:55bf:36e7]) by CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::59d6:8b94:55bf:36e7%5]) with mapi id 15.20.3999.028; Fri, 2 Apr 2021 02:15:46 +0000 From: "Ni, Ray" To: "Wu, Jiaxin" , "devel@edk2.groups.io" CC: "Kinney, Michael D" , Liming Gao , "Liu, Zhiguang" , "Yao, Jiewen" , "Zhang, Hongbin1" Subject: Re: [PATCH v2] MdePkg/BaseLib: Add support for the XSETBV instruction Thread-Topic: [PATCH v2] MdePkg/BaseLib: Add support for the XSETBV instruction Thread-Index: AQHXJ2KjXSpzBRwoIEWIa5fQUY262aqgfVxw Date: Fri, 2 Apr 2021 02:15:46 +0000 Message-ID: References: <20210402015053.7532-1-Jiaxin.wu@intel.com> In-Reply-To: <20210402015053.7532-1-Jiaxin.wu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-reaction: no-action dlp-product: dlpe-windows 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: [124.77.195.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1a7f339e-348a-46ff-f335-08d8f57d3a3a x-ms-traffictypediagnostic: MWHPR11MB1405: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:318; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rka34/GNxbyZ+9woJNynfU/vgE9+y9vSIsbfW05xB8eB2g0WJKA43xPnu2A9E4YxY+cH+8brNNQEhjdlB4wHFrATHPlVIGft8/dg9wS2U5NNH2BV9kqf4B6irZiDX971dir/UsFljB6ywZjoGedjf3eCBKQA1mvW/qSO6sUpE4TkOsoj5RFhc+wv9b6V7Q4CwztnFs15g/Q/zpfan4oUpb4qxWQ/Nf0oPXQBfUzuiWVq2WiHbEKmQAW47kSR+eyWVP4KusI5CfZjg+hMfHCg55UWLp2q6bEbJc4lWqGZjObREO38ESRT+bubNHaJ2gCEAIbjwesYjIxpEHU3qc+bm2I7eULHKzisklcCfvy2aLIHMLzYcG+qswGu6HiiDcxIov/2hjSd4AWQePD6yxdW9iYibzUg+g3Dzjurjuc+oNdANk0kCHQChwo2BZApdnqIvoKyVj4TfE1tn9VbjQAaMVpUiYdQ36JSFNmI4rGWxliOTHxiv8GrTJPPlKviTpr8OHp/2PEzRTAf3h55qaqAwc3mgJ6Mf+y9w7KFt7TOQmXO8YcHGOoaobCqRzxLXvPcyQL1XOZ25LlH935qaYd1cEDxoK+6GxxqW+TpYBzBpj48go49YHCNYkhN9AejYYklC8X5BtQQKgV81WEfd2m/G+QN2Ob17yVSNyM+HqQBIZ91itXr0A0YsHo2NJdFMMqiZeP/ac+RP92SkoO6vhtWFOkkMRaDtYOgQ1VZ6d0QCk9mLR4xmPt4wUWmznh/BqKs x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4930.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(136003)(396003)(346002)(376002)(39860400002)(52536014)(86362001)(38100700001)(107886003)(7696005)(26005)(8676002)(2906002)(186003)(33656002)(8936002)(110136005)(66946007)(4326008)(71200400001)(5660300002)(66476007)(83380400001)(66556008)(66446008)(64756008)(45080400002)(966005)(55016002)(9686003)(6506007)(19627235002)(316002)(54906003)(76116006)(478600001)(53546011);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?+wqHC1SdMAFAON9E7dlJl5IiwI3T+9j8oKwZV5oeq8lqxkgQQXZBpgBugiyM?= =?us-ascii?Q?/BkvWngX27Th8lIpKFSxL6R3BGZrzf+f/8/qyHFP9FaDScJdph/yfi6/85ix?= =?us-ascii?Q?A2L4pA4NncbTmL04TrzvHFBOLke/i8IfonB718E8dTQD6APhVpr8TvkMy46u?= =?us-ascii?Q?U2XExT0XRvxCK8KTU3uAKHGpd8423IsXB9PpdIN+0+ZFj1E3qxmaCd1Mplkr?= =?us-ascii?Q?3aYG7N2ZiYr6jx/O1XRmXSnT+UWDtwzTCfdgpERnemN+JHr7776Qc4QhonsD?= =?us-ascii?Q?pgdLrh3pZ8Q8+EaTEn8EdnobvdRHRfy0ysjAdOP6AB2SyQZNSW6dNfvOy0vT?= =?us-ascii?Q?PbCo6EHHMLNr/HIU9Q2SfkjdvrP3BK1AlmqWVdJk1cDFI+Mfnup4DmBB8FEW?= =?us-ascii?Q?QVPlnA3KfVAWI+2hUrey8AHdrmNUvv1M/fa6LyVhqLA3laWvzX2qhHThrKBu?= =?us-ascii?Q?vOkwws1UWFeWR8Tslf/wifJZGANkGcv+3C3mKc7hNBlw5FKLXLs+nouFNwdJ?= =?us-ascii?Q?SuraJjQ0dxTy4TPkwRt2xPiKgx9H/1lFXKRY4iZObgl0fUnAeY02R/YPd2sK?= =?us-ascii?Q?etExMktnlnNtadjdIVId68ICZjE+HPyBekaSrq+umT+s/Qqo+skkeWqA9o7s?= =?us-ascii?Q?8wolYN6Ky68dvufBHzQzQWyQxjZxp9af30stzVSmyWjPpjUkvGjz7YbKaulT?= =?us-ascii?Q?2reZvKSIYHrD3bolXIOsH2sDUYkddAoIvyamjbvwE1hsYntAOcrvOj272uAR?= =?us-ascii?Q?yMaFMvDII7uvjQwf8rZrC7VEfORgNMYLmtfB5FQaR2m91SP0etcJa1+fInpR?= =?us-ascii?Q?h+JC8DAJAs4paTrRhnBm6+Hi4HeUsPk+HEfx1HRKzbx1X78ZT2TGUMR/ol2S?= =?us-ascii?Q?P2HzP39vUGDE0MGqHIACUPcuxpz+i7Gxccs6nw61AaKDb0lx4rTmOOrIFmzW?= =?us-ascii?Q?0St0HH5Ur5a+TZNwVmGhJpP9GOTMufxAKSVNIlRZd6fusBgge6lYNOeLpHbS?= =?us-ascii?Q?FsXifB8EdgSjusx2fFJA2T6xEfddqotIrNCOM36R8/zrsOHTw0eYRkaKshWW?= =?us-ascii?Q?UBvQLyP1yGwrzIQl1Yugw9autHIo+Syl7VitXn0dcHy/TCTuTqYMstJ6vCc7?= =?us-ascii?Q?NKf4S/ecSfukbuEEqpoY2uA1mvoVAXfFK3Bgq8ZY+23WUtTXRCliHKOU/hhp?= =?us-ascii?Q?omS3tKWBvvPHJ4V7elWRTCBOvfs5uYkTg7VtPv23clBLUG/lK7Go8V6ZhnMJ?= =?us-ascii?Q?3ajYVY6WZZx5N+0DsqeYZeciy3fh3AeryX9YxFQzF0Z39fQB0BctBop9nDYv?= =?us-ascii?Q?t+1FE1EXJCIaHGUE7HpGxSYH?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4930.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a7f339e-348a-46ff-f335-08d8f57d3a3a X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2021 02:15:46.8688 (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: 1MUPf/zPP6t6Ooyn4EiRldS0FYP2UISL/StAdmWzdnB0TQt5nL/XtBMOTf+R/Ijz5H8DCCohBR38OV4UtygjlQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1405 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Ray Ni > -----Original Message----- > From: Wu, Jiaxin > Sent: Friday, April 2, 2021 9:51 AM > To: devel@edk2.groups.io > Cc: Kinney, Michael D ; Liming Gao ; Liu, Zhiguang > ; Ni, Ray ; Yao, Jiewen ; Zhang, Hongbin1 > > Subject: [PATCH v2] MdePkg/BaseLib: Add support for the XSETBV instructio= n >=20 > *v2: refine the coding format. >=20 > https://bugzilla.tianocore.org/show_bug.cgi?id=3D3284 >=20 > This patch is to support XSETBV instruction so as to support > Extended Control Register(XCR) write. >=20 > Extended Control Register(XCR) read has already been supported > by below commit to support XGETBV instruction: > 9b3ca509abd4e45439bbdfe2c2fa8780c950320a >=20 > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Zhiguang Liu > Cc: Ni Ray > Cc: Yao Jiewen > Signed-off-by: Jiaxin Wu > Signed-off-by: Zhang Hongbin1 > --- > MdePkg/Include/Library/BaseLib.h | 25 +++++++++++++++++++++++- > MdePkg/Library/BaseLib/BaseLib.inf | 4 +++- > MdePkg/Library/BaseLib/Ia32/XSetBv.nasm | 34 +++++++++++++++++++++++++++= ++++++ > MdePkg/Library/BaseLib/X64/XSetBv.nasm | 34 +++++++++++++++++++++++++++= ++++++ > 4 files changed, 95 insertions(+), 2 deletions(-) > create mode 100644 MdePkg/Library/BaseLib/Ia32/XSetBv.nasm > create mode 100644 MdePkg/Library/BaseLib/X64/XSetBv.nasm >=20 > diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/Ba= seLib.h > index 1171a0ffb5..7253997a6f 100644 > --- a/MdePkg/Include/Library/BaseLib.h > +++ b/MdePkg/Include/Library/BaseLib.h > @@ -1,10 +1,10 @@ > /** @file > Provides string functions, linked list functions, math functions, sync= hronization > functions, file path functions, and CPU architecture-specific function= s. >=20 > -Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
> +Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.
> Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
> Copyright (c) Microsoft Corporation.
> Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. = All rights reserved.
>=20 > SPDX-License-Identifier: BSD-2-Clause-Patent > @@ -7436,10 +7436,33 @@ UINT64 > EFIAPI > AsmXGetBv ( > IN UINT32 Index > ); >=20 > +/** > + Executes a XSETBV instruction to write a 64-bit value to a Extended Co= ntrol > + Register(XCR), and returns the value. > + > + Writes the 64-bit value specified by Value to the XCR specified by Ind= ex. The > + 64-bit value written to the XCR is returned. No parameter checking is > + performed on Index or Value, and some of these may cause CPU exception= s. The > + caller must either guarantee that Index and Value are valid, or the ca= ller > + must establish proper exception handlers. This function is only availa= ble on > + IA-32 and x64. > + > + @param Index The 32-bit XCR index to write. > + @param Value The 64-bit value to write to the XCR. > + > + @return Value > + > +**/ > +UINT64 > +EFIAPI > +AsmXSetBv ( > + IN UINT32 Index, > + IN UINT64 Value > + ); >=20 > /** > Executes a VMGEXIT instruction (VMMCALL with a REP prefix) >=20 > Executes a VMGEXIT instruction. This function is only available on IA-= 32 and > diff --git a/MdePkg/Library/BaseLib/BaseLib.inf b/MdePkg/Library/BaseLib/= BaseLib.inf > index 3b85c56c3c..fe8f68bbcf 100644 > --- a/MdePkg/Library/BaseLib/BaseLib.inf > +++ b/MdePkg/Library/BaseLib/BaseLib.inf > @@ -1,9 +1,9 @@ > ## @file > # Base Library implementation. > # > -# Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved. > +# Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved. > # Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved. > # Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.
> # Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All ri= ghts reserved.
> # > # SPDX-License-Identifier: BSD-2-Clause-Patent > @@ -182,10 +182,11 @@ > Ia32/LShiftU64.nasm| GCC > Ia32/EnableCache.nasm| GCC > Ia32/DisableCache.nasm| GCC > Ia32/RdRand.nasm > Ia32/XGetBv.nasm > + Ia32/XSetBv.nasm > Ia32/VmgExit.nasm >=20 > Ia32/DivS64x64Remainder.c > Ia32/InternalSwitchStack.c | MSFT > Ia32/InternalSwitchStack.nasm | GCC > @@ -316,10 +317,11 @@ > X64/GccInlinePriv.c | GCC > X64/EnableDisableInterrupts.nasm > X64/DisablePaging64.nasm > X64/RdRand.nasm > X64/XGetBv.nasm > + X64/XSetBv.nasm > X64/VmgExit.nasm > ChkStkGcc.c | GCC >=20 > [Sources.EBC] > Ebc/CpuBreakpoint.c > diff --git a/MdePkg/Library/BaseLib/Ia32/XSetBv.nasm b/MdePkg/Library/Bas= eLib/Ia32/XSetBv.nasm > new file mode 100644 > index 0000000000..cf638d9a4d > --- /dev/null > +++ b/MdePkg/Library/BaseLib/Ia32/XSetBv.nasm > @@ -0,0 +1,34 @@ > +;-----------------------------------------------------------------------= ------- > +; > +; Copyright (c) 2021, Intel Corporation. All rights reserved.
> +; SPDX-License-Identifier: BSD-2-Clause-Patent > +; > +; Module Name: > +; > +; XSetBv.nasm > +; > +; Abstract: > +; > +; AsmXSetBv function > +; > +; Notes: > +; > +;-----------------------------------------------------------------------= ------- > + > + SECTION .text > + > +;-----------------------------------------------------------------------= ------- > +; UINT64 > +; EFIAPI > +; AsmXSetBv ( > +; IN UINT32 Index, > +; IN UINT64 Value > +; ); > +;-----------------------------------------------------------------------= ------- > +global ASM_PFX(AsmXSetBv) > +ASM_PFX(AsmXSetBv): > + mov edx, [esp + 12] > + mov eax, [esp + 8] > + mov ecx, [esp + 4] > + xsetbv > + ret > diff --git a/MdePkg/Library/BaseLib/X64/XSetBv.nasm b/MdePkg/Library/Base= Lib/X64/XSetBv.nasm > new file mode 100644 > index 0000000000..c07e9b4c88 > --- /dev/null > +++ b/MdePkg/Library/BaseLib/X64/XSetBv.nasm > @@ -0,0 +1,34 @@ > +;-----------------------------------------------------------------------= ------- > +; > +; Copyright (c) 2021, Intel Corporation. All rights reserved.
> +; SPDX-License-Identifier: BSD-2-Clause-Patent > +; > +; Module Name: > +; > +; XSetBv.nasm > +; > +; Abstract: > +; > +; AsmXSetBv function > +; > +; Notes: > +; > +;-----------------------------------------------------------------------= ------- > + > + DEFAULT REL > + SECTION .text > + > +;-----------------------------------------------------------------------= ------- > +; UINT64 > +; EFIAPI > +; AsmXSetBv ( > +; IN UINT32 Index, > +; IN UINT64 Value > +; ); > +;-----------------------------------------------------------------------= ------- > +global ASM_PFX(AsmXSetBv) > +ASM_PFX(AsmXSetBv): > + mov rax, rdx ; meanwhile, rax <- return value > + shr rdx, 0x20 ; edx:eax contains the value to= write > + xsetbv > + ret > -- > 2.16.2.windows.1