From nobody Fri Apr 26 12:53:54 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+74637+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+74637+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 16197835502601008.7893451697622; Fri, 30 Apr 2021 04:52:30 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id cNgTYY1788612x22E4dT0SfP; Fri, 30 Apr 2021 04:52:29 -0700 X-Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com []) by mx.groups.io with SMTP id smtpd.web08.10381.1619783543755812561 for ; Fri, 30 Apr 2021 04:52:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aX0J5xqKtu2LQP3LpByyw9JXA6cwJXbbWT3JNPBR2kY0qucCl9/Z3AjBHVOoQks/F7inKcyGmns4hsoc6xJG+x3kbWLaJlPT6H9EgqxyS3YtLjKLA8lsLkDaI9Xf6USyAJ1i94kEQKkTgfKhk/9jgDqsMx3WnWZBfrcGUUpP7EHWKzc+4xXRndkPLeuE2mXbIaJb/G2zN6Z0PbEmCCfaYUOUkI8SCWNDZ5CNMuHFWf6mXRfP427dRFNCsKG6KwG4790+JelvCoh62i+wUjtRrQSmbLW9hS+TPHhsu8oL+APqzyp0nNrQnP73itmV7stlHMCz5z6tVd7v2JZnevAlOA== 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=WBOAd+yJk+xRJ0sLPu8R6hypFuWKGPySczlfB4eqd7E=; b=kvDKaiEbNhD+5QjOt0RrDVZiLCloZhzV8GbvlKgGFOUjG/D3bNzD0jm/cOXAaAG7t3MwLbpeySoxEVUA/OLL3R4xl/s9W7VW9wFbzYuF2eUBUzvIUPvdt9QMB08Kfe/NusRAZBqBlqIh2fxp1ro4IEhYj5q2nVqNfpsJ4q7oMK56gakb2MIyt1XTGHY2JIVbkHadWPMSpG202WPkIbijY23kpU5JEG2CEjFZTSOHl1gwDxsBWoRUQxpvnPu8rN1+a1iuNZYEIUWF5ZC0te2vgDF+YowFulZyUWiYf3gA4LsnnF2KaAySiDLp2GfNvOKmnoDYTLVoNE05OrQxJKQWRg== 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 SA0PR12MB4349.namprd12.prod.outlook.com (2603:10b6:806:98::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.23; Fri, 30 Apr 2021 11:52:22 +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:22 +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 10/28] OvmfPkg/MemEncryptSevLib: add MemEncryptSevSnpEnabled() Date: Fri, 30 Apr 2021 06:51:30 -0500 Message-Id: <20210430115148.22267-11-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:21 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ec45cd58-e362-41cf-24e6-08d90bce69fd X-MS-TrafficTypeDiagnostic: SA0PR12MB4349: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:196; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: kKZLXeb7exl2U4l5/yJZUwcOSBdTjJeQUNtM90V2E8gO0IlRo2d4whhj7FlQQw6dKk7xV77CD/ZOoVhVcRZvPCtVOc9sgKTp8hRpl17z8aKpmJ+t8qX8mE6g5nqzDy8LGUY/so0foe3iOl7viFyyXZfAemE8VtiHILP7oT0yvxN1GLAAywMZZrnr8/lTv3uz5/EX5buC8JqMOoKkUxvfYZW4ljOj/uuK45Uv27EumyXb3LBoa8CP1N8yiPJHgdy9TYJ4TYugVuozLNiBtjUJPQo3KfZ9/H00e63/4EIqKjK28R5CBRZsTL6TqiyLozUfHi2xfDtfIRI7QDxl5V6OTFEedwYA1BFRm0WXqkMSAdIrxy1dDl48rHNASuCWYDVdl8/TfSSC8RCbg2NE4DQVvx7rAFl191xFjqCipgs4CVj/lCCRuiKZ7/7A/7QyjzxPyuLj6em81URFmYpzwMYKKuPXwJvRZVoTrB1ZWhKlZKCpMcdRACHyJX7MnmnEwAsdNFWktqlYtRIdEeJO/zxhpywfLE9EjSiwuHmzV6eUJrwkwn+UsQfsnJj0wTKb5P828H8FUZip4qTFcJE5dNVHT5dQ3MXjWkiFIUE0WwbnVDlxQnEaeYPhVhEEbaUs4jCXWYv7bOKw5dFJjrXp+3+6JGP3ECQPMQYIyUBKcHMg35oPJUhJXTZoW6813G4sfEjOPOzOmemWWmoHeM3OQM58eyGqpsnTkwlkerYXwvFeNXqMnSc2NchGBHZ8e8fFWwUumEQ1FlbJviLUZ0pnUbIm0A== X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?H+vv6hoZbKmy55iUB8gw8rH66tHcbAfK4dcotc9lbjUNERTwxVqFjsw4f01f?= =?us-ascii?Q?BogOr+94m4oLMA0B6ZnhgyyTo2Y1BC+poePvIFJo4IUTcV9isB0/zJbWZagf?= =?us-ascii?Q?LTdxCcgYW8MfelFoL3kcsLyzwpYBZhqf6S714UOe0f9C7q/1L+DyQ83hsDmi?= =?us-ascii?Q?z4kGlZSxfjtPBoMYjdy4WWLudUw0a5ucB2AU3z9wXYG+I1TgXvEeJLNq+T3k?= =?us-ascii?Q?lj46JdkdtLR68iExpmpRIhTjeyj3E3JoBuU9RDHj7/L/2bT968p+Qab+wT3V?= =?us-ascii?Q?oQK37vgmFZ+G560rMczbX3elOp0mgozbaE+gDm+v6ckY5i1J+g+CF03hrw5d?= =?us-ascii?Q?roHH+AYzn6NLQmsitDyA/HtqaW2+OUGMKTTKfgrXPw+8Enmsl22EIFE729jH?= =?us-ascii?Q?sTPUWHdObdGZZ8YnvGnnnQBcOJS0iJ6ylPAovs5rZlVyrTXV2Q9v5rdMgoC0?= =?us-ascii?Q?hN3Kr/eQlIzF3i0LQa7cvRKkRaGafQmL/KpK6+X0doEDISHv+RRU0UthQHdP?= =?us-ascii?Q?A8Z2jnwckFJgE/MJy6b0SxLcRN2zzG3joEuNPX1PBauVJPBg0irveRkRLZWz?= =?us-ascii?Q?WDjiEn4kSzcLQUWbKTbzESDR0tpK8xptaK38MIS4Dxq1lamyapNviftB7m2X?= =?us-ascii?Q?iRjzuPmuERo4JpcCZvUDgrSwPKYLtzUtG5Z9XctjDeXWJR5anNNL8dXGNe92?= =?us-ascii?Q?XiNTae6T0aodnSv95GjRWc6RmYbo1g/0ISvmkyaxwIkbF8pVE9BpP2i7VIr/?= =?us-ascii?Q?7p3jpaAQLXLcwZVYCWlSHg1rLaCW9ijVoWkgzpNrvjVId6g4P5CcEalRNovX?= =?us-ascii?Q?89oHhc5i5cByGymRUnldnfuiJFGgnno6TLx58oYAn2/cUmIU4IeTxVj9gCYy?= =?us-ascii?Q?sm/mo9nsPEQh0CX3lbaKLhfRSFDiZldNLf0VJvHotkKpwL9pcmfovHgJSrPo?= =?us-ascii?Q?OQWC8gZ4seIMwbgiSLL7xoqx420qJRHk2oLusby/0AUXh6WrSt6YWt5eQ3Gt?= =?us-ascii?Q?P90FuXsP+FEY1qcyPVH2+L9rp3QumbEIUWRYxWB5AuR5++4jeaWHrB4o7Csm?= =?us-ascii?Q?mwq6TUGDWH5bAlSiTrDItF+oaBA3EQdycFahE6eyf0josEYR6uimTKPkJIlH?= =?us-ascii?Q?q0S3pT6khcnJ/86kzk58hyF9Ln1oMSwvAtLITN50dJvOQ0YPxX3yFL5pjpng?= =?us-ascii?Q?7KQdmEEKe5XNV4Cns660WAA2UAfKA7mMhwKVAmf3VD+otzmZKMRJdVxtDN+S?= =?us-ascii?Q?qHDqbp2Z9tw9LYwVXX3yKauIgICFjab1Te41tKIdOtEAKWAMPL+hr3Tfjh1q?= =?us-ascii?Q?iFXxJvVYF1Y6wOPzm82hfW6N?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec45cd58-e362-41cf-24e6-08d90bce69fd 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:22.0631 (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: ePlQxzbd/KJ88UuviyUUAAsnWtHe7qkoodGHHZiRbHqyTXaL/4cHP9V7N4GfCUXE272vPX/F5yoeN/j4iPvZ0g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4349 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: MiY5ZyJpLXvfRuh5yrX7pXXdx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1619783549; bh=maV5UFtTErjStidh6pS/FA9ptAUGHbR8ygaYCtNi9rM=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=iSzHonr+1YBYZLra8Y4p6ei9VJTjdJ4pvxB9kTD1wsaIyzw0Zxh6JUhpa596tpiuou6 ToOBCgmOAwRArjZVH0oyqLdlwjcc0ynTFTxEh5OGyVlyK1Ip4cxXGMU+yaDqYJBB/4oXh 76tEtUJOzJ8rreLv4obtGaP+J1ueH7afFdY= 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 Create a function that can be used to determine if VM is running as an SEV-SNP guest. 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/Include/Library/MemEncryptSevLib.h | 12 ++= +++++++ OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c | 27 ++= ++++++++++++++++++ OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c | 27 ++= ++++++++++++++++++ OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c | 19 ++= ++++++++++++ 4 files changed, 85 insertions(+) diff --git a/OvmfPkg/Include/Library/MemEncryptSevLib.h b/OvmfPkg/Include/L= ibrary/MemEncryptSevLib.h index 9b15d80931..3868376dbf 100644 --- a/OvmfPkg/Include/Library/MemEncryptSevLib.h +++ b/OvmfPkg/Include/Library/MemEncryptSevLib.h @@ -66,6 +66,18 @@ typedef enum { MemEncryptSevAddressRangeError, } MEM_ENCRYPT_SEV_ADDRESS_RANGE_STATE; =20 +/** + Returns a boolean to indicate whether SEV-SNP is enabled + + @retval TRUE SEV-SNP is enabled + @retval FALSE SEV-SNP is not enabled +**/ +BOOLEAN +EFIAPI +MemEncryptSevSnpIsEnabled ( + VOID + ); + /** Returns a boolean to indicate whether SEV-ES is enabled. =20 diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibIntern= al.c b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c index 2816f859a0..0571297238 100644 --- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c +++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c @@ -19,6 +19,7 @@ =20 STATIC BOOLEAN mSevStatus =3D FALSE; STATIC BOOLEAN mSevEsStatus =3D FALSE; +STATIC BOOLEAN mSevSnpStatus =3D FALSE; STATIC BOOLEAN mSevStatusChecked =3D FALSE; =20 STATIC UINT64 mSevEncryptionMask =3D 0; @@ -82,11 +83,37 @@ InternalMemEncryptSevStatus ( if (Msr.Bits.SevEsBit) { mSevEsStatus =3D TRUE; } + + // + // Check MSR_0xC0010131 Bit 2 (Sev-Snp Enabled) + // + if (Msr.Bits.SevSnpBit) { + mSevSnpStatus =3D TRUE; + } } =20 mSevStatusChecked =3D TRUE; } =20 +/** + Returns a boolean to indicate whether SEV-SNP is enabled. + + @retval TRUE SEV-SNP is enabled + @retval FALSE SEV-SNP is not enabled +**/ +BOOLEAN +EFIAPI +MemEncryptSevSnpIsEnabled ( + VOID + ) +{ + if (!mSevStatusChecked) { + InternalMemEncryptSevStatus (); + } + + return mSevSnpStatus; +} + /** Returns a boolean to indicate whether SEV-ES is enabled. =20 diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibIntern= al.c b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c index e2fd109d12..b561f211f5 100644 --- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c +++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c @@ -19,6 +19,7 @@ =20 STATIC BOOLEAN mSevStatus =3D FALSE; STATIC BOOLEAN mSevEsStatus =3D FALSE; +STATIC BOOLEAN mSevSnpStatus =3D FALSE; STATIC BOOLEAN mSevStatusChecked =3D FALSE; =20 STATIC UINT64 mSevEncryptionMask =3D 0; @@ -82,11 +83,37 @@ InternalMemEncryptSevStatus ( if (Msr.Bits.SevEsBit) { mSevEsStatus =3D TRUE; } + + // + // Check MSR_0xC0010131 Bit 2 (Sev-Snp Enabled) + // + if (Msr.Bits.SevSnpBit) { + mSevSnpStatus =3D TRUE; + } } =20 mSevStatusChecked =3D TRUE; } =20 +/** + Returns a boolean to indicate whether SEV-SNP is enabled. + + @retval TRUE SEV-SNP is enabled + @retval FALSE SEV-SNP is not enabled +**/ +BOOLEAN +EFIAPI +MemEncryptSevSnpIsEnabled ( + VOID + ) +{ + if (!mSevStatusChecked) { + InternalMemEncryptSevStatus (); + } + + return mSevSnpStatus; +} + /** Returns a boolean to indicate whether SEV-ES is enabled. =20 diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibIntern= al.c b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c index 56d8f3f318..69852779e2 100644 --- a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c +++ b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c @@ -62,6 +62,25 @@ InternalMemEncryptSevStatus ( return ReadSevMsr ? AsmReadMsr32 (MSR_SEV_STATUS) : 0; } =20 +/** + Returns a boolean to indicate whether SEV-SNP is enabled. + + @retval TRUE SEV-SNP is enabled + @retval FALSE SEV-SNP is not enabled +**/ +BOOLEAN +EFIAPI +MemEncryptSevSnpIsEnabled ( + VOID + ) +{ + MSR_SEV_STATUS_REGISTER Msr; + + Msr.Uint32 =3D InternalMemEncryptSevStatus (); + + return Msr.Bits.SevSnpBit ? TRUE : FALSE; +} + /** Returns a boolean to indicate whether SEV-ES is enabled. =20 --=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 (#74637): https://edk2.groups.io/g/devel/message/74637 Mute This Topic: https://groups.io/mt/82479057/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-