From nobody Thu Apr 18 21:05:17 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+74652+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+74652+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=amd.com Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1619783559035363.8679307545392; Fri, 30 Apr 2021 04:52:39 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id eVNIYY1788612xEptSDLYOyw; Fri, 30 Apr 2021 04:52:38 -0700 X-Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com []) by mx.groups.io with SMTP id smtpd.web12.10214.1619783548337545009 for ; Fri, 30 Apr 2021 04:52:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XIKiCwGgRvUHy4B+PElmNniRVtDxXVhYprtfqlwsebTz0p7JwVTZbiC19u147nn/7KOX24vdG9I71xUYF3vC0zjhj2UnXK4vNOUlwFqoGtFLx5Md2v2Z456NgaDGXZdsTfZ57B2GXsMDiKPtj1m3nqzqtSmCtn0eJpMsGpm8zqxVjhO0I+ZYM6jqGpEQEheg5CI7HV3E5uIHNNhfHrauEj8qmgb7ZSmitCnN2A2MtquwkT+MOgPnrGkK7m7Wow7JdFytSo5d8tkx0jI4oziSJKKXpGk9Shf5vwZNtBXtTl5S3rw6CAI3DrLMm0i6rVNbT0gvgkomju9S4B6xi5I+TA== 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=1r0cjMq1aWu9QNfIagE+5sVPhLkcPB04VfnRI0uiLI0=; b=Z8u+Tv4nBCJSRI0qfNNOQ4600GU1YMVByH7GfYUOROp9qmszA1TP8YVDelB05ecbVUNasuw4Y40jocvhzGzBDzYmxzNNPdv7o0Vd/3SAYt7ZIBl/gI1EvslxIgG9aCdd0BiEroyzmfCAacNUpLEgCU8cXXn+zDEjBoPAc2o34SiDgbB0vpLqYE1FESq3i5+LmPBgzgA2dtvEs864S459vxjYleMlQoZeaOq9E9Tf5hac5u7GhfmM57r4RRBccOiUCMPsoFT1lQvmSN+1qO/HoILwbzjVGE7x8LLNSb1JnC+MJxhjJoLxJ8DgZEQ21u0UIW9HQ+/ANuo/caKWxYzYMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none X-Received: from SN6PR12MB2718.namprd12.prod.outlook.com (2603:10b6:805:6f::22) by SN6PR12MB2783.namprd12.prod.outlook.com (2603:10b6:805:78::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.25; Fri, 30 Apr 2021 11:52:33 +0000 X-Received: from SN6PR12MB2718.namprd12.prod.outlook.com ([fe80::9898:5b48:a062:db94]) by SN6PR12MB2718.namprd12.prod.outlook.com ([fe80::9898:5b48:a062:db94%6]) with mapi id 15.20.4065.027; Fri, 30 Apr 2021 11:52:33 +0000 From: "Brijesh Singh" To: devel@edk2.groups.io Cc: Brijesh Singh , James Bottomley , Min Xu , Jiewen Yao , Tom Lendacky , Jordan Justen , Ard Biesheuvel , Laszlo Ersek , Erdem Aktas Subject: [edk2-devel] [PATCH RFC v2 25/28] OvmfPkg/PlatformPei: Validate the system RAM when SNP is active Date: Fri, 30 Apr 2021 06:51:45 -0500 Message-Id: <20210430115148.22267-26-brijesh.singh@amd.com> In-Reply-To: <20210430115148.22267-1-brijesh.singh@amd.com> References: <20210430115148.22267-1-brijesh.singh@amd.com> X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SA0PR12CA0006.namprd12.prod.outlook.com (2603:10b6:806:6f::11) To SN6PR12MB2718.namprd12.prod.outlook.com (2603:10b6:805:6f::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-Received: from sbrijesh-desktop.amd.com (165.204.77.1) by SA0PR12CA0006.namprd12.prod.outlook.com (2603:10b6:806:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Fri, 30 Apr 2021 11:52:31 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ebcaa4ef-6878-4af1-fbe4-08d90bce6f9b X-MS-TrafficTypeDiagnostic: SN6PR12MB2783: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: M8XIBAWuWwq7O7GodIxz5IKhq/6mdS+X1HJ23qna+jwu8HE5Da/HUZ6C6KLxdFOxND/ryEHh4NTy1yxPuPtpxoaP3REUwJRpCe0a9QozBRHoA68Z43SvpiV3AuUDR+rMUiHrP1O2YKkKsR1t0FBqjAqqv4niAJqh5ZUqRqfgyc+IZgkJd08kKpCY9YApOHU2sqfS4hg4PLH1n9zWoW/BDWdVD6NtNTdRLJa/Hx764Z5+mKqe8gy09O/uWGV0yLYezCXlMVYvEcEYldRYahAYFIC7t8Y6B4vitrZnby6psusQDwUAUSe/U1TtpfgsBRKe6gmPQW9sw9e2Z+LvEZG1WIHcrehmZdknQ0Q24u5XPWAjRtXDYbyNxECJb5HC2+ZWo76ZTxav3zJqfxRG6/nqUdY0UePtajrfxDa/qMGxHnUMuLYu1Ci/wkdJOSDkd3U25jOZHHvfQkue6mAV+2MbTiwj6cRzzAGgqCxd8oZ7WGDq8XktEVuOSDBZRUcs3dkw+P6IGD1Ijwx2BW0hSxKRuJZHmUG7f8tHkTJZE3cewrJq9eL8VtXw31nduIud0V1xgSAls5w935rcsswS5K4sShtiA1eGgsrioyAcjeF89wyPGlrOfR+35serf8vEMshBO/8tsswRylWWRu83xacR3gsDxMVJnkJlzp2fF3AqYe+RQhg7XThQYHHh8jk+dk2487tiMoq5m86Jq7qUCJ8XYb6pyFjAAsp+TAmlmRxKlvA= X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?r6lb2DycOgLo0zyBfpBLmA7npJD8jo625Aus4F5of6dPaCZs6tNz5VN1OUB5?= =?us-ascii?Q?wru+Djr+xXBW4Xu1ym9Ai0Be39bbr+cHaz8nqFfw0NROSFJhgTAQqZiHoI99?= =?us-ascii?Q?7AwD0NPFkwm7ZdDJ5xgGt7VP/M8Pipx+4ZHZQY7T6V9Vy4Uyezqg/vzA2E1y?= =?us-ascii?Q?Gpkb2RN/hgiTjnBYH8kWt4isqMzMtfhLCNOJyKNN+bWvGf9w0ADFjBoR4E+N?= =?us-ascii?Q?CjIahWG3drlAOMa3+3Py/+pgeUmcv9UQPSmRBF1+Ro3MuJPy4dRfER7kI9Mk?= =?us-ascii?Q?xOz7KIx57NowpUoUDLPoN9y56+aqywMVGRXafASrVXnc3rpY/ouo/GX23B6y?= =?us-ascii?Q?x8RCOWCxxAQ8DDEUNxSPsvMsfS/D673mcxsG3p8G1/EABwSIWo9dwg2rLG21?= =?us-ascii?Q?SDEiEOOY00wuVg56FHfynm5d8h1KREvm32x/qF90eQFf97fKLTNVqwUeK2JP?= =?us-ascii?Q?ij1SKwfG/rzv5dFK7u0D6v8O1/6I9R/xMvZPpfLbP+MzqaCACV4hNXO5iktW?= =?us-ascii?Q?ws1PtQsY8bc6DJe/k3C8c9yt9ulsIQUb8mJDQq/qrdKOJfoKqXcYb+cwVdIn?= =?us-ascii?Q?EE9UQ/f3jVhsso9Bjyldm1i77mh9V65KwYzhAamIyZsGEEygIdm5c/v2sojF?= =?us-ascii?Q?JcPcqbeqABqfRoabgHTFhV7yg6+WSQznysnrOx5pJ1unxjMHjOYXNaqEJ00S?= =?us-ascii?Q?T+rMDYzukvuPPYtnwVol9Mr0rWH3fPz4laGVU6pHXJxsmn+h5Lyg/Fnkg55g?= =?us-ascii?Q?fPOZnImYbBfgROhYqMttLb1uzJEgGQBkyIKS8M3Uj6bwxnnyvb+CqwLAsSNF?= =?us-ascii?Q?bGhFWIvNhNkPcQwpLatrA94XMo2FsivjC6Iw/1UpGH3PMUCRJCH1joA7fj3p?= =?us-ascii?Q?y81PwXdds8CO98Ro039unNdx5E0mDA8Z3uONULy0MWKl0hrmOAnSnKu8A+ZT?= =?us-ascii?Q?X2STIDNbueqpqPU2KcVFtpjpWDSkD9HcK77xJsGTXXXFWuXGzSyHDFksu+tl?= =?us-ascii?Q?lx9c4v/HJCXATzlZvYCL1U+/cnz+ceqaK9dXUPUecDTPiTXeZVF9jdfjCPxj?= =?us-ascii?Q?emvJ3xpRqRVzR3I+MmurIYoRBb9RCHenbvo2r0cexWbsYu6jS4QyXtwy1QB9?= =?us-ascii?Q?HI4CbAtl21nlyzp6mok2p2XoNJy7mW95TnD/7iwBtsyE7J/44Su3VisyWpTy?= =?us-ascii?Q?d8U0gRX4DlAEVvJ9cRLZ/nhpWXquFvanbyJFvjZtZXSLXVg89DpfC4IZkv5f?= =?us-ascii?Q?aBoP9UNSQT/5NwHkiypZwZhNPkWw4FvpWqDCtMT/9UCaWeaN91kWZFfk0pBJ?= =?us-ascii?Q?N25iJJvGLvRwjDvmb2WdfZOP?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: ebcaa4ef-6878-4af1-fbe4-08d90bce6f9b X-MS-Exchange-CrossTenant-AuthSource: SN6PR12MB2718.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 11:52:31.4817 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hseSbweO3x8dAjZDa4dg+fjVGarTQWAEd7zkls2+cwKqPxkCrEUaVx0FDSDCpkebD/6ZPSoTEWH71R1gzsTe6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2783 Precedence: Bulk List-Unsubscribe: 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,brijesh.singh@amd.com X-Gm-Message-State: QFm6Z0SYokdHN7PhTXWehPLqx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1619783558; bh=83HzpkjoZZ+WX5WAXs1XeCgFDsadw5UJbKAivx1FGgU=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=vmoNkmz07zvoGQPoVbzDtkDYGNtgvBFs/1/aipFwqvxImgMbSSBl5o36rUUGW3bZfpZ Xi+nh+ceC5SuHC+O7BGSflCqMeCSK0LKO5sGgj1btZYPa88LcNxHl8BqgF+3/guFDgvrl ZRv1NoM/yCkRhzEpmrvb/TpFc+y+ke+jT+0= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3275 When SEV-SNP is active, a memory region mapped encrypted in the page table must be validated before access. There are two approaches that can be taken to validate the system RAM detected during the PEI phase: 1) Validate on-demand OR 2) Validate before access On-demand =3D=3D=3D=3D=3D=3D=3D=3D=3D If memory is not validated before access, it will cause a #VC exception with the page-not-validated error code. The VC exception handler can perform the validation steps. The pages that have been validated will need to be tracked to avoid the double validation scenarios. The range of memory that has not been validated will need to be communicated to the OS through the recently introduced unaccepted memory type https://github.com/microsoft/mu_basecore/pull/66, so that OS can validate those ranges before using them. Validate before access =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Since the PEI phase detects all the available system RAM, use the MemEncryptSevSnpValidateSystemRam() function to pre-validate the system RAM in the PEI phase. For now, choose option 2 due to the dependency and the complexity of the on-demand validation. Cc: James Bottomley Cc: Min Xu Cc: Jiewen Yao Cc: Tom Lendacky Cc: Jordan Justen Cc: Ard Biesheuvel Cc: Laszlo Ersek Cc: Erdem Aktas Signed-off-by: Brijesh Singh --- OvmfPkg/PlatformPei/AmdSev.c | 33 ++++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/OvmfPkg/PlatformPei/AmdSev.c b/OvmfPkg/PlatformPei/AmdSev.c index 54b07622b4..9a20165db7 100644 --- a/OvmfPkg/PlatformPei/AmdSev.c +++ b/OvmfPkg/PlatformPei/AmdSev.c @@ -34,7 +34,9 @@ AmdSevSnpInitialize ( VOID ) { - RETURN_STATUS PcdStatus; + RETURN_STATUS PcdStatus; + EFI_PEI_HOB_POINTERS Hob; + EFI_HOB_RESOURCE_DESCRIPTOR *ResourceHob; =20 if (!MemEncryptSevSnpIsEnabled ()) { return; @@ -42,6 +44,22 @@ AmdSevSnpInitialize ( =20 PcdStatus =3D PcdSetBoolS (PcdSevSnpIsEnabled, TRUE); ASSERT_RETURN_ERROR (PcdStatus); + + // + // Iterate through the system RAM and validate it. + // + for (Hob.Raw =3D GetHobList (); !END_OF_HOB_LIST (Hob); Hob.Raw =3D GET_= NEXT_HOB (Hob)) { + if (Hob.Raw !=3D NULL && GET_HOB_TYPE (Hob) =3D=3D EFI_HOB_TYPE_RESOUR= CE_DESCRIPTOR) { + ResourceHob =3D Hob.ResourceDescriptor; + + if (ResourceHob->ResourceType =3D=3D EFI_RESOURCE_SYSTEM_MEMORY) { + MemEncryptSevSnpPreValidateSystemRam ( + ResourceHob->PhysicalStart, + EFI_SIZE_TO_PAGES ((UINTN) ResourceHob->ResourceLength) + ); + } + } + } } =20 /** @@ -204,6 +222,14 @@ AmdSevInitialize ( return; } =20 + // + // Check and perform SEV-SNP initialization if required. This need to be + // done before the GHCB page is made shared in the current page table. T= his + // is because the system RAM must be validated before it is made shared. + // The AmdSevSnpInitialize() validates the system RAM. + // + AmdSevSnpInitialize (); + // // Set Memory Encryption Mask PCD // @@ -264,9 +290,4 @@ AmdSevInitialize ( // Check and perform SEV-ES initialization if required. // AmdSevEsInitialize (); - - // - // Check and perform SEV-SNP initialization if required. - // - AmdSevSnpInitialize (); } --=20 2.17.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 (#74652): https://edk2.groups.io/g/devel/message/74652 Mute This Topic: https://groups.io/mt/82479080/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-