From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web10.3034.1634777129509269190 for ; Wed, 20 Oct 2021 17:45:29 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=VXDvteo7; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: jiewen.yao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10143"; a="228863934" X-IronPort-AV: E=Sophos;i="5.87,168,1631602800"; d="scan'208";a="228863934" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Oct 2021 17:45:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,168,1631602800"; d="scan'208";a="594882420" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga004.jf.intel.com with ESMTP; 20 Oct 2021 17:45:28 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 20 Oct 2021 17:45:28 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 20 Oct 2021 17:45:28 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.177) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Wed, 20 Oct 2021 17:45:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z1V2NRf+vbCz3XPyKz3uT4xWOXl03hgzBBW8gEGA1mGOx+KWKnQ0+Rs6qIc1MHLCW7ZXHRBDuU2yCel36N4FWFY4VRhdojSDHH7LP3iI1xgSKPO2GSTcKQBJ4kO6zouLQTrwgWpH/BdKgHkMi2Mt0QDm+sl3TpR6ECMB4oSFCKxnWh9UWD5s6MBjFY+y9D9JyRcNfa81186TEIgXB0sS3CpRPqQen34be4OGzlOHp/CCzjCEXDThHJwu+NBXZf4OelQYOZyfTuuxRpy8Kqh/eDGY2YoS3YZcTh0nNIrfkW9iDQRVyNUxM+o2xWvEYXczmfplDrOOi2bZVgSBJWICNg== 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=ZmpV6FQ/WIzNAdJYpMDNJBN01MTFcXEweYjuumoCRN8=; b=fGPtSMYHBde4QULmK40AqHbBJ4cuK8R7CuotfMHdBMtShqUpLFYh9f4bXrQd/tU2TCRpBnOnSi3Y8X+fafGX0jXS1NyKDyn0AlHsVMwe874kySVSbUwDOnU6TVDS23QdYKzu8CRRiKMOXZfMN7l/Tfe5GUHv4Jj8jUiWnOZVqUOCcERpDRAlawN9uHIlDFWjDqaiqBRw9nuh6lkLFtmN4UDqJBNx2qUWDLxZfllYITQX9KtvSRsU9f3BLbMJp7qg7IlAaf+h+pwsgSh/V+PD1K9uOVDesrZMWFTPT2OlDPTrM26N1NSemPSzNVEIm2awjrWv2vwz16tHuyG28IRFag== 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=ZmpV6FQ/WIzNAdJYpMDNJBN01MTFcXEweYjuumoCRN8=; b=VXDvteo755o1z7z9FVnF2FudlL/opB204kfit/3wNKJDdO9MSuMyjSL1iFdsJ7kVmudlBZjFDqikwD8jsHPN81N3XIBOFpJZeQUiVXG3nkUN+NhPeZ1GCOAWcUa843x8xWgXHgTn/tyh0LSbKdWfoTsRKrPSNfZ4dbiQoMcd0+I= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB4997.namprd11.prod.outlook.com (2603:10b6:510:31::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Thu, 21 Oct 2021 00:45:23 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::c5cb:e37a:9f3:8f80]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::c5cb:e37a:9f3:8f80%6]) with mapi id 15.20.4608.019; Thu, 21 Oct 2021 00:45:23 +0000 From: "Yao, Jiewen" To: "Xu, Min M" , "devel@edk2.groups.io" CC: Ard Biesheuvel , Gerd Hoffmann , "Justen, Jordan L" , "Brijesh Singh" , Erdem Aktas , "James Bottomley" , Tom Lendacky Subject: Re: [PATCH V10 0/4] Add Intel TDX support in OvmfPkg/ResetVector Thread-Topic: [PATCH V10 0/4] Add Intel TDX support in OvmfPkg/ResetVector Thread-Index: AQHXxhFRLTngSNx7hUWT9pGYSbJ8xKvcnZ7g Date: Thu, 21 Oct 2021 00:45:22 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.200.16 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-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 78db51b8-98fb-4168-88dd-08d9942c10c5 x-ms-traffictypediagnostic: PH0PR11MB4997: 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:1443; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4VoGUJTPctFbw4fiOzChaT5KsOMbpcMyz8emQAOLnxRnIf6EsJ4L6RewgPKpT1qUfRtOxEaZDJ53tZntYRbbCczqi7xs2b/aFjbPDZM5aLaocH6ACGg0bo8D3O4AELyYNzC2e6HIbfKE/K8thZHRmn50xAejDbPnKntHi6Nd4Gvl0q3k4V5SDoQz+TW113/JDNG0eFxo17IK/rQOgNpm8jut9q0PgmFdA0LtNF1uO6tLjg8kwWqMXOGA1OaXNlCziyRuPkoQvMxJW+99IBAtDJtYxN4wlJJxDhQKu4+RKQgrEQnIvGta5rK6U+lwrgxQnz6t9ILm07QOkUgaNheFqrxBAlM6oaMCW7yu/Gx8p5jw5eQvSSQ0Mx2R6Dj7ZmnaQpavR25IgpZoxQuih6qF6Ne1IssDmC5bLhRwtoSPZzMBRGzwzgszoTyyzjNrMMPrj3eqfA+y24WpPzWa+hwAArDrsuybBzNtMlHmFags6VU9t74p+nawbitZ+iZHuHktEG9SvK5+K08CPF1EolFTuw913+E3563QozGm84FHLVIWdbeli7K6HDl64ijVewAI2+x/iPWd3mz0b8srRr3liITm26GRKsT8BKhOAXZknM1s6bkjOrrJ8jxYv1YMU0ZEvC8ftngKK51hXpHI5S5KH/vAOgo8Fw5c1mPBGTAxFxKXiZaR8CoaJcF5gy7CZiALRxz7V77wijUPSymj64Cib+fubXT/pUey+jQjIuLfOgTuLvtYkTYbneRi8VPdDly+S9sjpcmbkGoSpPhffWXWPGLbVo01dQYsOj2g1aLz5j+hBzX1MCFw6UCX4TNtrZGA8TIETbm5vr7iJfduhuStTw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(6506007)(9686003)(71200400001)(86362001)(316002)(5660300002)(2906002)(8936002)(186003)(26005)(66556008)(83380400001)(66476007)(33656002)(508600001)(8676002)(38070700005)(38100700002)(53546011)(66946007)(19627235002)(54906003)(76116006)(52536014)(7696005)(110136005)(4326008)(122000001)(82960400001)(64756008)(66446008)(55016002)(966005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?9FlSntF0Y7ph5tygHTlwpkZDf6IL1jTI8BWx5DrSlbzWTmnsIZqjda+emP/P?= =?us-ascii?Q?4+KmPvzg/dly8rgecEwnoKukznhBuhumrkP8+tkUgZrh9nGMFC8cdScYsiP3?= =?us-ascii?Q?weZKlRX0dc5hMwwa2CWsUL2wLFn7IjcUwcZCJ/nGyAgoXs2sRiY0nkK3Nme0?= =?us-ascii?Q?CKMk9qSZczID1zJcuXlESWjsxhhHlTlBe3B6JUihtgjseS7AWUjsE9JxhGig?= =?us-ascii?Q?i9z82VURwve0PegErQm99IS72KYL2AM5EACXRWBRVsPp19np05Aa+TCA8nxA?= =?us-ascii?Q?xvltm8PEtJ4pGUcYT1hx7xaXrvDjLwDs2rFsRueodTInwfkspzonIgJnNh+Y?= =?us-ascii?Q?v5eir3QO1ZPN2vvkyHpJtqxbpvmjLLHuxnPeaowd3rm7yzpXOAZEIeGaTNxV?= =?us-ascii?Q?/+I1MaXPwEBPaoo9YdYNBboaMa+V8AaA7uGI2vC8OlXFHvNOJ3wqmuKHb/IL?= =?us-ascii?Q?orw94OnfZ5VYfF2cheviVjOj2JlowrfOu2QLBVbmf5VNjZe783TLTcZk5oEz?= =?us-ascii?Q?YYw8yMXhdfxPd135cVlQjYRZkP6r8fMCLyYyN5dPWwAl8BrLTPLKL/IFdPuV?= =?us-ascii?Q?5aReJtPB90PeQ191G2adumflG2wi8rYzxlynF7fOJm6ttK+tp8X8AJWSrClX?= =?us-ascii?Q?fB87rlgT+XeJry9ADzs1ojD5valNyD5h7LWUxymwKmOH3wKvG8D3SHkJtBoF?= =?us-ascii?Q?ShtESs8lNrXTW8j5SwWA3JbbeWes7WWQHHfMFkQCQ4HaXy8DSN7z5tPg0OTu?= =?us-ascii?Q?MnO8Ecj+OhfzpGETEEwCtq5A+SlQ0P1Ka5Yip8X/tFTgCT8eIzzTDgS7fb6e?= =?us-ascii?Q?Pm2S9VIvXWzv1zsr3kd0nMn1elRGBtfLNAR4fCa2yU1AUbLgkLPci2Lv0+oF?= =?us-ascii?Q?2f+rXV6SdiTLewY1TD81F9k0XalbGixWejFw/QOwjGe/0+FWle2FW17g/qUH?= =?us-ascii?Q?16s/4pr6dYfoTLcvWEFvIuHGM2vv/T5UzBEOsQWxKaP/W92ymiUsI16S1kjM?= =?us-ascii?Q?BXwWRDG3mrqaA2+S4XXeqabXdY4O8tm0jrWLcWxvvd158zPeJGHI/dLojJBq?= =?us-ascii?Q?f075YB+WmA8FkfyR4B44EV17GtvHqZ/5mt9aCRHdJYYL1Oi9NqFs923gAW8J?= =?us-ascii?Q?mGH6qeqJDrCIHgQ+q23dTDnO22EEzJb/1r1hyzKAghRJszD3sgieC2zZNkDw?= =?us-ascii?Q?SPa8mS0E3u6kVT7EYsDGQ2ZSdscnM6tmX1uLFLXIVSjWuAjaZ2oAjqUfFpFB?= =?us-ascii?Q?W++Cg3NJQBDLY8tmwWRo4xaPQ3GGjB4l7gKB0Cv6EtjNzggt9VJD0ceb85gn?= =?us-ascii?Q?GfSd7nTWluxEaX3710om5nho?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78db51b8-98fb-4168-88dd-08d9942c10c5 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Oct 2021 00:45:22.9463 (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: jiewen.yao@intel.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4997 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Thank you Min Series: Reviewed-by: Jiewen Yao > -----Original Message----- > From: Xu, Min M > Sent: Thursday, October 21, 2021 8:18 AM > To: devel@edk2.groups.io > Cc: Xu, Min M ; Ard Biesheuvel > ; Gerd Hoffmann ; Justen, > Jordan L ; Brijesh Singh ; > Erdem Aktas ; James Bottomley > ; Yao, Jiewen ; Tom Lendacky > > Subject: [PATCH V10 0/4] Add Intel TDX support in OvmfPkg/ResetVector >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3429 >=20 > Intel's Trust Domain Extensions (Intel TDX) refers to an Intel technology > that extends Virtual Machines Extensions (VMX) and Multi-Key Total Memory > Encryption (MKTME) with a new kind of virutal machines guest called a > Trust Domain (TD). A TD is desinged to run in a CPU mode that protects th= e > confidentiality of TD memory contents and the TD's CPU state from other > software, including the hosting Virtual-Machine Monitor (VMM), unless > explicitly shared by the TD itself. >=20 > The patch-sets to support Intel TDX in OvmfPkg is split into several > waves. This is wave-1 which adds Intel TDX support in OvmfPkg/ResetVector= . > Note: TDX only works in X64. >=20 > Patch #1: Ovmf uses its own Main.asm to reduce the complexity of Main.asm > in UefiCpuPkg. This Main.asm is an unmodified copy from > UefiCpuPkg/ReseteVector/Vtf0 (so no functional change) and the actual > changes for tdx come as incremental patches. >=20 > Patch #2: WORK_AREA_GUEST_TYPE is cleared in Main.asm instead of in > WORK_AREA_GUEST_TYPE. >=20 > Patch #3: Introduce IntelTdxMetadata.asm which describes the information > about the image for VMM use. >=20 > Patch #4: Enable TDX in OvmfPkg/ResetVector for ARCH_X64. >=20 > [TDX]: https://software.intel.com/content/dam/develop/external/us/en/ > documents/tdx-whitepaper-final9-17.pdf >=20 > [TDVF]: https://software.intel.com/content/dam/develop/external/us/en/ > documents/tdx-virtual-firmware-design-guide-rev-1.pdf >=20 > Code is at https://github.com/mxu9/edk2/tree/tdvf_wave1.v10 >=20 > v10 changes: > - Clear the OVMF_WORK_AREA in both ARCH_IA32 and ARCH_X64. > - Update the ReloadFlat32 based on the review comments. > - Other minor changes and update some comments. >=20 > v9 changes: > - Introduce IntelTdxMetadata.asm in a separate commit. > - Use absolute offset for the start of TdxMetadata so that VMM can > easily reach to the start of the metadata. >=20 > v8 changes: > - Create a separate commit for Main.asm. > - Create a separate commit for the clearance of WORK_AREA_GUEST_TYPE. > - Fix some inaccurate comments. >=20 > v7 changes: > - Refine the offset of TdxMetadata and remove the definition of > PcdOvmfImageSizeInKB > - Use MOV CR* instead of smsw in ResetVector > - Remove the new field (SubType) in > CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER. >=20 > v6 changes: > - Remove the 5-level paging support. 5-level paging enabling is *NOT* > super critical for TDX enabling at this moment. It will be enabled > later in a separate patch. > - Add a new field (SubType) in > CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER > to record the VM Guest SubType. > - In Main16 entry point, after TransitionFromReal16To32BitFlat, > WORK_AREA_GUEST_TYPE is cleared to 0. WORK_AREA_GUEST_TYPE was > previously cleared in SetCr3ForPageTables64 (see commit ab77b60). > This doesn't work after TDX is introduced in Ovmf. It is because all > TDX CPUs (BSP and APs) start to run from 0xfffffff0. In previous code > WORK_AREA_GUEST_TYPE will be cleared multi-times in TDX guest. So for > SEV and Legacy guest it is moved to Main16 entry point (after > TransitionFromReal16To32BitFlat). For TDX guest WORK_AREA_GUEST_TYPE > is cleared and set in InitTdxWorkarea. > - Make the return result of IsTdx be consistent with IsTdxEnabled. > - Fix some typo in the code comments. >=20 > v5 changes: > - Remove the changes of OVMF_WORK_AREA because Commit ab77b60 covers > those changes. > - Refine the TDX related changes in PageTables64.asm and > Flat32ToFlat64.asm. > - Add CheckTdxFeaturesBeforeBuildPagetables to check Non-Tdx, Tdx-BSP or > Tdx-APs. This routine is called before building page tables. >=20 > v4 changes: > - Refine the PageTables64.asm and Flat32ToFlat64.asm to enable TDX. > - Refine SEV_ES_WORK_AREA so that SEV/TDX/Legach guest all can use this > memory region. https://edk2.groups.io/g/devel/message/78345 is the > discussion. > - AmdSev.asm is removed because Brijesh Singh has done it in > https://edk2.groups.io/g/devel/message/78241. >=20 > v3 changes: > - Refine PageTables64.asm and Flat32ToFlat64.asm based on the review > comments in [ReviewComment-1] and [ReviewComment-2]. > - SEV codes are in AmdSev.asm > - TDX codes are in IntelTdx.asm > - Main.asm is created in OvmfPkg/ResetVector. The one in > UefiCpuPkg/ResetVector/Vtf0 is not used. > - Init32.asm/ReloadFlat32.asm in UefiCpuPkg/ResetVector/Vtf0/Ia32 are > deleted. They're moved to OvmfPkg/ResetVector/Ia32. > - InitTdx.asm is renamed to InteTdx.asm >=20 > v2 changes: > - Move InitTdx.asm and ReloadFlat32.asm from UefiCpuPkg/ResetVector/Vtf0 > to OvmfPkg/ResetVector. Init32.asm is created which is a null stub of > 32-bit initialization. In Main32 just simply call Init32. It makes > the Main.asm in UefiCpuPkg/ResetVector clean and clear. > - Init32.asm/InitTdx.asm/ReloadFlat32.asm are created under > OvmfPkg/ResetVector/Ia32. > - Update some descriptions of the patch-sets. > - Update the REF link in cover letter. > - Add Ard Biesheuvel in Cc list. >=20 > v1: https://edk2.groups.io/g/devel/message/77675 >=20 > Cc: Ard Biesheuvel > Cc: Gerd Hoffmann > Cc: Jordan Justen > Cc: Brijesh Singh > Cc: Erdem Aktas > Cc: James Bottomley > Cc: Jiewen Yao > Cc: Tom Lendacky > Signed-off-by: Min Xu >=20 > Min Xu (4): > OvmfPkg: Copy Main.asm from UefiCpuPkg to OvmfPkg's ResetVector > OvmfPkg: Clear WORK_AREA_GUEST_TYPE in Main.asm > OvmfPkg: Add IntelTdxMetadata.asm > OvmfPkg: Enable TDX in ResetVector >=20 > OvmfPkg/OvmfPkg.dec | 9 + > OvmfPkg/OvmfPkgDefines.fdf.inc | 9 + > OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 39 ++++ > OvmfPkg/ResetVector/Ia32/Flat32ToFlat64.asm | 11 + > OvmfPkg/ResetVector/Ia32/IntelTdx.asm | 222 +++++++++++++++++++ > OvmfPkg/ResetVector/Ia32/PageTables64.asm | 22 +- > OvmfPkg/ResetVector/Main.asm | 121 ++++++++++ > OvmfPkg/ResetVector/ResetVector.inf | 9 + > OvmfPkg/ResetVector/ResetVector.nasmb | 28 +++ > OvmfPkg/ResetVector/X64/IntelTdxMetadata.asm | 115 ++++++++++ > 10 files changed, 581 insertions(+), 4 deletions(-) > create mode 100644 OvmfPkg/ResetVector/Ia32/IntelTdx.asm > create mode 100644 OvmfPkg/ResetVector/Main.asm > create mode 100644 OvmfPkg/ResetVector/X64/IntelTdxMetadata.asm >=20 > -- > 2.29.2.windows.2