From nobody Thu May 16 23:39:22 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+110904+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+110904+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699432603; cv=none; d=zohomail.com; s=zohoarc; b=AsTA0oo9Xhjm2CA8UNbjStrLMGsPvjbffOTCL+T5Bojw1B5uDrYYG5TwUw4khnKTd9/dj6KCz5n+PIjvkJswaVr3e+qjITGMG9U/zGHU2KP2+9YrNk2aoQyFi5kwk8WNzAZ83oDBd9AKiJKy7h38KyuGZZ5GD8lrLwKXcdPIn08= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699432603; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=aOPNVo79GXulLNbIjGyXi4VBPOaoh0eKOzHwhfIw+08=; b=JHPLScJWP0nPvmy+cJusMfNimp4/iVukmzSV7O/1l453pG0lEzcMQz5KKDYOCg80fh5KP8dg/OLgunA4AGljRS7m6i6B/ZuXlGrpeefIgjNb/ad+kjVmqiR+QNFm+kzvrP8RtKzhSmLZun7bBJOem/qAaEzZPOg2+XKc826LrBo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+110904+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1699432603757958.7629568887403; Wed, 8 Nov 2023 00:36:43 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=rDZBKRHSWZAMVhohZ/mHGodASrF97/9V2LR2kYmR2m4=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1699432603; v=1; b=ItEE5WOhx/BB2Lo1SPuy7RKW+vrjmlhxMoQJVTSG57ho3zRjcSlkb8OzsqFcbujhOfM06M1c UdmXQMcrzpwsi541JdHuMicutEyGaVFKJeUnbyd1zvgV6b2/VZryzgnGIN2cjd6z14xX3avIyTg VoU6Zhk8m1DJWqfYJ20dJxkU= X-Received: by 127.0.0.2 with SMTP id tvyTYY1788612xzb6V3ujaZG; Wed, 08 Nov 2023 00:36:43 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.9372.1699432602932027541 for ; Wed, 08 Nov 2023 00:36:42 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10887"; a="389527230" X-IronPort-AV: E=Sophos;i="6.03,285,1694761200"; d="scan'208";a="389527230" X-Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 00:36:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10887"; a="936442416" X-IronPort-AV: E=Sophos;i="6.03,285,1694761200"; d="scan'208";a="936442416" X-Received: from cepingsx-mobl1.ccr.corp.intel.com ([10.239.49.140]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 00:36:38 -0800 From: "sunceping" To: devel@edk2.groups.io Cc: Ceping Sun , Liming Gao , Michael D Kinney , Erdem Aktas , James Bottomley , Min Xu , Tom Lendacky , Michael Roth , Gerd Hoffmann , Jiewen Yao Subject: [edk2-devel] [PATCH V3 1/2] MdePkg/BaseLib: Update TdVmcall to always output the value in R11 Date: Wed, 8 Nov 2023 16:32:02 +0800 Message-Id: <20231108083203.1417-2-cepingx.sun@intel.com> In-Reply-To: <20231108083203.1417-1-cepingx.sun@intel.com> References: <20231108083203.1417-1-cepingx.sun@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,cepingx.sun@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: zaDSPPIJDs9av4mIZ8HWDKe1x1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1699432605203100003 Content-Type: text/plain; charset="utf-8" From: Ceping Sun REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4572 According to section 3.2 of the [GHCI] spec, if the return status of MapGPA is "TDG.VP.VMCALL_RETRY", TD must retry this operation for the pages in the region starting at the GPA specified in R11. Currently, TDVF has not handled the retry results and always clears the R11 on unsuccessful return status. For this, the TdVmcall needs to output the value of R11 on unsuccessful return status to handle the retry results of MapGPA. Reference: [GHCI]: TDX Guest-Host-Communication Interface v1.0 https://cdrdv2.intel.com/v1/dl/getContent/726790 Cc: Liming Gao Cc: Michael D Kinney Cc: Erdem Aktas Cc: James Bottomley Cc: Min Xu Cc: Tom Lendacky Cc: Michael Roth Acked-by: Gerd Hoffmann Reviewed-by: Jiewen Yao Signed-off-by: Ceping Sun Reviewed-by: Liming Gao --- MdePkg/Library/BaseLib/X64/TdVmcall.nasm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/MdePkg/Library/BaseLib/X64/TdVmcall.nasm b/MdePkg/Library/Base= Lib/X64/TdVmcall.nasm index 5ecc10b17193..8dd9bfcbfa14 100644 --- a/MdePkg/Library/BaseLib/X64/TdVmcall.nasm +++ b/MdePkg/Library/BaseLib/X64/TdVmcall.nasm @@ -133,9 +133,7 @@ ASM_PFX(TdVmCall): test r9, r9 jz .no_return_data =20 - ; On success, propagate TDVMCALL output value to output param - test rax, rax - jnz .no_return_data + ; Propagate TDVMCALL output value to output param mov [r9], r11 .no_return_data: tdcall_regs_postamble --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#110904): https://edk2.groups.io/g/devel/message/110904 Mute This Topic: https://groups.io/mt/102460272/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Thu May 16 23:39:22 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+110905+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+110905+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699432612; cv=none; d=zohomail.com; s=zohoarc; b=fDMx15oyMUOUPTxula60MNYA5iQlrKV4mzSQlM8QpfCmIyQFdC8bXUW4eVeizk2Y92Y0Qno65pNiUDIEje6zpvVHuYbvNRiAFZ+U6IVbHSBvbRbuaBD8p12dbuBOMisn5G35pGW4PB5bMIYRrD+KtHpskklruBfa5ukYN9tlS/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699432612; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=JIUUUkVESDT6hp/c5kP8VDNqaxlZ9R0yOjDEzEQbcmU=; b=EhXPwnDqK0V8e7nh3mfFbpsAyfXZmU7fYueb9f7a+N/apJu5nZs7lhJxYxN4D5plpMnDeJwVvwKy2bm8lVo+lSjOK34hgLphjTKJHOzRBlKObbKKbaDaMXCEMhd+yECfMqOKh/pTUfbuQCRc/6ovHn7iy35yQhzCLb/qE78q7/M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+110905+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1699432612287854.3108112534085; Wed, 8 Nov 2023 00:36:52 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=WxsarKzR8V63731Xl4Ep0tkNBW6Rf5xegNmsC8N0CoU=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1699432611; v=1; b=imWNLQZki+RkjUrNDf/qEtLISejwioR5+ejWonXQEz0lXeKTDTshm7QJKw+iqh+FLcUXDYNR x/dp0WYfcS94pWhOmh/ZMrvnYzJvR6XzwySULHLPfDkOhi+Mf2aIlwVY6QHo2XxaPKAVOVmWn26 56wgPCGDy/yJ3+M4dg5vG08A= X-Received: by 127.0.0.2 with SMTP id Kne7YY1788612x8p60OKqhYs; Wed, 08 Nov 2023 00:36:51 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web10.9316.1699432610679212078 for ; Wed, 08 Nov 2023 00:36:51 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10887"; a="389527251" X-IronPort-AV: E=Sophos;i="6.03,285,1694761200"; d="scan'208";a="389527251" X-Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 00:36:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10887"; a="936442452" X-IronPort-AV: E=Sophos;i="6.03,285,1694761200"; d="scan'208";a="936442452" X-Received: from cepingsx-mobl1.ccr.corp.intel.com ([10.239.49.140]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 00:36:47 -0800 From: "sunceping" To: devel@edk2.groups.io Cc: Ceping Sun , Erdem Aktas , James Bottomley , Jiewen Yao , Min Xu , Tom Lendacky , Michael Roth , Gerd Hoffmann Subject: [edk2-devel] [PATCH V3 2/2] OvmfPkg/BaseMemEncryptTdxLib: Handle retry result of MapGPA Date: Wed, 8 Nov 2023 16:32:03 +0800 Message-Id: <20231108083203.1417-3-cepingx.sun@intel.com> In-Reply-To: <20231108083203.1417-1-cepingx.sun@intel.com> References: <20231108083203.1417-1-cepingx.sun@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,cepingx.sun@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: AcSuRftEgFOmLSjrBpvVFLcdx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1699432613227100003 Content-Type: text/plain; charset="utf-8" From: Ceping Sun REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4572 According to section 3.2 of the [GHCI] document, if the return status of MapGPA is "TDG.VP.VMCALL_RETRY", TD must retry this operation for the pages in the region starting at the GPA specified in R11. In this patch, when a retry state is detected, TDVF needs to retry the mapping with the specified address from the output results of TdVmCall. Reference: [GHCI]: TDX Guest-Host-Communication Interface v1.0 https://cdrdv2.intel.com/v1/dl/getContent/726790 Cc: Erdem Aktas Cc: James Bottomley Cc: Jiewen Yao Cc: Min Xu Cc: Tom Lendacky Cc: Michael Roth Cc: Gerd Hoffmann Signed-off-by: Ceping Sun Acked-by: Gerd Hoffmann --- MdePkg/Include/IndustryStandard/Tdx.h | 2 + .../BaseMemEncryptTdxLib/MemoryEncryption.c | 41 ++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/MdePkg/Include/IndustryStandard/Tdx.h b/MdePkg/Include/Industr= yStandard/Tdx.h index 81df1361842b..2662761883e5 100644 --- a/MdePkg/Include/IndustryStandard/Tdx.h +++ b/MdePkg/Include/IndustryStandard/Tdx.h @@ -103,6 +103,8 @@ #define TDVMCALL_REPORT_FATAL_ERR 0x10003 #define TDVMCALL_SETUP_EVENT_NOTIFY 0x10004 =20 +#define TDVMCALL_STATUS_RETRY 0x1 + #pragma pack(1) typedef struct { UINT64 Data[6]; diff --git a/OvmfPkg/Library/BaseMemEncryptTdxLib/MemoryEncryption.c b/Ovmf= Pkg/Library/BaseMemEncryptTdxLib/MemoryEncryption.c index a01dc98852b8..a71b1efbca7a 100644 --- a/OvmfPkg/Library/BaseMemEncryptTdxLib/MemoryEncryption.c +++ b/OvmfPkg/Library/BaseMemEncryptTdxLib/MemoryEncryption.c @@ -38,6 +38,8 @@ typedef enum { =20 STATIC PAGE_TABLE_POOL *mPageTablePool =3D NULL; =20 +#define MAX_RETRIES_PER_PAGE 3 + /** Returns boolean to indicate whether to indicate which, if any, memory en= cryption is enabled =20 @@ -527,6 +529,13 @@ SetOrClearSharedBit ( EFI_STATUS Status; EDKII_MEMORY_ACCEPT_PROTOCOL *MemoryAcceptProtocol; =20 + UINT64 MapGpaRetryAddr; + UINT32 RetryCount; + UINT64 EndAddress; + + MapGpaRetryAddr =3D 0; + RetryCount =3D 0; + AddressEncMask =3D GetMemEncryptionAddressMask (); =20 // @@ -540,7 +549,37 @@ SetOrClearSharedBit ( PhysicalAddress &=3D ~AddressEncMask; } =20 - TdStatus =3D TdVmCall (TDVMCALL_MAPGPA, PhysicalAddress, Length, 0, 0, N= ULL); + EndAddress =3D PhysicalAddress + Length; + while (RetryCount < MAX_RETRIES_PER_PAGE) { + TdStatus =3D TdVmCall (TDVMCALL_MAPGPA, PhysicalAddress, Length, 0, 0,= &MapGpaRetryAddr); + if (TdStatus !=3D TDVMCALL_STATUS_RETRY) { + break; + } + + DEBUG ((DEBUG_VERBOSE, "%a: TdVmcall(MAPGPA) Retry PhysicalAddress is = %llx, MapGpaRetryAddr is %llx\n", __func__, PhysicalAddress, MapGpaRetryAdd= r)); + + if ((MapGpaRetryAddr < PhysicalAddress) || (MapGpaRetryAddr >=3D EndAd= dress)) { + DEBUG (( + DEBUG_ERROR, + "%a: TdVmcall(MAPGPA) failed with MapGpaRetryAddr(%llx) less than = PhysicalAddress(%llx) or more than or equal to EndAddress(%llx) \n", + __func__, + MapGpaRetryAddr, + PhysicalAddress, + EndAddress + )); + break; + } + + if (MapGpaRetryAddr =3D=3D PhysicalAddress) { + RetryCount++; + continue; + } + + PhysicalAddress =3D MapGpaRetryAddr; + Length =3D EndAddress - PhysicalAddress; + RetryCount =3D 0; + } + if (TdStatus !=3D 0) { DEBUG ((DEBUG_ERROR, "%a: TdVmcall(MAPGPA) failed with %llx\n", __func= __, TdStatus)); ASSERT (FALSE); --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#110905): https://edk2.groups.io/g/devel/message/110905 Mute This Topic: https://groups.io/mt/102460273/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-