From nobody Mon Feb 9 16:12:55 2026 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+78213+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+78213+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 1627384630913421.45557261160207; Tue, 27 Jul 2021 04:17:10 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id tWofYY1788612xLX6XRrv4BX; Tue, 27 Jul 2021 04:17:10 -0700 X-Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [40.107.220.80]) by mx.groups.io with SMTP id smtpd.web09.92.1627384629965813613 for ; Tue, 27 Jul 2021 04:17:10 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PErxNQeMW/SsR+sSEWeJaIo7PTR+8Js6Msh3jJ9ddvaikm9e/13rv5CmB54xo9ESqeMVb1d2OH7XWDVEBbdwmWewxxBEaU3pl1RYp2zDMIMXDF4o1Am9VZpJESGWdzn9GmNxCH2edC88uBycMCzowzudhaHovTrMcDAMjEK2RnB2SOdYY6YfgRJDU22xYaHtixDKyj0+bvN8qa5Hn9hJfzMjJ2CL626OTOvCHP0tifyRELHUtpwglSvCAiMOKdamI9eMIcUpB5hR4snkfeAsNtAYh6+cqFYE2kSGY+g92I0rj3vRp/tSHjdrJNB55WUMiYl8KjLgfqmJ8LK1ii7Iww== 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=Ml8LQyPeMDkywj8dELXO4qUiLAgOgi4ZqikMKRNNwZw=; b=ZWgWeQlguIL/RCNgWLf+qRK1HB0FWEYk5OtAnybxl+TEYfEpH9gB4RT6i+xzawMw/3aoUpuW0vI6SiqU5blJ1iuCzvMH7zeyogIodyTv8xpwXrxP54QJoA5m+lKBd/pmw7eXbw72b3h4s1REc2p1R8ZxHPBNDdIhSwXdIFnMGW6QPoSs4/tARrCLmWvPbukgfNjTx1z7O6X/zMHuDLeCfXxRX7FOe144PaNmT47hBZ6WIsypeL4px/UTEM/2ph3DDKsU/uzMj3kCDRiw3SnmqtLgr7AzR6stCVt+MO2PwVicTcm/DeQ5Yg6zPMkofc97OanO+XVnf7/eQ9KuuyMTHA== 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 SN1PR12MB2415.namprd12.prod.outlook.com (2603:10b6:802:26::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.26; Tue, 27 Jul 2021 11:17:08 +0000 X-Received: from SN6PR12MB2718.namprd12.prod.outlook.com ([fe80::a8a9:2aac:4fd1:88fa]) by SN6PR12MB2718.namprd12.prod.outlook.com ([fe80::a8a9:2aac:4fd1:88fa%3]) with mapi id 15.20.4352.031; Tue, 27 Jul 2021 11:17:08 +0000 From: "Brijesh Singh via groups.io" 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 3/3] OvmfPkg/ResetVector: add the macro to request guest termination Date: Tue, 27 Jul 2021 06:16:44 -0500 Message-ID: <20210727111644.26332-4-brijesh.singh@amd.com> In-Reply-To: <20210727111644.26332-1-brijesh.singh@amd.com> References: <20210727111644.26332-1-brijesh.singh@amd.com> X-ClientProxiedBy: SN7PR04CA0014.namprd04.prod.outlook.com (2603:10b6:806:f2::19) 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 SN7PR04CA0014.namprd04.prod.outlook.com (2603:10b6:806:f2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25 via Frontend Transport; Tue, 27 Jul 2021 11:17:07 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8c6ea6a4-45d8-4ea7-e250-08d950f0127d X-MS-TrafficTypeDiagnostic: SN1PR12MB2415: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: ew062k0fYB1wyF6A2LoK2dY+edwkGjBnaEwpUxoJPgErJ4hPGUECURSaXmitqa0gZu9C04K0Qsd05zimbb/9V61qwtISdk1wHr0zBhXLyNoLoZoYNoAFPjkMB3MrNOEbh/kdsZcEQcODpR3HV1tuCFAVf0XzR+gocssJrtTgIe2y/e2VY3BPoyEyNyL/CUwsZS7YVOukngM9qyubOeAF+giqRlTjwx+jiPoO1GGo2eHc8BKFy/gqC5ZSzxsRyLMD8W3BAQ/vNQvTb/TXVVvz+RvJaKISpkXBcDv2uH4gr9m189NxQN+hNAaK+j/GJIIjWJPDDPa7zGQrLTsDFQ1SXWEaQ9bpzYesIXaM491XACw9MuOLz+jIH6+JPQVUkXPCGoSUpxJpgkpfRC7aZSiJF9fkp1aiOOq0Dn637ealLpvc2v8lYu68p+v/uKA9vS/8Ii2j+d9kFdLfgj/TVc1fbtmX2sxAaOaZDv5kPr6h1icBENs8eRVRJP40LA2CejsACGEydXTjtSxTvOf/7RyxTKQn0av0r7fQDfnBFw/aPEGfQ7ZVK5ZxAXEaElI7bsCO8oRPVbwyDtGfq9d0DpWjx+SjYGi4bMVkCVSurFM0QKlSClUb3z6IpFpt1xxskP8BmVdhoJF8jsju+XiTRxtU1+9Lrc24NVDWyQCWW3PiYJxi3owNOpPS9w9f54iLyFMNIcd7G595qeEHvceLu5xrP5iioZRfl9NqSKLwyaIRnFb7fjkI76Q7IZ+V8nciXqCghkmTy0NnitXjkNW63krtm6Ry4bXXWckjgHlQVQtBoYA= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rO3lgURXa5hdomFaP9CqQQm4rhL+hp88ZstpP3Yyke/VXZ5nVFkoRUqM6l0s?= =?us-ascii?Q?4f3yJFfOUNmuvRjbClyqYsH0kdxGQuo10GTLDxvXgZUt2dZmtFURZv8+T7ZI?= =?us-ascii?Q?vpN0/DbBk+rOqOopkWSYkjc/MOlKQrqd5lk4LJGAM6x7nj57sTv/4oXyrgoX?= =?us-ascii?Q?mdHRc1sG+mPNxkxsRls5bhfUVPjMgT6duS8uy6hBb1Pm7psrs8vuQEk4HSMQ?= =?us-ascii?Q?jLPKdHfdeHbZC7dZQzA0Ztp/Vawt6HXYLwtqg6zSkMO0YstNOXyeazdfAS/0?= =?us-ascii?Q?jSuuE/CmPnUsrz03B/xjnNJ8TcG7dw7HHFLbxER+h0zTrV7vmbmLIT2QYAuV?= =?us-ascii?Q?aF7RAhTrft2SO9lBS0WWp0MIY9l3P1OMKnDs0OtjXgeCNAHVXuRQLUKwz8eS?= =?us-ascii?Q?LsNr6dnB0X9ve93mcPKZqUBfc39DjExUmdCdLQS0Rq9Tpvaw7ZsI1gTQOoCO?= =?us-ascii?Q?WKP2YTRU94ngF30bgDXmHEFg2XQzAHXqov70eKnAA7XFfxmKn9P55gl8aest?= =?us-ascii?Q?zgENrxhAKNlFNgbKe8VvzSjA9lZfICj7hYjZhuaHNAzHk/QDtQ/o8oyFMRWE?= =?us-ascii?Q?jBDMJjkBmRWaDsaUzMnOOpzUz7hytAgeOZAKFKPSZcAxqhfkGUtfItds+6p8?= =?us-ascii?Q?7jGMvdej3rWDcjw1Mck3c1S5CwbqkpkQkivP23NrtqeGNHAp3hYESSiXLFME?= =?us-ascii?Q?dSwiaI3VlAbd7BRV/B4SyPSAC/Og+xsitw9CT82fHatbap9e/V0jiYfxIDVJ?= =?us-ascii?Q?rkY/lgAdtbbQ/nwVVrXb3t/8xWJVH36on1DPCw/aqhWzcbhWzJZ8bNzLyLTD?= =?us-ascii?Q?QdbhBYUNL2JrDrpnC4ZomJIEAE+sycOifiHYBq2QkQ4HwKB5ugWfhNyyb3RZ?= =?us-ascii?Q?nnTks2lr/c0RxbN9Dsvu/+TNtWjl/946VOUuyEDwIbe5Zgq5ZhDj0wSfSCRB?= =?us-ascii?Q?6+FaiT7c4uCPa0T1OQoUhCqeAFEJFR9wDdVemL2BR5S841yr22nOV9a3NoYi?= =?us-ascii?Q?h5Q/HuNHRovRju3+aT6FxCoI3oz+3SnwCOom0DhfyZYMzeoARBeUMoWcH5cs?= =?us-ascii?Q?ltjuMUI2ZycRZ1mUeviQYe0+zmpuFpDAyx571IaLP7JJJ0EXYLYpFX0/a1al?= =?us-ascii?Q?U2m/lugweqocmzsyjHGax99wj2J3pFkyddyAhYZVSfxITfSLTJ2qyh7se4ip?= =?us-ascii?Q?N25wdNKjsMWcA1OmoRzr2TkwbYGzxMOo83U5p2YBfkpQWAq+oikK5AW4vddm?= =?us-ascii?Q?cOc44X0lmg51UpX8UpMS0+OuHBRmzStbiGdwBgl4GB46gaDcOXet3DqpJxzc?= =?us-ascii?Q?tU2yVkVeRcMc3Xg3rfJbXC25?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c6ea6a4-45d8-4ea7-e250-08d950f0127d X-MS-Exchange-CrossTenant-AuthSource: SN6PR12MB2718.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2021 11:17:08.3737 (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: mrlIwAnmZ3g0URxzXVmCYRqfZ7tQBpWNgGBOPvr/iRE+R1iemoBj6qoDz2zQYDbnzsvS6HPrNliwslNZL+WXfg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2415 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: ZFBM8xv5r8VRTim9bj6tm5xAx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1627384630; bh=PLocQ5e8paeQvwlHkFVnHYNPXW4BsH8Hr/3L93eiISU=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=QXH/2m8ZP13upDYQTXVYY4pjBFMBzZ5pvmmlr01X0yqIzIAVjKpIMELQcMKudEANVTe L+dIVgewPE+A/oNUWd03HTYU5d7f+7VVr6fzNhazAcbHBJzD9Ms8G9NCL0xGivue8CJto jQSmM7J+uIKG/6a73dIhf1kiWcvz6gPEZYY= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1627384632030100011 Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3275 The upcoming SEV-SNP support will need to make a few additional guest termination requests depending on the failure type. Let's move the logic to request the guest termination into a macro to keep the code readable. Cc: James Bottomley Cc: Min Xu Cc: Jiewen Yao Cc: Tom Lendacky Cc: Jordan Justen Cc: Ard Biesheuvel Cc: Laszlo Ersek Cc: Erdem Aktas Suggested-by: Laszlo Ersek Signed-off-by: Brijesh Singh --- OvmfPkg/ResetVector/Ia32/AmdSev.asm | 87 +++++++++++++++-------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/OvmfPkg/ResetVector/Ia32/AmdSev.asm b/OvmfPkg/ResetVector/Ia32= /AmdSev.asm index 2c478cda314b..c4c00056f9f3 100644 --- a/OvmfPkg/ResetVector/Ia32/AmdSev.asm +++ b/OvmfPkg/ResetVector/Ia32/AmdSev.asm @@ -39,6 +39,13 @@ BITS 32 %define SEV_GHCB_MSR 0xc0010130 %define SEV_STATUS_MSR 0xc0010131 =20 +; The #VC was not for CPUID +%define TERM_VC_NOT_CPUID 1 + +; The unexpected response code +%define TERM_UNEXPECTED_RESP_CODE 2 + + ; Macro is used to issue the MSR protocol based VMGEXIT. The caller is ; responsible to populate values in the EDX:EAX registers. After the vmmca= ll ; returns, it verifies that the response code matches with the expected @@ -74,6 +81,43 @@ BITS 32 jne SevEsUnexpectedRespTerminate %endmacro =20 +; Macro to terminate the guest using the VMGEXIT. +; arg 1: reason code +%macro TerminateVmgExit 1 + mov eax, %1 + ; + ; Use VMGEXIT to request termination. At this point the reason code is + ; located in EAX, so shift it left 16 bits to the proper location. + ; + ; EAX[11:0] =3D> 0x100 - request termination + ; EAX[15:12] =3D> 0x1 - OVMF + ; EAX[23:16] =3D> 0xXX - REASON CODE + ; + shl eax, 16 + or eax, 0x1100 + xor edx, edx + mov ecx, SEV_GHCB_MSR + wrmsr + ; + ; Issue VMGEXIT - NASM doesn't support the vmmcall instruction in 32-b= it + ; mode, so work around this by temporarily switching to 64-bit mode. + ; +BITS 64 + rep vmmcall +BITS 32 + + ; + ; We shouldn't come back from the VMGEXIT, but if we do, just loop. + ; +%%TerminateHlt: + hlt + jmp %%TerminateHlt +%endmacro + +; Terminate the guest due to unexpected response code. +SevEsUnexpectedRespTerminate: + TerminateVmgExit TERM_UNEXPECTED_RESP_CODE + ; Check if Secure Encrypted Virtualization (SEV) features are enabled. ; ; Register usage is tight in this routine, so multiple calls for the @@ -228,48 +272,7 @@ SevEsDisabled: ; =20 SevEsIdtNotCpuid: - ; - ; Use VMGEXIT to request termination. - ; 1 - #VC was not for CPUID - ; - mov eax, 1 - jmp SevEsIdtTerminate - -SevEsUnexpectedRespTerminate: - ; - ; Use VMGEXIT to request termination. - ; 2 - Unexpected Response is received - ; - mov eax, 2 - -SevEsIdtTerminate: - ; - ; Use VMGEXIT to request termination. At this point the reason code is - ; located in EAX, so shift it left 16 bits to the proper location. - ; - ; EAX[11:0] =3D> 0x100 - request termination - ; EAX[15:12] =3D> 0x1 - OVMF - ; EAX[23:16] =3D> 0xXX - REASON CODE - ; - shl eax, 16 - or eax, 0x1100 - xor edx, edx - mov ecx, SEV_GHCB_MSR - wrmsr - ; - ; Issue VMGEXIT - NASM doesn't support the vmmcall instruction in 32-b= it - ; mode, so work around this by temporarily switching to 64-bit mode. - ; -BITS 64 - rep vmmcall -BITS 32 - - ; - ; We shouldn't come back from the VMGEXIT, but if we do, just loop. - ; -SevEsIdtHlt: - hlt - jmp SevEsIdtHlt + TerminateVmgExit TERM_VC_NOT_CPUID iret =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 (#78213): https://edk2.groups.io/g/devel/message/78213 Mute This Topic: https://groups.io/mt/84479273/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-