From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web08.6597.1647313983633822963 for ; Mon, 14 Mar 2022 20:13:04 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Fb7uQNat; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: chasel.chiu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647313983; x=1678849983; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=NmmpBLBqaNitSAA8sxUWsEEF+HwvnXdPf7nazJE+4xI=; b=Fb7uQNatYV58kMVO6l4JyFbFmvkWWUKfYHxRoGtzZeJs6Ei6LckXxD68 nJIi94vI+12yseuwmfHSHmZrpNngvPOSlkVs4xUrj70NZrmQSdx/p/HQU /QSN0wLFYoCoF7DQzIk1GeQzZqN+aEWkMMSg0h0V5o3R7vvc340StC70a 5Jxtt1sXC/QVq7p6noKl+Y8NfNRiUVUMi6fmlYNVrXKYQE41C2aoeyQ9U raIyN66hEFNZz9bYsIXd6kfCxIhm7Wxl0juugmgEw+IoL1mlZWpS70/5z EkvYb+sM8Uu2eP6ELRpFzvRPngZwKjTkeenUSjCXONcn8lIIIr2wizYME w==; X-IronPort-AV: E=McAfee;i="6200,9189,10286"; a="256390087" X-IronPort-AV: E=Sophos;i="5.90,182,1643702400"; d="scan'208";a="256390087" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2022 20:13:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,182,1643702400"; d="scan'208";a="512454069" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga002.jf.intel.com with ESMTP; 14 Mar 2022 20:13:02 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Mon, 14 Mar 2022 20:13:02 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21 via Frontend Transport; Mon, 14 Mar 2022 20:13:02 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.174) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.21; Mon, 14 Mar 2022 20:13:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PJIXKDP4BJKa9k9sC17v02xjqL5rdzZ5RfhmaqMzcqkXyCGfJMYCBCSwMZSepnUEyBEYJIN1rdKiSpZAOH6rpJGS2We80ggBM9nUmdU4ADIzv5v0FTM8cluxbyUyXF7bIXLoU0UqnSjAnH9+LjuxAeJewpcXv19V7/49WSZYir43Fa8qylZMVhSGuKBMFbd587N+jKQKBSep9wo+96EUjcNI6CFjATnGmQLF3o+VRiARld1Tmd3w+3PmUCEJqojLTewQ+HUskDXC9LPj7ag5/a0kV9UqgIoZnkTlgS+Hxb66n84QUiQdUJ1o9aCUPqZ/GZ0SiknoOANNLJzVUPa00g== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GEnjyxYlYnHp/ZvgQgb3FFLNi7FgBhAp4nimEtRdW54=; b=cDtfGaV2otP5P9icgLK4pjoOnUrEZsWfIVZBiK49xRm4RsUOEYg8P0yqIwDUG/8jwPJjGmwevHq8cMlKF6sYAhJBuNMxz3jL/yrrC8xS5HX7e/uVX+IMQM6wArmoO3rurd/42W06rx4hlgDYDy1OhMjEWWyyHy1A1s+TBDYXVaqCPTvlvjYqs17wL4bUflaJrwCjacEz2ZVztoM4l+ygx9yiJzovOkankaegs+rY5DAhzeNZGqjLsUnofX8EwmSKvMpeCKpzh4dyMRGR7FgSNInJIpm60C/+KFFrW3eKWt8Z6Tvo9HLQJE6yxBcaeIj1VygZ73QG0CW584Z/sSnZMg== 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 Received: from BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by MN0PR11MB5988.namprd11.prod.outlook.com (2603:10b6:208:373::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.25; Tue, 15 Mar 2022 03:13:00 +0000 Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::8c4b:e24c:c69f:7809]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::8c4b:e24c:c69f:7809%6]) with mapi id 15.20.5061.028; Tue, 15 Mar 2022 03:13:00 +0000 From: "Chiu, Chasel" To: "Kuo, Ted" , "devel@edk2.groups.io" CC: "Desimone, Nathaniel L" , "Zeng, Star" , "S, Ashraf Ali" Subject: Re: [edk2-devel][PATCH v2] IntelFsp2Pkg: BaseFspSwitchStackLib Support for X64 Thread-Topic: [edk2-devel][PATCH v2] IntelFsp2Pkg: BaseFspSwitchStackLib Support for X64 Thread-Index: AQHYN04HxzBEN24aaUWe/uWN6AZJC6y/xlyw Date: Tue, 15 Mar 2022 03:13:00 +0000 Message-ID: References: <71ee0d36a35875749f163abb4d301da63ec0853a.1647226063.git.ted.kuo@intel.com> In-Reply-To: <71ee0d36a35875749f163abb4d301da63ec0853a.1647226063.git.ted.kuo@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 75fd186d-8700-4f00-80a5-08da0631b620 x-ms-traffictypediagnostic: MN0PR11MB5988:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nWGhMQcRsC9NZqHigNv1yq5T91TjGr2vvuVI5tNih1nD+AqoCYFrIC7Z8idDXCn4Go55Xol6YGGR+P9+xO4N6jljolTW6CkXGkHYvSNuUOqlGnLeAihPWpI2BGAk/l2WtNBW+2Ij12Cs+4rfwfYnGe+F53dCiIYBH+stLFVIg0ABn5yMo3AsNf6El+sFzDA65Oz7KXkcH1U1P1IUMgtUiAz013yZsQ2jKIOGUFBvbc2uWYwJrvFoVee6lH/RANEUpgnl6Gy9SwWHoelohvzGhjT8JIoGYfZVzyQ95lZx3crN+L/wEqUbPlzvg5VYbz6ZlCTGE2AIM4K6sffoA99AN471ZwJSnaFmeC4k68v7kQuU6liIrnQubwHkZzqx81atb5XPjSkbiYRZ2rCEnNMpFVdT+zirjsBpM9quEaur/TnayY3kaV3mJCopXbBGAj35Cy7Dwzu7GdxKk4XEAm18oaTdpXb0qebdZrNqnctTGcbifC70IxzMRMU6z/o1cLACw+lEftxoBh7L9e39xEl0ED1xEUGuk4OFmL38ifPSuS+C/visEtTI41TAb29MBbpTXYkrupZBXCS69QPxO4Zz0Nsb3mgnBPX6xf4UtNgl4qyiR2sWKay65BEdyfFqd4hJu2PRAaQyKJ7Cspkgfig/ER9Mg+vTwvkuhzP3+ySMl/pRqiNytZXnmpYw5g2qFgy8BMzBq7/nyYB4f6pmxUXfRTmFRyDYzrWhtRJX2ogxamZeoTGpNZn0Df13mgQoD212p3hQ/GRHIqc8yWMF26rwigmnt9bv0fIc8ZhR4CGddVaDFQ/FvXx+FDkx/dfSNAtbEsjpMW6IojNhSRNmoFasBWT0s983bpKiGkC5mE34BfM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5483.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(5660300002)(66476007)(66446008)(64756008)(76116006)(66946007)(4326008)(8676002)(66556008)(83380400001)(54906003)(110136005)(19627235002)(316002)(33656002)(52536014)(8936002)(55016003)(7696005)(107886003)(86362001)(71200400001)(186003)(122000001)(26005)(38070700005)(82960400001)(508600001)(2906002)(9686003)(38100700002)(53546011)(6506007)(11716005)(213903007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?rWdcy9MtRuM+MNJjQlIjqIzrQpv5VlhMLtaSeILrTPUv4M8fWPXvKcAVpsR6?= =?us-ascii?Q?Qg+kbD27Mr8Na1lpy0R2JX2WgnMX9QYjyclMjPEOgMDuF8V8AS8mP6TDeIl4?= =?us-ascii?Q?RDu40up29FGAjcJfgvOewOI7qRJy7cVEyvYZbU+phOFm8/yzar1rYlsxeht4?= =?us-ascii?Q?cXXjxK0zyhQ+sT39Cxi7nlMJvAiv5ldF/VQDw8712eMazhfbN3xd+kydZSTX?= =?us-ascii?Q?6hItmJ2/s3Y15kn7ldrrcibfPxUX9hivWactvImzpUCGcBiVvVd7D7ZwG557?= =?us-ascii?Q?03TzQWrsheOQEtlCskmHyfK8Zx0+d+8/aNqkYaITvTIsUJgMq+cWvoZ5lwQu?= =?us-ascii?Q?Algn3f45zIN2jwVJUrkbz0ssXdu1IHc+de3S5QBSvcOjxr01DwMALaedu8vH?= =?us-ascii?Q?QiaViWO2OoF33JhYvEfh7OtZ6sor8uSnNeawvLeC/kJPFCwlqLtO49R5riSx?= =?us-ascii?Q?iaY30JBPX7IuUGk9jC8r6aX5MQavoi1SUrqIzfvIzTDdg3jx8PkNksE6UseB?= =?us-ascii?Q?siQk6GritSg+y9Gfmy4+UB5B9Bp9HtxAlb2BOtHQpH/X4rRSCE7U5D40hAne?= =?us-ascii?Q?op0Xu2DzGG/VwfR+XTNH4H9DH9iydtgMY5NPnmGSvcIcOtMSbeu2IZ59Pa9L?= =?us-ascii?Q?NzDFB7jJQZ8HJQNFIRK1UMPrtNqbZsf6DTV8Fbb5jqggL77OFvb2LFXy8iD0?= =?us-ascii?Q?Y/N21BHZEtX15Itu1wfgZ2OflhT+Un1m5mlZWMn6nyfNQmHwBoZLsWZPg3Hu?= =?us-ascii?Q?SpZC+6f83Lxcz++R/R85ccuqgOVPyBRBlEFKy0qbPXQI6ryXpqHEgHWxBh9r?= =?us-ascii?Q?T9k8cBcuM6N8pAjdpPPvy3FRMNSSF2MUuCaQ9+o3YCrcHJmXO2JqQ4V7pJhj?= =?us-ascii?Q?6bzOttQamENNqPIYm03gFBgJMePzTfa52+xipfNYTUzSBy3ZSnmuv+IB6LO0?= =?us-ascii?Q?JXiZ/CvuOWyU4FYHQs2gk1/rQnz7MDmLD2ZBiDDNtM3jgzbsAiKbvGol7/om?= =?us-ascii?Q?RnhzXwPpeLQW4id/pXNvcyHzbzjB1gwSH6J4ddVUztHSxi0nOW0uadS3SflN?= =?us-ascii?Q?txoP6e3g3Yg7NMWO4yB2LOqxCzhiQeuujFFRBmCm3/70SptpB+Q0E9dR/zXE?= =?us-ascii?Q?/H1JNon8Iau21Wf6+YQwR4xRq/0ntD7WViqJiaOnxfAA/GR1FTEuWgFFkD09?= =?us-ascii?Q?Nd7YP+aiooWsT4vD2LgJY9H8Sn3Bx3L5u4fjwlYHJ42TvUyFOrEgC30WxQE6?= =?us-ascii?Q?Y3KhIsTCUwJih7SSeFfUw53whhWGv5zjj//LFPeXXWM3QGDkYOy4MBSArWXh?= =?us-ascii?Q?YS/k+yXLuuzFcsjf9nA1F2yfwioie5fULb3QZAMJzNBGdbShDhtkkYBjcF5F?= =?us-ascii?Q?lcwPTMpXBh7ouTJvVw7V1JkvFCaXWu2Heoh3AOudlZAiFyxQocHFrEwZbUyV?= =?us-ascii?Q?igR8FRNX2g3O4dUWlGDYPKXxC432nH3M?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75fd186d-8700-4f00-80a5-08da0631b620 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Mar 2022 03:13:00.4000 (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: Sti02nQnKiuHqFCxuiBF/3kN0aZxkNOMQpBP+PIrTa4EPxOF75VVK/aNczRweWY5J/YupHv0B/mnGbMDsp3gIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB5988 Return-Path: chasel.chiu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Thanks Ted for updating patch! Looks good to me. Reviewed-by: Chasel Chiu > -----Original Message----- > From: Kuo, Ted > Sent: Monday, March 14, 2022 10:48 AM > To: devel@edk2.groups.io > Cc: Chiu, Chasel ; Desimone, Nathaniel L > ; Zeng, Star ; S, As= hraf > Ali > Subject: [edk2-devel][PATCH v2] IntelFsp2Pkg: BaseFspSwitchStackLib Suppo= rt > for X64 >=20 > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3832 > Add BaseFspSwitchStackLib Support for X64. >=20 > Cc: Chasel Chiu > Cc: Nate DeSimone > Cc: Star Zeng > Cc: Ashraf Ali S > Signed-off-by: Ted Kuo > --- > IntelFsp2Pkg/Include/PushPopRegsNasm.inc | 67 ++++++++++++++++= ++++ > .../BaseFspSwitchStackLib.inf | 5 +- > .../BaseFspSwitchStackLib/FspSwitchStackLib.c | 8 +-- > .../Library/BaseFspSwitchStackLib/X64/Stack.nasm | 72 > ++++++++++++++++++++++ > 4 files changed, 147 insertions(+), 5 deletions(-) create mode 100644 > IntelFsp2Pkg/Include/PushPopRegsNasm.inc > create mode 100644 > IntelFsp2Pkg/Library/BaseFspSwitchStackLib/X64/Stack.nasm >=20 > diff --git a/IntelFsp2Pkg/Include/PushPopRegsNasm.inc > b/IntelFsp2Pkg/Include/PushPopRegsNasm.inc > new file mode 100644 > index 0000000000..ec103940d8 > --- /dev/null > +++ b/IntelFsp2Pkg/Include/PushPopRegsNasm.inc > @@ -0,0 +1,67 @@ > +;---------------------------------------------------------------------- > +-------- > +; > +; Copyright (c) 2022, Intel Corporation. All rights reserved.
; > +SPDX-License-Identifier: BSD-2-Clause-Patent ; ; Abstract: > +; > +; Provide macro to push/pop registers in X64 > +; > +;---------------------------------------------------------------------- > +-------- > + > +;-----------------------------------------------------------------------= ------ > +; Macro: PUSHA_64 > +; > +; Description: Saves all registers on stack ; > +; Input: None > +; > +; Output: None > +;-----------------------------------------------------------------------= ------ > +%macro PUSHA_64 0 > + push r8 > + push r9 > + push r10 > + push r11 > + push r12 > + push r13 > + push r14 > + push r15 > + push rax > + push rcx > + push rdx > + push rbx > + push rsp > + push rbp > + push rsi > + push rdi > +%endmacro > + > +;-----------------------------------------------------------------------= ------ > +; Macro: POPA_64 > +; > +; Description: Restores all registers from stack ; > +; Input: None > +; > +; Output: None > +;-----------------------------------------------------------------------= ------ > +%macro POPA_64 0 > + pop rdi > + pop rsi > + pop rbp > + pop rsp > + pop rbx > + pop rdx > + pop rcx > + pop rax > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop r11 > + pop r10 > + pop r9 > + pop r8 > +%endmacro > + > diff --git > a/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/BaseFspSwitchStackLib.inf > b/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/BaseFspSwitchStackLib.inf > index 3dcf3b9598..6909aec651 100644 > --- a/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/BaseFspSwitchStackLib.in= f > +++ b/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/BaseFspSwitchStackLib.i > +++ nf > @@ -15,12 +15,15 @@ > VERSION_STRING =3D 1.0 > LIBRARY_CLASS =3D FspSwitchStackLib >=20 > -[Sources.IA32] > +[Sources] > FspSwitchStackLib.c >=20 > [Sources.IA32] > Ia32/Stack.nasm >=20 > +[Sources.X64] > + X64/Stack.nasm > + > [Packages] > MdePkg/MdePkg.dec > IntelFsp2Pkg/IntelFsp2Pkg.dec > diff --git a/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/FspSwitchStackLib= .c > b/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/FspSwitchStackLib.c > index 618c25c3b0..dae4e27172 100644 > --- a/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/FspSwitchStackLib.c > +++ b/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/FspSwitchStackLib.c > @@ -20,16 +20,16 @@ >=20 >=20 > **/ > -UINT32 > +UINTN > SwapStack ( > - IN UINT32 NewStack > + IN UINTN NewStack > ) > { > FSP_GLOBAL_DATA *FspData; > - UINT32 OldStack; > + UINTN OldStack; >=20 > FspData =3D GetFspGlobalDataPointer (); > OldStack =3D FspData->CoreStack; > - FspData->CoreStack =3D NewStack; > + FspData->CoreStack =3D (UINTN) NewStack; > return OldStack; > } > diff --git a/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/X64/Stack.nasm > b/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/X64/Stack.nasm > new file mode 100644 > index 0000000000..bd36fe4b8b > --- /dev/null > +++ b/IntelFsp2Pkg/Library/BaseFspSwitchStackLib/X64/Stack.nasm > @@ -0,0 +1,72 @@ > +;---------------------------------------------------------------------- > +-------- > +; > +; Copyright (c) 2022, Intel Corporation. All rights reserved.
; > +SPDX-License-Identifier: BSD-2-Clause-Patent ; ; Abstract: > +; > +; Switch the stack from temporary memory to permanent memory. > +; > +;---------------------------------------------------------------------- > +-------- > + > + SECTION .text > + > +%include "PushPopRegsNasm.inc" > + > +extern ASM_PFX(SwapStack) > + > +;---------------------------------------------------------------------- > +-------- > +; UINT32 > +; EFIAPI > +; Pei2LoaderSwitchStack ( > +; VOID > +; ) > +;---------------------------------------------------------------------- > +-------- > +global ASM_PFX(Pei2LoaderSwitchStack) > +ASM_PFX(Pei2LoaderSwitchStack): > + xor rax, rax > + jmp ASM_PFX(FspSwitchStack) > + > +;---------------------------------------------------------------------- > +-------- > +; UINT32 > +; EFIAPI > +; Loader2PeiSwitchStack ( > +; VOID > +; ) > +;---------------------------------------------------------------------- > +-------- > +global ASM_PFX(Loader2PeiSwitchStack) > +ASM_PFX(Loader2PeiSwitchStack): > + jmp ASM_PFX(FspSwitchStack) > + > +;---------------------------------------------------------------------- > +-------- > +; UINT32 > +; EFIAPI > +; FspSwitchStack ( > +; VOID > +; ) > +;---------------------------------------------------------------------- > +-------- > +global ASM_PFX(FspSwitchStack) > +ASM_PFX(FspSwitchStack): > + ; Save current contexts > + push rdx ; ApiParam2 > + push rcx ; ApiParam1 > + push rax ; FspInfoHeader > + pushfq > + cli > + PUSHA_64 > + sub rsp, 16 > + sidt [rsp] > + > + ; Load new stack > + mov rcx, rsp > + call ASM_PFX(SwapStack) > + mov rsp, rax > + > + ; Restore previous contexts > + lidt [rsp] > + add rsp, 16 > + POPA_64 > + popfq > + add rsp, 24 ; FspInfoHeader + ApiParam[2] > + ret > + > -- > 2.16.2.windows.1