From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web10.3485.1674000960551603370 for ; Tue, 17 Jan 2023 16:16:00 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=ZmQW6ner; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: jiewen.yao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674000960; x=1705536960; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=0vFdjOFjBcm5Fk5MLHOXDe+23MeBC4mmLta7aHGVBO8=; b=ZmQW6nerJFvHoCKeasnx9IKHCrvAYUKxUtXrnigjWfce4XhaxJeGAwur hpwgVcIjeUQxVsDOX3rQasy5QKKaQ+MR67/v5q58bSpb7idCjPQh9XIAF +vzkXgqkm1owxCd1ETrXos/e5Kd8AOL0ep/8KLHC+XEFzdXZesbr2+fs1 psAo/YjHrEDLUau1M/5IlbyIgi3zkMtOJmviBJzDfI3ITyXmaWmSA4DzX Il3edzh0VkedFop8o80NMSxvAI0Wl0IBOx9OyA5Lcpn9MbZaaWEm2rNEq EofGZS778LHfOSROPjYq6BNGkHtWPim/Q5ytJw0IeTJ5YkoErqDwuE7gR A==; X-IronPort-AV: E=McAfee;i="6500,9779,10593"; a="312728257" X-IronPort-AV: E=Sophos;i="5.97,224,1669104000"; d="scan'208";a="312728257" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jan 2023 16:15:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10593"; a="652696481" X-IronPort-AV: E=Sophos;i="5.97,224,1669104000"; d="scan'208";a="652696481" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga007.jf.intel.com with ESMTP; 17 Jan 2023 16:15:49 -0800 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) 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.2507.16; Tue, 17 Jan 2023 16:15:48 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Tue, 17 Jan 2023 16:15:48 -0800 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.173) 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.2507.16; Tue, 17 Jan 2023 16:15:48 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jA92ElDWHnuOv3msScUboQZCEmWXF7Z80Gdv06+GCZGefzgV6RaUkmS3r5TLwk7y8G/rDhBVIJO5MGoRqmA7VAs6IkPp3HPkMFyGkY5/qXT0RpigfhzR28yteZIgLcLh461RTW648cPogMDkLj1Mz6/cQ7+6J5d5HMeMm0ATUoPUPmXlJNHX0WemWSp7ETzwkLtEzPzt6JHHZYueqgq36KX97g3hOv+X3mUmtzwm2l6QoRYx37Hgrbc9Tho5bxY1wTKmy4TqA2v5ZsCFBHz+gb1NJH0sjFXCdA+FnhyePJu2AyuNox6RGY3EpTh3FR0OWBrQVAeMAnhP7Y7ER3yu7Q== 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=dB824umNNEQaZRe0gQjMv/KUE8VkO8MGA6bR87GD34M=; b=YKZhSVbqXOe42TcC1fLMc9HYbEHbqgn/yhvD1RgNf8cclg4usn3JP5ZrPW11WnSl9IEHsLUQbzp6LA8MiXbCFZi1xCCf+m005qCq1IXe1yX/sPA90q85di5r0iO12SK+9xHyvUASdhgwlKUB1yV35Op8KYZcXGWY1Tk2E3eYz+x+5DwVMe/w9J+eTlekvE17522Q0oYtcY9yYV6uxNy+D3XD4pVf1h80LjJX8FvgLMQb7uVmQg9zjWoaWJpN/gOthGs04JFQJgRjnz9xs33HhoN2coX/pOlDd8tyzMk+pCkr5zShhKSbgjrCFmN2UHEbhLU5UYKlzpM0CB7M79zQ6A== 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 MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by BL3PR11MB6313.namprd11.prod.outlook.com (2603:10b6:208:3b0::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.13; Wed, 18 Jan 2023 00:15:44 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::5f56:1bdc:2eae:c041]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::5f56:1bdc:2eae:c041%7]) with mapi id 15.20.6002.013; Wed, 18 Jan 2023 00:15:44 +0000 From: "Yao, Jiewen" To: "Xu, Min M" , "devel@edk2.groups.io" CC: "Aktas, Erdem" , James Bottomley , Gerd Hoffmann , Tom Lendacky , Michael Roth Subject: Re: [PATCH V2 1/1] OvmfPkg/BaseMemEncryptTdxLib: Refactor error handle of SetOrClearSharedBit Thread-Topic: [PATCH V2 1/1] OvmfPkg/BaseMemEncryptTdxLib: Refactor error handle of SetOrClearSharedBit Thread-Index: AQHZKs7VcFF8vmH3SUKefKDdr8h7ma6jTlog Date: Wed, 18 Jan 2023 00:15:44 +0000 Message-ID: References: <20230117235232.242-1-min.m.xu@intel.com> In-Reply-To: <20230117235232.242-1-min.m.xu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR11MB5872:EE_|BL3PR11MB6313:EE_ x-ms-office365-filtering-correlation-id: 3f5d9d70-e473-4386-13ad-08daf8e9241d x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UyMJ8UYUHuT0M076yNO1iqvUJpQTFIb1wIZ2tiB80u8NnAEz6sZQo4fPLZrYVI9wPNeSx/77we2uT6VV9PyUhd1aiNZRl2qRqRIoKAYYWQ7CylIdaz6Ssd9TJ6TyjcmMHpExe/GE6EOquH6m5o8aQ/Q0v2ioBuTT45pSGMaT8EPsngLXsoQQD63EciNnPDvBnCrkaBJ4RtmVvF69fxzMp7e41sGbS5/YsusufDqd8aRoWJxIKM862edJc+6zAPJoPnyYeeOTuy5uJIA4nCDM2HGbYGX3l4fuSHuhFKBH8DHz/7J4oGO5+znWcseIaH7w6dEWzGl3J3vA0vx0+ba7PydDUlO3qVqqf2fz2oaCdJ7NKdkmpnXEznj9aelTNOi+A9YqmfIGeJlXqV0QvNdOgiUhBVZueek/4UNmsMTDQ7dyZAeFfcSIPL6qLJIIQ7gyvivRa2+Y4QWr/wrsaxNLKjUS0pgXoDocQ+pTxQ98hKqhrohzm6C3yNdo8LGbgfqEdCU6QCTAs8x0YZiAuksF7IObGUJ4DPX7UR8muPokfogdb3Em1mivoORIttC3qKEkqYOREweoa/tRhGxLDFQYE4QbtI1ccDk7KAFkVz9Hs8+8Ob8TyVMl9YuXGvacwedwHiSECrGHnzfOVkOFdIJy3O65iL2cYbtjKKNBEiUesEy22kJfARSOnYkeyokC3hoH5d9eSkHMSFnCWxCuQGxc9xsfZAYSQvr3tx45j6M0AP4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5872.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(6029001)(346002)(366004)(39860400002)(376002)(396003)(136003)(451199015)(26005)(186003)(6506007)(478600001)(9686003)(7696005)(71200400001)(33656002)(66946007)(76116006)(66476007)(122000001)(316002)(54906003)(64756008)(8676002)(4326008)(66446008)(110136005)(41300700001)(83380400001)(8936002)(52536014)(55016003)(2906002)(66556008)(38100700002)(38070700005)(5660300002)(53546011)(86362001)(82960400001)(213903007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?PCirP9FPNZBpQnVOoqmceNLugHmzVw4AIBiCSIuZ3U8usYe/wtK0HbH7Fy4t?= =?us-ascii?Q?8c2xi/7CtbP+wllSTUn1m/PGsoJy+aAks9N6Ba/Lpf+C17nv0rk7CGTpokQ8?= =?us-ascii?Q?gBn/QUyC8HHtZGUSLX1+kH3iORBmDIJYothxPCJ2orSNOiVn5iYcK2uYV0Gx?= =?us-ascii?Q?V/k7jMBhruH3dG8Az4qb0fzY97A/nnk9/5ffKX5sQCqRFXefRcPHAuEqphjv?= =?us-ascii?Q?cZGvHf0hZjCZ+mT/YpFOj+PqTOF1ktIn9elkqENLK7pgs5BaYLIRpxMeBG6d?= =?us-ascii?Q?ptZkKGscTo/BwK0zCIJwCgXejN53Va3apOp72QBhgbjEVq4WhNct3cZuZ+Me?= =?us-ascii?Q?12Aygw1kCRXZ4Kg0BGf1xO1nVFBySBNSHliUnFEuni4K+eBYBErnUL9acJlz?= =?us-ascii?Q?YFwppDAuo9npZoS9/fzki7F920N37EP0vF0VfFu2hARYc/WJYkfghKXCu1wp?= =?us-ascii?Q?aq923Km3aR2xuevVjAdFjZnilugsjFHXljIXsZGAr/ERUHCTqzIZpL8OBAvn?= =?us-ascii?Q?zWSbMY7nr2wk3LB9NvnzqMjAWe/DiuNyXcN0HnQzdLf32j+unN3JErWEp1VD?= =?us-ascii?Q?h7H4tDn6xiKCAXANv2ONC36d4M1n1dEH/ls1FqwvxqyCQtowSFOhXi/4MMNK?= =?us-ascii?Q?9gQQSrTzFRAU4d8jQSyRBdZLY5niAHY6lEWxVGekhguLgAZvzhtSUbiuQeIC?= =?us-ascii?Q?J41SIYOupZt46RxImHEjUqE3LODMS5yHPNKr5pwL0T9AZ6dZ+HlwqAyir1g2?= =?us-ascii?Q?HHUkJmCjNcwTXDXn+8Tz9EH+edgkxxhqZaheReUlhPPqpNSyWsR0PkZE3iLV?= =?us-ascii?Q?iUamOdny6S3EEKlfX3l3fB5YMheNxelbhkC0Gmkal+jyhwdobFz60Y7tvL9t?= =?us-ascii?Q?u/ahWzhHWBhgmvKeJLA32raM/lzdkUh9C98qA7tbLmkVtRlOUtFrbN+Bg2GV?= =?us-ascii?Q?xsiNjzq38fzebETxYvSeNgAn9663sUjO1Eg/IkaduXrHCStmPzq0VYkVDSTw?= =?us-ascii?Q?zoea2E72uAKxm83yYhns+eq3x3SUwOibGhr2HohhzXQdUP1PQGHM6Tj/1fUD?= =?us-ascii?Q?oQXO2W8ja6+MUW+t080TfHzRblobaCGxBVKsWUU+UODyUls+Iz5P95KHzxB/?= =?us-ascii?Q?ZFpg75SgDnpnTfXZnoYfoKuWtRHUKcR2xFW5+r/vbXvXohIC5jXbGS7yXlKu?= =?us-ascii?Q?8dpeJM7uNiSIvu4yFDIyxc63cjIh1Qa/gIotNixakTMW9O/xAYRD8A4UBTBy?= =?us-ascii?Q?wP0FYki+AjMkQgdeqeeEuYWI16rlKSS9oM7Yq212EF276p+t4bca3OWKz6Kt?= =?us-ascii?Q?CQTUFa9ll0REdlt5GkSDaXGSl8sC3YobKoOBOsJs+JdQqYcXKVkeNkfQauBt?= =?us-ascii?Q?C4uKRqRMbsrDSG9mfJ83TtsYUwpo2cn6C3TUhgU3mXsYLmiCI7iaMjAdt8SG?= =?us-ascii?Q?NO/STZKUcyMNWB/v9QyWIPHXkQFEsg2373TWbPbHcVgdfobSMAIe7MroPI48?= =?us-ascii?Q?OAXRTogUyenLnEg+jXYpoupmFknZ77uAfgT1RN8s3vFgrFthIqwTVWEv+am0?= =?us-ascii?Q?IQNchChdoFvjtRy+tUOZFBJwnRpS3W+i6nNvMO8K?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5872.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f5d9d70-e473-4386-13ad-08daf8e9241d X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jan 2023 00:15:44.2675 (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: ZmR9atQ4AW1mK7CuZ5oKV+DHrK3szqIEy6P0EFIv0Otq2sm4zcWb89WkqYB6qw4Kw2nuIEPAPigN4thk90svSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR11MB6313 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 Reviewed-by: Jiewen Yao > -----Original Message----- > From: Xu, Min M > Sent: Wednesday, January 18, 2023 7:53 AM > To: devel@edk2.groups.io > Cc: Xu, Min M ; Aktas, Erdem > ; James Bottomley ; Yao, > Jiewen ; Gerd Hoffmann ; > Tom Lendacky ; Michael Roth > > Subject: [PATCH V2 1/1] OvmfPkg/BaseMemEncryptTdxLib: Refactor error > handle of SetOrClearSharedBit >=20 > From: Min M Xu >=20 > The previous implementation of SetOrClearSharedBit doesn't handle the > error correctly. In this patch SetOrClearSharedBit is changed to return > error code so that the caller can handle it. >=20 > Cc: Erdem Aktas > Cc: James Bottomley > Cc: Jiewen Yao > Cc: Gerd Hoffmann > Cc: Tom Lendacky > Cc: Michael Roth > Reviewed-by: Jiewen Yao > Signed-off-by: Min Xu > --- > .../BaseMemEncryptTdxLib/MemoryEncryption.c | 48 +++++++++++++++---- > 1 file changed, 40 insertions(+), 8 deletions(-) >=20 > diff --git a/OvmfPkg/Library/BaseMemEncryptTdxLib/MemoryEncryption.c > b/OvmfPkg/Library/BaseMemEncryptTdxLib/MemoryEncryption.c > index 503f626d75c6..5b13042512ad 100644 > --- a/OvmfPkg/Library/BaseMemEncryptTdxLib/MemoryEncryption.c > +++ b/OvmfPkg/Library/BaseMemEncryptTdxLib/MemoryEncryption.c > @@ -510,8 +510,11 @@ Split1GPageTo2M ( > @param[in] PagetablePoint Page table entry pointer (PTE). > @param[in] Mode Set or Clear shared bit >=20 > + @retval EFI_SUCCESS Successfully set or clear the me= mory > shared bit > + @retval Others Other error as indicated > **/ > -STATIC VOID > +STATIC > +EFI_STATUS > SetOrClearSharedBit ( > IN OUT UINT64 *PageTablePointer, > IN TDX_PAGETABLE_MODE Mode, > @@ -520,7 +523,8 @@ SetOrClearSharedBit ( > ) > { > UINT64 AddressEncMask; > - UINT64 Status; > + UINT64 TdStatus; > + EFI_STATUS Status; > EDKII_MEMORY_ACCEPT_PROTOCOL *MemoryAcceptProtocol; >=20 > AddressEncMask =3D GetMemEncryptionAddressMask (); > @@ -536,16 +540,30 @@ SetOrClearSharedBit ( > PhysicalAddress &=3D ~AddressEncMask; > } >=20 > - Status =3D TdVmCall (TDVMCALL_MAPGPA, PhysicalAddress, Length, 0, 0, > NULL); > + TdStatus =3D TdVmCall (TDVMCALL_MAPGPA, PhysicalAddress, Length, 0, 0, > NULL); > + if (TdStatus !=3D 0) { > + DEBUG ((DEBUG_ERROR, "%a: TdVmcall(MAPGPA) failed with %llx\n", > __FUNCTION__, TdStatus)); > + ASSERT (FALSE); > + return EFI_DEVICE_ERROR; > + } >=20 > // > // If changing shared to private, must accept-page again > // > if (Mode =3D=3D ClearSharedBit) { > Status =3D gBS->LocateProtocol (&gEdkiiMemoryAcceptProtocolGuid, NUL= L, > (VOID **)&MemoryAcceptProtocol); > - ASSERT (!EFI_ERROR (Status)); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "%a: Failed to locate MemoryAcceptProtocol > with %r\n", __FUNCTION__, Status)); > + ASSERT (FALSE); > + return Status; > + } > + > Status =3D MemoryAcceptProtocol->AcceptMemory (MemoryAcceptProtocol, > PhysicalAddress, Length); > - ASSERT (!EFI_ERROR (Status)); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "%a: Failed to AcceptMemory with %r\n", > __FUNCTION__, Status)); > + ASSERT (FALSE); > + return Status; > + } > } >=20 > DEBUG (( > @@ -558,6 +576,8 @@ SetOrClearSharedBit ( > Mode, > Status > )); > + > + return EFI_SUCCESS; > } >=20 > /** > @@ -747,7 +767,11 @@ SetMemorySharedOrPrivate ( > // If we have at least 1GB to go, we can just update this entry > // > if (!(PhysicalAddress & (BIT30 - 1)) && (Length >=3D BIT30)) { > - SetOrClearSharedBit (&PageDirectory1GEntry->Uint64, Mode, > PhysicalAddress, BIT30); > + Status =3D SetOrClearSharedBit (&PageDirectory1GEntry->Uint64, M= ode, > PhysicalAddress, BIT30); > + if (EFI_ERROR (Status)) { > + goto Done; > + } > + > DEBUG (( > DEBUG_VERBOSE, > "%a:%a: updated 1GB entry for Physical=3D0x%Lx\n", > @@ -809,7 +833,11 @@ SetMemorySharedOrPrivate ( > // If we have at least 2MB left to go, we can just update this e= ntry > // > if (!(PhysicalAddress & (BIT21-1)) && (Length >=3D BIT21)) { > - SetOrClearSharedBit (&PageDirectory2MEntry->Uint64, Mode, > PhysicalAddress, BIT21); > + Status =3D SetOrClearSharedBit (&PageDirectory2MEntry->Uint64,= Mode, > PhysicalAddress, BIT21); > + if (EFI_ERROR (Status)) { > + goto Done; > + } > + > PhysicalAddress +=3D BIT21; > Length -=3D BIT21; > } else { > @@ -856,7 +884,11 @@ SetMemorySharedOrPrivate ( > goto Done; > } >=20 > - SetOrClearSharedBit (&PageTableEntry->Uint64, Mode, PhysicalAddr= ess, > EFI_PAGE_SIZE); > + Status =3D SetOrClearSharedBit (&PageTableEntry->Uint64, Mode, > PhysicalAddress, EFI_PAGE_SIZE); > + if (EFI_ERROR (Status)) { > + goto Done; > + } > + > PhysicalAddress +=3D EFI_PAGE_SIZE; > Length -=3D EFI_PAGE_SIZE; > } > -- > 2.29.2.windows.2