From nobody Fri Dec 19 08:21:29 2025 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+80085+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+80085+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1630513066343643.5403021256807; Wed, 1 Sep 2021 09:17:46 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id Uf2fYY1788612xMOf7ybFwxI; Wed, 01 Sep 2021 09:17:46 -0700 X-Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.107.237.61]) by mx.groups.io with SMTP id smtpd.web10.176.1630513061970038126 for ; Wed, 01 Sep 2021 09:17:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Qv1GaR+4CCa1KSzXkXZsq06fII59WiTrFIEpZCFlc6tzyOdqb8eICsnjj5ndZt149Hfp27MXiPx+OpsqjSI/0g/6i5jXifrDk09epaxaRnBIMXdY0kYj5vH7o07u7G5ybO7EdzQ2tKgtx4yeN5RoKlrHAYyN64yUbYWkNm87F0RHgM84jvegfDZenGalkBW35luGfZ81MbW/8o0JV9EbVmTq9jaNmSViwCdl8BsGth4cvgYnXrGPVY0WLG2k0fIKFf1Lb6hn9TESL5rYotuStFoUSPsDZwTA+nJkKrNHH9DMtl/Jw6x/vo3MxFWVEmOorgJbYnZVDVee+bACwaFwBA== 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; bh=5OUcog9UVozK+ADgLz8vv0rYUnIBv0rJBeB6x+qPiHY=; b=XSpM9ziZg/dmRe2C9WV77Fl3A9DuwjdNfYZf5Kol7+iV4WgAPB0+3p4WgQwqZXEN4sz2mMeuWjaSJoP/vp/UV1jgq47HSS+sVnuGUbIKscTt3x3LAFo4k7+o4mlDCJCz2CvRX2EoSr5ehnCenw8HKyQ24ro0r9tzDVIE36zXvPTXmE1q2GEFKpHrWnLRH94RqZmpP/r0PFwSGyhyYzTnJdgf6ZsEUOi8jWfr2Egp+wypQDyhW+T3m4apqxlpx+nAdsMxOu5zVjb4zXItBIXhypA8QGIzU529Gvn+lGGGSiHDhOck4fQr/u/gjhYarkp8p/qEH7N65olEJg4c2Wi5aQ== 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 SA0PR12MB4415.namprd12.prod.outlook.com (2603:10b6:806:70::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.17; Wed, 1 Sep 2021 16:17:41 +0000 X-Received: from SN6PR12MB2718.namprd12.prod.outlook.com ([fe80::78b7:7336:d363:9be3]) by SN6PR12MB2718.namprd12.prod.outlook.com ([fe80::78b7:7336:d363:9be3%6]) with mapi id 15.20.4457.025; Wed, 1 Sep 2021 16:17:41 +0000 From: "Brijesh Singh via groups.io" To: devel@edk2.groups.io CC: James Bottomley , Min Xu , Jiewen Yao , Tom Lendacky , Jordan Justen , Ard Biesheuvel , Erdem Aktas , Michael Roth , Gerd Hoffmann , Brijesh Singh , Michael Roth Subject: [edk2-devel] [PATCH v6 09/29] OvmfPkg/MemEncryptSevLib: add MemEncryptSevSnpEnabled() Date: Wed, 1 Sep 2021 11:16:26 -0500 Message-ID: <20210901161646.24763-10-brijesh.singh@amd.com> In-Reply-To: <20210901161646.24763-1-brijesh.singh@amd.com> References: <20210901161646.24763-1-brijesh.singh@amd.com> X-ClientProxiedBy: SN4PR0501CA0062.namprd05.prod.outlook.com (2603:10b6:803:41::39) 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 SN4PR0501CA0062.namprd05.prod.outlook.com (2603:10b6:803:41::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.12 via Frontend Transport; Wed, 1 Sep 2021 16:17:40 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9bfece3d-5d02-41e3-6fd7-08d96d64059c X-MS-TrafficTypeDiagnostic: SA0PR12MB4415: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:196; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: MicuvOkBf6svYha5oQpfXsYQxzrGWaMbS3n0R2cVdGMN+ihcOq9dYYIgbm8q4L0mVfvacdZi7wvVmfGShxpY9NqVtHAGaq0aJjsK/NToRyPmVBKM3AHhLg8l5B+LPQ5hPLSfq/2fORAInYfF0/qJyMOelCLDpJ0kr/gBKrO6H33oSt7AENrFO/OT5KC0wTLD4Qa4SiDD1um+Wrtd9p2svI4nODMLgbpJ2LPMUzUiromEr/XbVj1S81dPwK5k5ZPu5IGwK0UNfIqEiR0gUOsVGTn+/uHp+jfd/gyw7TFLOW79cWITF7rJr3VclB7q4aMQSrIBQhOj/XDargFcw114igsv3aXbyCl4k0aj1uiDLEkFolbRAdCGA1stNF9aSUM+akD/OcAEau6G63B7Vi25YliYCBYbzEPBX4dOfnV595CVN15Q0TOK+OOdJicYKafPvU2wu+TQz4DIUpRgMNuJGYutV5ugYrhUwY8i1+RGvbW6SdG7I3XhIwUpClzBHLIMzBpkrEE9C4Bu0dwGd3yvrKtroWmoFueu0M6dm5kJZ8mXQNuRHzv0A/o5mT8axXqZdQHsKcmYYSrTDVBpRZKjo+EOv5aru+0ZdLjNG6lr5x5y+GxV0XxX6VMOV/tMN3tqeyHyFOSU3LOOpJsKIZyBp1uGq15Q4VkDQJy4v2e4fbhW9sEP1UAoW/yVgPazxhwNfFKVdbVRxS5qTkg3KAsKv6V3xFh0EAx/SOOip7hJocU91XTwOtKBBvFVjZ9TpoQzmc52QvteYgy1CVa+xqI3CRgw8HWfsbu9CXTj7yoPeoY0Ed+RyEPfFUfxzbo7+e+N X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ug/WPi6U+x72/ykq7D0GWezbJZoYLjtAUYTrIB01HjHyh2AFGe4ipqA0DhNI?= =?us-ascii?Q?NfpZxv7RWkxlH3yebi9GNDTA8BcqiqsI9Cuh4af2ZrRXmUE94UilY3UryGUk?= =?us-ascii?Q?f0ENc3NJ+x4K58eVVN9De3V0C3Na7hoh+tjR4c7J72jXhlTRznFJFIx2l9Ri?= =?us-ascii?Q?bfa7LiiTOub7g6dsEgHkPl5ggf2zmituOX4Eihr6eVBVOJyeUH7OMAcbMK8v?= =?us-ascii?Q?SKkn9D+BHRKgU/Y3lo1b86odyixxGbnz0TZrPvcvP0cJ4jgvhydby31At+7Y?= =?us-ascii?Q?efXuHNzJMXmSXthijd+W95o/dDoKxIS23cDlTBb0a+pTxYRlu2PZtVi8ZPDl?= =?us-ascii?Q?QEZEuNstg0fTaQTLZhgm65blgi800cOhAv4peqHISSQknHFkqlTgJtPBeuJU?= =?us-ascii?Q?6NmsTXIepkNtmXTIPWFRIzERIHJAoSpIcDf+PsBP4SfTjqPf0JOWHJBok8hZ?= =?us-ascii?Q?iZVsVc9RmZnMAE3jOPnm48zVoFDC/oTU++/AJbL5b3C1cDk3pFixfvrLA42I?= =?us-ascii?Q?2sz5Lzz6qONWYBqkJfjXs4iv0w8k5oJQDC7p55NaefKKGvkJLjXRzhZ8vwrg?= =?us-ascii?Q?6CePcl7ybcm0n30qrxxLCZBmAlYYb9WQgj4+LomHoQPLdmBVhzjZXJul5xgg?= =?us-ascii?Q?pmXitHqcmWG+yk17TJ0f15x4H7iXz9UW0AaNVYHu6hx2F5STDzikXeSQpw9W?= =?us-ascii?Q?VsNA17c2IU11RNO9/CZpBfPnxl1yv/cNelgqky5rZetiGtt+xNZTf6i/H+BG?= =?us-ascii?Q?4ZwQirB3Os1p5S5X8XKf64KkvEOYtE6Wf9EQldUzwk25UkoPvu/d52Fkfov7?= =?us-ascii?Q?oAFl1HvAvlLqsKzayBm4+BOspMPrkSwDaFMdwfDscp5ZHmX+CvYYURGV3rVb?= =?us-ascii?Q?bv8AqUNEiKQo5s/dqtomd/AWUGHtJ+Zg7tLQB9MIgRBvnbC5u9bwUUoBqIZd?= =?us-ascii?Q?uNr/it/zA5iBevcY8NI948XIS6RYDIJK52Jz/Z7bFZHkcfC5o099JQlYJEkt?= =?us-ascii?Q?zGSpWw1N4Hp4qPsupwdoHL0/XVsJPegKXz4VwkwjD2GXbwrot6DwoIz8YuB7?= =?us-ascii?Q?ke9WETnyOZJba28IofEkVR8t/K2bLLbfdoEGKFsgFbp6t4BLF2HIhmsPguoP?= =?us-ascii?Q?4xD5LwEs8lCaox+YMTX6M0MhOoS+Ofxshi5UUpnA82JDlnKDjBWh0cfTBFwE?= =?us-ascii?Q?7vCakOzaOWygPbGM3uTPh39mgJsWBpiwPA2uyoVg6/Fp+EWnOWTRTS7u5ozU?= =?us-ascii?Q?Nt1BPA9jfUnXu6xLbNjThe+JalQ3tBosOQrOhwC+1Q4u8cDxCR18yAJ4GL/O?= =?us-ascii?Q?+KsZrjwEtUK1iJJcy+YE+giM?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9bfece3d-5d02-41e3-6fd7-08d96d64059c X-MS-Exchange-CrossTenant-AuthSource: SN6PR12MB2718.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2021 16:17:40.9950 (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: HFxOqe8cieviF0BvGWMbe/DqgaZr7ualFiePPXLVJBB8J+R1C5NqYDjOLOiPfOqawnPk7Oj6C9uZvcXylrVEvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4415 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: Wm9NB8fWlFANrMPnpYSmXVqxx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1630513066; bh=P3UKosJe1gpTGszxH46Kc5r3LPd5v3FkS8e5PjEIYEc=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=WfVhYMZApiOVhmMP9039OM741Vrz5eGXdXfejPuJK5G33kmmZN0sjGpRWQx1YGcxFJE ux2AOB/u4MGDhPx+x+5cARb1iKbDCDR8nAykyzL+jeyE6CrY+xR3UNTg7pZfak2QTdHXy dFu5KrIFgnTi3nACvlbS83DytUEo/hcwKk4= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1630513068294100001 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: Michael Roth Cc: James Bottomley Cc: Min Xu Cc: Jiewen Yao Cc: Tom Lendacky Cc: Jordan Justen Cc: Ard Biesheuvel Cc: Erdem Aktas Signed-off-by: Brijesh Singh --- OvmfPkg/Include/Library/MemEncryptSevLib.h | 12 +++++++++ .../DxeMemEncryptSevLibInternal.c | 27 +++++++++++++++++++ .../PeiMemEncryptSevLibInternal.c | 27 +++++++++++++++++++ .../SecMemEncryptSevLibInternal.c | 19 +++++++++++++ 4 files changed, 85 insertions(+) diff --git a/OvmfPkg/Include/Library/MemEncryptSevLib.h b/OvmfPkg/Include/L= ibrary/MemEncryptSevLib.h index adc490e466ec..796de62ec2f8 100644 --- a/OvmfPkg/Include/Library/MemEncryptSevLib.h +++ b/OvmfPkg/Include/Library/MemEncryptSevLib.h @@ -47,6 +47,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 2816f859a0c4..057129723824 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 e2fd109d120f..b561f211f577 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 56d8f3f3183f..69852779e2ff 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 (#80085): https://edk2.groups.io/g/devel/message/80085 Mute This Topic: https://groups.io/mt/85306665/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-