public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20240329225835.400662-27-michael.roth@amd.com>

diff --git a/a/1.txt b/N1/1.txt
index 3b4e98c..fa26ec7 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -164,3 +164,460 @@ index 154a87a1eca9..7bd78e258569 100644
  #endif /* __UAPI_LINUX_SEV_GUEST_H_ */
 -- 
 2.25.1
+
+
+X-sender: <kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org>
+X-Receiver: <martin.weber@secunet.com> ORCPT=rfc822;martin.weber@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAJuYHy0vkvxLoOu7fW2WcxcPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAF4AAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249V2ViZXIgTWFydGluOTU1BQALABcAvgAAALMpUnVJ4+pPsL47FHo+lvtDTj1EQjIsQ049RGF0YWJhc2VzLENOPUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpLENOPUFkbWluaXN0cmF0aXZlIEdyb3VwcyxDTj1zZWN1bmV0LENOPU1pY3Jvc29mdCBFeGNoYW5nZSxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPXNlY3VuZXQsREM9ZGUFAA4AEQBACf3SYEkDT461FZzDv+B7BQAdAA8ADAAAAG1ieC1lc3Nlbi0wMQUAPAACAAAPADYAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0Lk1haWxSZWNpcGllbnQuRGlzcGxheU5hbWUPAA0AAABXZWJlciwgTWFydGluBQAMAAIAAAUAbAACAAAFAFgAFwBGAAAAm5gfLS+S/Eug67t9bZZzF0NOPVdlYmVyIE1hcnRpbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ==
+X-CreatedBy: MSExchange15
+X-HeloDomain: b.mx.secunet.com
+X-ExtendedProps: BQBjAAoAbw5rGbMv3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAAQAFCABAAAAGAAAAG1hcnRpbi53ZWJlckBzZWN1bmV0LmNvbQUABgACAAEFACkAAgABDwAJAAAAQ0lBdWRpdGVkAgABBQACAAcAAQAAAAUAAwAHAAAAAAAFAAUAAgABBQBiAAoAOQAAAM2KAAAFAGQADwADAAAASHVi
+X-Source: SMTP:Default MBX-ESSEN-01
+X-SourceIPAddress: 62.96.220.37
+X-EndOfInjectedXHeaders: 24756
+Received: from cas-essen-02.secunet.de (10.53.40.202) by
+ mbx-essen-01.secunet.de (10.53.40.197) with Microsoft SMTP Server
+ (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
+ 15.1.2507.35; Sat, 30 Mar 2024 00:06:10 +0100
+Received: from b.mx.secunet.com (62.96.220.37) by cas-essen-02.secunet.de
+ (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend
+ Transport; Sat, 30 Mar 2024 00:06:10 +0100
+Received: from localhost (localhost [127.0.0.1])
+	by b.mx.secunet.com (Postfix) with ESMTP id D1805202BD
+	for <martin.weber@secunet.com>; Sat, 30 Mar 2024 00:06:10 +0100 (CET)
+X-Virus-Scanned: by secunet
+X-Spam-Flag: NO
+X-Spam-Score: -5.15
+X-Spam-Level:
+X-Spam-Status: No, score=-5.15 tagged_above=-999 required=2.1
+	tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.099, DKIM_SIGNED=0.1,
+	DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,
+	HEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1,
+	RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]
+	autolearn=unavailable autolearn_force=no
+Authentication-Results: a.mx.secunet.com (amavisd-new);
+	dkim=pass (1024-bit key) header.d=amd.com
+Received: from b.mx.secunet.com ([127.0.0.1])
+	by localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)
+	with ESMTP id oAJd4B0w3R4K for <martin.weber@secunet.com>;
+	Sat, 30 Mar 2024 00:06:10 +0100 (CET)
+Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.199.223; helo=ny.mirrors.kernel.org; envelope-from=kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org; receiver=martin.weber@secunet.com 
+DKIM-Filter: OpenDKIM Filter v2.11.0 b.mx.secunet.com 03E3A200BB
+Authentication-Results: b.mx.secunet.com;
+	dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="zeCqVAyj"
+Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
+	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+	(No client certificate requested)
+	by b.mx.secunet.com (Postfix) with ESMTPS id 03E3A200BB
+	for <martin.weber@secunet.com>; Sat, 30 Mar 2024 00:06:10 +0100 (CET)
+Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])
+	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+	(No client certificate requested)
+	by ny.mirrors.kernel.org (Postfix) with ESMTPS id 2F61B1C212A9
+	for <martin.weber@secunet.com>; Fri, 29 Mar 2024 23:06:09 +0000 (UTC)
+Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
+	by smtp.subspace.kernel.org (Postfix) with ESMTP id 1806913F012;
+	Fri, 29 Mar 2024 23:05:45 +0000 (UTC)
+Authentication-Results: smtp.subspace.kernel.org;
+	dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="zeCqVAyj"
+X-Original-To: kvm@vger.kernel.org
+Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2070.outbound.protection.outlook.com [40.107.100.70])
+	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+	(No client certificate requested)
+	by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95E9C13E6B9;
+	Fri, 29 Mar 2024 23:05:42 +0000 (UTC)
+Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.70
+ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
+	t=1711753544; cv=fail; b=BlqqvbGwutAw8URHIgMH30kvA5QpTzs/EidijFPe0fjFy5pMt6gU3Of58WmRgtLC5HdAFWEnpY91icLlr7eYlVXCT6T10fN7aOeDR+taYs5wJQZoRJMsxCRbI3XvUrIl79N5OhELjsPxchrIPeXAKecY7/mL+08bVpQeDnTw0Tg=
+ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
+	s=arc-20240116; t=1711753544; c=relaxed/simple;
+	bh=WgjSuePq/wBpCSmmzUyRKNJcA65Zw60gyFDJt37grOw=;
+	h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:
+	 MIME-Version:Content-Type; b=tadVHjYp3xUeM32EvMaNxfyZwQQAKHmOqhQQ1XMBg9kHp+gJAurvOy+zAHBwq9zTbGuP/KUoD7IDeUX0jGzYICO/4kQRtEwkvcoBPNOkgirp3exZt3Mu9Ku4Nua7UCArN/3crAiO/9CE+CnJguzPNZzA3jmWHwQHpZ5TSvlUC9c=
+ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=zeCqVAyj; arc=fail smtp.client-ip=40.107.100.70
+Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com
+Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com
+ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
+ b=LTdfnSa1VhLOPKJevSaKvpUEM+ibK4JR/D4A9skjpRANTv9ZzuAloP8//3oASD3IdNwrh+OSRxi+9Iwq7hxH6bm72GCC8DmsKuP2rDNCei5s/4ioa7Mt0Rgv1Y/9zANhJ5bTNBTPlIJK6vKpaQdARBJ53qfdQwGiJ48PzqDufYciLrHxwSuTMItPHCXugbz1V3S9i0NMupUEJi2oKI/eevatNkz7jMPkOWb7myAeNRT+nOWgFlh4B1G5PybIF2KIVcmpb5vavCiFv2nXckLeBWe3CjlMqZJgIR/2tMwEHDDQjFAfKr1bkg0JIiZoKD5UYARcmLysUNDUnBW6ZIkQcA==
+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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
+ bh=nBu38l4H29f7TDioCJxMHGn5H0K24coARDh1fYxp94g=;
+ b=Tm4mgAX85xml0c02ymLsi9tk5C41IzMLRHOGWwLnQtBjp1JDzL/nwJeVbnGSnlpvk1POZGeLGRF7uiH/vidV2sDKC96d1S85+P55F8F6RGYjLbU4K7b/V5SjUD5EXMBtRAVnjp0PDyxJrRMJyeAM6BYi8RyT7/DfjMT8G35q9tTlJjCWFv6owwahTlfvcX2HoILzjyrKqGAeDieGHKbYsmZOPTPErMVnPAJ8B7I8++OtLIDDvWXeDmrmLRbHlIemWx0QFJKcVf8k3aQiK3tidiyMuCzDuSs0Ua3O7Upae61Gh50WMtQDWQCbIiKYt0jiqt4Exm8sSBJz6uwIWduLZQ==
+ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
+ 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com;
+ dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
+ header.from=amd.com; dkim=none (message not signed); arc=none (0)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
+ h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
+ bh=nBu38l4H29f7TDioCJxMHGn5H0K24coARDh1fYxp94g=;
+ b=zeCqVAyjfRxDQher1AZ5EaOKxM5xY4BftFJ208BZWqiiAjXdof/d4iUhbP36IlOA01+A1BhxmrUQU0P14395af+BJG1LpGQu/iQfEYn8iwN6tfjzVCRINDzlsxLRvhiEfBgRdVKJmno9WURcApRABBx4LkwYntw5GkcQBk5RGlA=
+Received: from DS0PR17CA0021.namprd17.prod.outlook.com (2603:10b6:8:191::16)
+ by DS7PR12MB8346.namprd12.prod.outlook.com (2603:10b6:8:e5::13) with
+ Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar
+ 2024 23:05:39 +0000
+Received: from DS1PEPF00017091.namprd03.prod.outlook.com
+ (2603:10b6:8:191:cafe::70) by DS0PR17CA0021.outlook.office365.com
+ (2603:10b6:8:191::16) with Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.41 via Frontend
+ Transport; Fri, 29 Mar 2024 23:05:39 +0000
+X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
+ smtp.mailfrom=amd.com; dkim=none (message not signed)
+ header.d=none;dmarc=pass action=none header.from=amd.com;
+Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
+ 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
+ client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
+Received: from SATLEXMB04.amd.com (165.204.84.17) by
+ DS1PEPF00017091.mail.protection.outlook.com (10.167.17.133) with Microsoft
+ SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
+ 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 23:05:39 +0000
+Received: from localhost (10.180.168.240) by SATLEXMB04.amd.com
+ (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 29 Mar
+ 2024 18:05:39 -0500
+From: Michael Roth <michael.roth@amd.com>
+To: <kvm@vger.kernel.org>
+CC: <linux-coco@lists.linux.dev>, <linux-mm@kvack.org>,
+	<linux-crypto@vger.kernel.org>, <x86@kernel.org>,
+	<linux-kernel@vger.kernel.org>, <tglx@linutronix.de>, <mingo@redhat.com>,
+	<jroedel@suse.de>, <thomas.lendacky@amd.com>, <hpa@zytor.com>,
+	<ardb@kernel.org>, <pbonzini@redhat.com>, <seanjc@google.com>,
+	<vkuznets@redhat.com>, <jmattson@google.com>, <luto@kernel.org>,
+	<dave.hansen@linux.intel.com>, <slp@redhat.com>, <pgonda@google.com>,
+	<peterz@infradead.org>, <srinivas.pandruvada@linux.intel.com>,
+	<rientjes@google.com>, <dovmurik@linux.ibm.com>, <tobin@ibm.com>,
+	<bp@alien8.de>, <vbabka@suse.cz>, <kirill@shutemov.name>,
+	<ak@linux.intel.com>, <tony.luck@intel.com>,
+	<sathyanarayanan.kuppuswamy@linux.intel.com>, <alpergun@google.com>,
+	<jarkko@kernel.org>, <ashish.kalra@amd.com>, <nikunj.dadhania@amd.com>,
+	<pankaj.gupta@amd.com>, <liam.merwick@oracle.com>, Brijesh Singh
+	<brijesh.singh@amd.com>, Alexey Kardashevskiy <aik@amd.com>
+Subject: [PATCH v12 26/29] KVM: SEV: Provide support for SNP_GUEST_REQUEST NAE event
+Date: Fri, 29 Mar 2024 17:58:32 -0500
+Message-ID: <20240329225835.400662-27-michael.roth@amd.com>
+X-Mailer: git-send-email 2.25.1
+In-Reply-To: <20240329225835.400662-1-michael.roth@amd.com>
+References: <20240329225835.400662-1-michael.roth@amd.com>
+Precedence: bulk
+X-Mailing-List: kvm@vger.kernel.org
+List-Id: <kvm.vger.kernel.org>
+List-Subscribe: <mailto:kvm+subscribe@vger.kernel.org>
+List-Unsubscribe: <mailto:kvm+unsubscribe@vger.kernel.org>
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain
+X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
+ (10.181.40.145)
+X-EOPAttributedMessage: 0
+X-MS-PublicTrafficType: Email
+X-MS-TrafficTypeDiagnostic: DS1PEPF00017091:EE_|DS7PR12MB8346:EE_
+X-MS-Office365-Filtering-Correlation-Id: 29793531-e2ca-491c-1a60-08dc5044c08d
+X-MS-Exchange-SenderADCheck: 1
+X-MS-Exchange-AntiSpam-Relay: 0
+X-Microsoft-Antispam: BCL:0;
+X-Microsoft-Antispam-Message-Info: wFSuaKTvRQfOtdiiZggI/1E9juK+oJc2TRSGXFVjNQH6K1wlm9lAuRi2AABfWovQilmwMVXe1l6T4YxvGuuFifLSCpmtPQOHKjm6x+FajgbzHsEgtMX93cx5A0nttMe/qTI13yLMvcscLwhbPBIdodHYHhzKupmGusDKEUfIkuXqgoS46ONELQ8DpRVI7AvlT51VRqxW6w6SmGYUURqbArpcwis5lJT+cTvGNv8CqPtGPlIy7qfPPfuhv1nCIO9qPPfvEGlgl/Ec+LypJxBtqOEfg2pBgc02cbfF15t+YO5/ue5hwWk2QeyLY/PtzpC6Bue+8ZYMaLgW7iEG237ohWzAvDkoO5JuB0YjPr9df90ZKqzIesdCLnSdeqdDO9BO09jMyX5hg+vOmQmDRLp5MGJZ0CLEXxryinRjW60G57b7aoliHs448u+dW9OMhumg4geX6Ys+dNVlqiUHttX7q1i79Zld8UWIVQxAemTDG5c93reIn0O1bo2r+FTQzyNA60sU19YLtjGrE2CeHrS8UBmvPCHb+dNs/bwEdkpHaysGHJoMSSvphTWHY/GTjqyl61EyVKEXMAdKGOoJEKagRrWl4eg4UKhIYmIVTQyAvx7i9Y2qCbTYlvo+hUPDKlFswU7rnoRM5q0SJo084BAULraS65dFTt/wwZaFs/sG/Pn1sk4sqy3xCY8HS+L4Ka6jAqFvX2LdWGEJVaix3MvIE7CGKTb/0UI+9e3423/5muTUjwuXnqr/9ldh5/UD03xC
+X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(36860700004)(82310400014)(7416005)(376005)(1800799015);DIR:OUT;SFP:1101;
+X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 23:05:39.7301
+ (UTC)
+X-MS-Exchange-CrossTenant-Network-Message-Id: 29793531-e2ca-491c-1a60-08dc5044c08d
+X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
+X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
+X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017091.namprd03.prod.outlook.com
+X-MS-Exchange-CrossTenant-AuthAs: Anonymous
+X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
+X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8346
+Return-Path: kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org
+X-MS-Exchange-Organization-OriginalArrivalTime: 29 Mar 2024 23:06:10.8900
+ (UTC)
+X-MS-Exchange-Organization-Network-Message-Id: e82b8a82-3a8d-482a-ba73-08dc5044d311
+X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.37
+X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202
+X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de
+X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-essen-01.secunet.de:TOTAL-HUB=0.189|SMR=0.131(SMRDE=0.002|SMRC=0.128(SMRCL=0.101|X-SMRCR=0.128))|CAT=0.057(CATRESL=0.024
+ (CATRESLP2R=0.004)|CATORES=0.030(CATRS=0.029(CATRS-Index Routing
+ Agent=0.028)));2024-03-29T23:06:11.116Z
+X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-01.secunet.de
+X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de
+X-MS-Exchange-Organization-AuthAs: Anonymous
+X-MS-Exchange-Organization-FromEntityHeader: Internet
+X-MS-Exchange-Organization-OriginalSize: 17547
+X-MS-Exchange-Organization-HygienePolicy: Standard
+X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=8.027|SMR=0.008(SMRPI=0.005(SMRPI-FrontendProxyAgent=0.005))|SMS=0.027
+X-MS-Exchange-Organization-Recipient-Limit-Verified: True
+X-MS-Exchange-Organization-TotalRecipientCount: 1
+X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b
+X-MS-Exchange-Forest-RulesExecuted: mbx-essen-01
+X-MS-Exchange-Organization-RulesExecuted: mbx-essen-01
+X-MS-Exchange-Forest-IndexAgent-0: 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
+ CXtFTvkWiHkKrizqfEiRKh7zvdNkABXsBM9SGU1EvohLMzwE2WGBUs
+ 6jDLQImd7x1Un4hYqQS6FrcukzKqsncguqK/GeJg2ObgXPQyiTDEKR
+ zccwpKUXXJrUcpM0yZMiTS4JaRmS/5DgjVzghUZFPUV7MyLJs6FTOU
+ r1EiSwCk0gI3o1mTGFuYEMIrHV4iQxxHyZEHuxbFPYpJEh21NKkpkw
+ VZ7JzBSpkpIhT0hdIZIZFVpJik26n4Blhug8FSMolOecJzJJzT8nLQ
+ XZPMPsvUOWzsZTFLQUEMbHaU5BdPhJWh5JbCphPGIeZ0hFWR4uoUfj
+ k19siVcfiSqMFMIQOGUhXzj1cug0L8V8eZFFsU8yycBhgfAlgutBGN
+ ynw0jGOsZd8BTQkWvgRZEUzciIFDhcMfTywk7RUaejLBWUmcxIfLne
+ YXBi/sbq/WWEEjj+LId9OM+LJYd7eaFluMCCoBeG4JWKpPyHYVv4C5
+ nEh5yR7vqY3z7idY1BmSIo4NAsj2vaXOxjKXYYyRcEXb6A0E3QWcaz
+ 8WmCLp3KT9BhQfY8h+Nj9ExJxDort0xFyGRHKM9kXJ6GMr8gmVM4ZX
+ 0Wnr855a+wl4jFYQkiasMUIOTDESJl9qApIo2eMkiksU2k09PGiegA
+ pVjIfjLJKc/kJEzZ+2ACHSmKXaJLi70vYrmXV5/FxT6KLUH/o99Cco
+ tS4swPYxrhTpWFHDND2DY+aQsJpZJhJSE/bIC8NvmXTzXCU9kSC3Qd
+ As4HbP6lGbXAN1KVQWZCapXlQB49TZCER9z4L4ZKtSgPQTGBPI+t5t
+ RyfGm4xssygpN5dfIlDZDhQ4SqTvFAU7CyeP0/WzVSo40lAAABCq8E
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTE2Ij8+DQ
+ o8RW1haWxTZXQ+DQogIDxWZXJzaW9uPjE1LjAuMC4wPC9WZXJzaW9u
+ Pg0KICA8RW1haWxzPg0KICAgIDxFbWFpbCBTdGFydEluZGV4PSIyMS
+ I+DQogICAgICA8RW1haWxTdHJpbmc+YnJpamVzaC5zaW5naEBhbWQu
+ Y29tPC9FbWFpbFN0cmluZz4NCiAgICA8L0VtYWlsPg0KICAgIDxFbW
+ FpbCBTdGFydEluZGV4PSI3MDEiIFBvc2l0aW9uPSJPdGhlciI+DQog
+ ICAgICA8RW1haWxTdHJpbmc+YWlrQGFtZC5jb208L0VtYWlsU3RyaW
+ 5nPg0KICAgIDwvRW1haWw+DQogICAgPEVtYWlsIFN0YXJ0SW5kZXg9
+ Ijg0OSIgUG9zaXRpb249Ik90aGVyIj4NCiAgICAgIDxFbWFpbFN0cm
+ luZz5hc2hpc2gua2FscmFAYW1kLmNvbTwvRW1haWxTdHJpbmc+DQog
+ ICAgPC9FbWFpbD4NCiAgICA8RW1haWwgU3RhcnRJbmRleD0iMTA0NC
+ IgUG9zaXRpb249Ik90aGVyIj4NCiAgICAgIDxFbWFpbFN0cmluZz5t
+ aWNoYWVsLnJvdGhAYW1kLmNvbTwvRW1haWxTdHJpbmc+DQogICAgPC
+ 9FbWFpbD4NCiAgPC9FbWFpbHM+DQo8L0VtYWlsU2V0PgEOzwFSZXRy
+ aWV2ZXJPcGVyYXRvciwxMCwwO1JldHJpZXZlck9wZXJhdG9yLDExLD
+ E7UG9zdERvY1BhcnNlck9wZXJhdG9yLDEwLDA7UG9zdERvY1BhcnNl
+ ck9wZXJhdG9yLDExLDA7UG9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY0
+ 9wZXJhdG9yLDEwLDM7UG9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09w
+ ZXJhdG9yLDExLDA7VHJhbnNwb3J0V3JpdGVyUHJvZHVjZXIsMjAsMT Q=
+X-MS-Exchange-Forest-IndexAgent: 1 4091
+X-MS-Exchange-Forest-EmailMessageHash: E4020154
+X-MS-Exchange-Forest-Language: en
+X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent
+
+From: Brijesh Singh <brijesh.singh@amd.com>
+
+Version 2 of GHCB specification added support for the SNP Guest Request
+Message NAE event. The event allows for an SEV-SNP guest to make
+requests to the SEV-SNP firmware through hypervisor using the
+SNP_GUEST_REQUEST API defined in the SEV-SNP firmware specification.
+
+This is used by guests primarily to request attestation reports from
+firmware. There are other request types are available as well, but the
+specifics of what guest requests are being made are opaque to the
+hypervisor, which only serves as a proxy for the guest requests and
+firmware responses.
+
+Implement handling for these events.
+
+Co-developed-by: Alexey Kardashevskiy <aik@amd.com>
+Signed-off-by: Alexey Kardashevskiy <aik@amd.com>
+Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
+Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
+[mdr: ensure FW command failures are indicated to guest, drop extended
+ request handling to be re-written as separate patch, massage commit]
+Signed-off-by: Michael Roth <michael.roth@amd.com>
+---
+ arch/x86/kvm/svm/sev.c         | 83 ++++++++++++++++++++++++++++++++++
+ include/uapi/linux/sev-guest.h |  9 ++++
+ 2 files changed, 92 insertions(+)
+
+diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
+index 658116537f3f..f56f04553e81 100644
+--- a/arch/x86/kvm/svm/sev.c
++++ b/arch/x86/kvm/svm/sev.c
+@@ -19,6 +19,7 @@
+ #include <linux/misc_cgroup.h>
+ #include <linux/processor.h>
+ #include <linux/trace_events.h>
++#include <uapi/linux/sev-guest.h>
+ 
+ #include <asm/pkru.h>
+ #include <asm/trapnr.h>
+@@ -3223,6 +3224,7 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm)
+ 	case SVM_VMGEXIT_HV_FEATURES:
+ 	case SVM_VMGEXIT_PSC:
+ 	case SVM_VMGEXIT_TERM_REQUEST:
++	case SVM_VMGEXIT_GUEST_REQUEST:
+ 		break;
+ 	default:
+ 		reason = GHCB_ERR_INVALID_EVENT;
+@@ -3646,6 +3648,83 @@ static int sev_snp_ap_creation(struct vcpu_svm *svm)
+ 	return ret;
+ }
+ 
++static bool snp_setup_guest_buf(struct kvm *kvm, struct sev_data_snp_guest_request *data,
++				gpa_t req_gpa, gpa_t resp_gpa)
++{
++	struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
++	kvm_pfn_t req_pfn, resp_pfn;
++
++	if (!IS_ALIGNED(req_gpa, PAGE_SIZE) || !IS_ALIGNED(resp_gpa, PAGE_SIZE))
++		return false;
++
++	req_pfn = gfn_to_pfn(kvm, gpa_to_gfn(req_gpa));
++	if (is_error_noslot_pfn(req_pfn))
++		return false;
++
++	resp_pfn = gfn_to_pfn(kvm, gpa_to_gfn(resp_gpa));
++	if (is_error_noslot_pfn(resp_pfn))
++		return false;
++
++	if (rmp_make_private(resp_pfn, 0, PG_LEVEL_4K, 0, true))
++		return false;
++
++	data->gctx_paddr = __psp_pa(sev->snp_context);
++	data->req_paddr = __sme_set(req_pfn << PAGE_SHIFT);
++	data->res_paddr = __sme_set(resp_pfn << PAGE_SHIFT);
++
++	return true;
++}
++
++static bool snp_cleanup_guest_buf(struct sev_data_snp_guest_request *data)
++{
++	u64 pfn = __sme_clr(data->res_paddr) >> PAGE_SHIFT;
++
++	if (snp_page_reclaim(pfn))
++		return false;
++
++	if (rmp_make_shared(pfn, PG_LEVEL_4K))
++		return false;
++
++	return true;
++}
++
++static bool __snp_handle_guest_req(struct kvm *kvm, gpa_t req_gpa, gpa_t resp_gpa,
++				   sev_ret_code *fw_err)
++{
++	struct sev_data_snp_guest_request data = {0};
++	struct kvm_sev_info *sev;
++	bool ret = true;
++
++	if (!sev_snp_guest(kvm))
++		return false;
++
++	sev = &to_kvm_svm(kvm)->sev_info;
++
++	if (!snp_setup_guest_buf(kvm, &data, req_gpa, resp_gpa))
++		return false;
++
++	if (sev_issue_cmd(kvm, SEV_CMD_SNP_GUEST_REQUEST, &data, fw_err))
++		ret = false;
++
++	if (!snp_cleanup_guest_buf(&data))
++		ret = false;
++
++	return ret;
++}
++
++static void snp_handle_guest_req(struct vcpu_svm *svm, gpa_t req_gpa, gpa_t resp_gpa)
++{
++	struct kvm_vcpu *vcpu = &svm->vcpu;
++	struct kvm *kvm = vcpu->kvm;
++	sev_ret_code fw_err = 0;
++	int vmm_ret = 0;
++
++	if (!__snp_handle_guest_req(kvm, req_gpa, resp_gpa, &fw_err))
++		vmm_ret = SNP_GUEST_VMM_ERR_GENERIC;
++
++	ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, SNP_GUEST_ERR(vmm_ret, fw_err));
++}
++
+ static int sev_handle_vmgexit_msr_protocol(struct vcpu_svm *svm)
+ {
+ 	struct vmcb_control_area *control = &svm->vmcb->control;
+@@ -3906,6 +3985,10 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu)
+ 		vcpu->run->system_event.ndata = 1;
+ 		vcpu->run->system_event.data[0] = control->ghcb_gpa;
+ 		break;
++	case SVM_VMGEXIT_GUEST_REQUEST:
++		snp_handle_guest_req(svm, control->exit_info_1, control->exit_info_2);
++		ret = 1;
++		break;
+ 	case SVM_VMGEXIT_UNSUPPORTED_EVENT:
+ 		vcpu_unimpl(vcpu,
+ 			    "vmgexit: unsupported event - exit_info_1=%#llx, exit_info_2=%#llx\n",
+diff --git a/include/uapi/linux/sev-guest.h b/include/uapi/linux/sev-guest.h
+index 154a87a1eca9..7bd78e258569 100644
+--- a/include/uapi/linux/sev-guest.h
++++ b/include/uapi/linux/sev-guest.h
+@@ -89,8 +89,17 @@ struct snp_ext_report_req {
+ #define SNP_GUEST_FW_ERR_MASK		GENMASK_ULL(31, 0)
+ #define SNP_GUEST_VMM_ERR_SHIFT		32
+ #define SNP_GUEST_VMM_ERR(x)		(((u64)x) << SNP_GUEST_VMM_ERR_SHIFT)
++#define SNP_GUEST_FW_ERR(x)		((x) & SNP_GUEST_FW_ERR_MASK)
++#define SNP_GUEST_ERR(vmm_err, fw_err)	(SNP_GUEST_VMM_ERR(vmm_err) | \
++					 SNP_GUEST_FW_ERR(fw_err))
+ 
++/*
++ * The GHCB spec only formally defines INVALID_LEN/BUSY VMM errors, but define
++ * a GENERIC error code such that it won't ever conflict with GHCB-defined
++ * errors if any get added in the future.
++ */
+ #define SNP_GUEST_VMM_ERR_INVALID_LEN	1
+ #define SNP_GUEST_VMM_ERR_BUSY		2
++#define SNP_GUEST_VMM_ERR_GENERIC	BIT(31)
+ 
+ #endif /* __UAPI_LINUX_SEV_GUEST_H_ */
+-- 
+2.25.1
diff --git a/a/content_digest b/N1/content_digest
index 272490d..d2bd252 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -208,6 +208,463 @@
  " \n"
  " #endif /* __UAPI_LINUX_SEV_GUEST_H_ */\n"
  "-- \n"
+ "2.25.1\n"
+ "\n"
+ "\n"
+ "X-sender: <kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org>\n"
+ "X-Receiver: <martin.weber@secunet.com> ORCPT=rfc822;martin.weber@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAJuYHy0vkvxLoOu7fW2WcxcPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAF4AAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249V2ViZXIgTWFydGluOTU1BQALABcAvgAAALMpUnVJ4+pPsL47FHo+lvtDTj1EQjIsQ049RGF0YWJhc2VzLENOPUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpLENOPUFkbWluaXN0cmF0aXZlIEdyb3VwcyxDTj1zZWN1bmV0LENOPU1pY3Jvc29mdCBFeGNoYW5nZSxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPXNlY3VuZXQsREM9ZGUFAA4AEQBACf3SYEkDT461FZzDv+B7BQAdAA8ADAAAAG1ieC1lc3Nlbi0wMQUAPAACAAAPADYAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0Lk1haWxSZWNpcGllbnQuRGlzcGxheU5hbWUPAA0AAABXZWJlciwgTWFydGluBQAMAAIAAAUAbAACAAAFAFgAFwBGAAAAm5gfLS+S/Eug67t9bZZzF0NOPVdlYmVyIE1hcnRpbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ==\n"
+ "X-CreatedBy: MSExchange15\n"
+ "X-HeloDomain: b.mx.secunet.com\n"
+ "X-ExtendedProps: BQBjAAoAbw5rGbMv3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAAQAFCABAAAAGAAAAG1hcnRpbi53ZWJlckBzZWN1bmV0LmNvbQUABgACAAEFACkAAgABDwAJAAAAQ0lBdWRpdGVkAgABBQACAAcAAQAAAAUAAwAHAAAAAAAFAAUAAgABBQBiAAoAOQAAAM2KAAAFAGQADwADAAAASHVi\n"
+ "X-Source: SMTP:Default MBX-ESSEN-01\n"
+ "X-SourceIPAddress: 62.96.220.37\n"
+ "X-EndOfInjectedXHeaders: 24756\n"
+ "Received: from cas-essen-02.secunet.de (10.53.40.202) by\n"
+ " mbx-essen-01.secunet.de (10.53.40.197) with Microsoft SMTP Server\n"
+ " (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n"
+ " 15.1.2507.35; Sat, 30 Mar 2024 00:06:10 +0100\n"
+ "Received: from b.mx.secunet.com (62.96.220.37) by cas-essen-02.secunet.de\n"
+ " (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,\n"
+ " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend\n"
+ " Transport; Sat, 30 Mar 2024 00:06:10 +0100\n"
+ "Received: from localhost (localhost [127.0.0.1])\n"
+ "\tby b.mx.secunet.com (Postfix) with ESMTP id D1805202BD\n"
+ "\tfor <martin.weber@secunet.com>; Sat, 30 Mar 2024 00:06:10 +0100 (CET)\n"
+ "X-Virus-Scanned: by secunet\n"
+ "X-Spam-Flag: NO\n"
+ "X-Spam-Score: -5.15\n"
+ "X-Spam-Level:\n"
+ "X-Spam-Status: No, score=-5.15 tagged_above=-999 required=2.1\n"
+ "\ttests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.099, DKIM_SIGNED=0.1,\n"
+ "\tDKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\n"
+ "\tHEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1,\n"
+ "\tRCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]\n"
+ "\tautolearn=unavailable autolearn_force=no\n"
+ "Authentication-Results: a.mx.secunet.com (amavisd-new);\n"
+ "\tdkim=pass (1024-bit key) header.d=amd.com\n"
+ "Received: from b.mx.secunet.com ([127.0.0.1])\n"
+ "\tby localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)\n"
+ "\twith ESMTP id oAJd4B0w3R4K for <martin.weber@secunet.com>;\n"
+ "\tSat, 30 Mar 2024 00:06:10 +0100 (CET)\n"
+ "Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.199.223; helo=ny.mirrors.kernel.org; envelope-from=kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org; receiver=martin.weber@secunet.com \n"
+ "DKIM-Filter: OpenDKIM Filter v2.11.0 b.mx.secunet.com 03E3A200BB\n"
+ "Authentication-Results: b.mx.secunet.com;\n"
+ "\tdkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=\"zeCqVAyj\"\n"
+ "Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])\n"
+ "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n"
+ "\t(No client certificate requested)\n"
+ "\tby b.mx.secunet.com (Postfix) with ESMTPS id 03E3A200BB\n"
+ "\tfor <martin.weber@secunet.com>; Sat, 30 Mar 2024 00:06:10 +0100 (CET)\n"
+ "Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])\n"
+ "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n"
+ "\t(No client certificate requested)\n"
+ "\tby ny.mirrors.kernel.org (Postfix) with ESMTPS id 2F61B1C212A9\n"
+ "\tfor <martin.weber@secunet.com>; Fri, 29 Mar 2024 23:06:09 +0000 (UTC)\n"
+ "Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])\n"
+ "\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 1806913F012;\n"
+ "\tFri, 29 Mar 2024 23:05:45 +0000 (UTC)\n"
+ "Authentication-Results: smtp.subspace.kernel.org;\n"
+ "\tdkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=\"zeCqVAyj\"\n"
+ "X-Original-To: kvm@vger.kernel.org\n"
+ "Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2070.outbound.protection.outlook.com [40.107.100.70])\n"
+ "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n"
+ "\t(No client certificate requested)\n"
+ "\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 95E9C13E6B9;\n"
+ "\tFri, 29 Mar 2024 23:05:42 +0000 (UTC)\n"
+ "Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.70\n"
+ "ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n"
+ "\tt=1711753544; cv=fail; b=BlqqvbGwutAw8URHIgMH30kvA5QpTzs/EidijFPe0fjFy5pMt6gU3Of58WmRgtLC5HdAFWEnpY91icLlr7eYlVXCT6T10fN7aOeDR+taYs5wJQZoRJMsxCRbI3XvUrIl79N5OhELjsPxchrIPeXAKecY7/mL+08bVpQeDnTw0Tg=\n"
+ "ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;\n"
+ "\ts=arc-20240116; t=1711753544; c=relaxed/simple;\n"
+ "\tbh=WgjSuePq/wBpCSmmzUyRKNJcA65Zw60gyFDJt37grOw=;\n"
+ "\th=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:\n"
+ "\t MIME-Version:Content-Type; b=tadVHjYp3xUeM32EvMaNxfyZwQQAKHmOqhQQ1XMBg9kHp+gJAurvOy+zAHBwq9zTbGuP/KUoD7IDeUX0jGzYICO/4kQRtEwkvcoBPNOkgirp3exZt3Mu9Ku4Nua7UCArN/3crAiO/9CE+CnJguzPNZzA3jmWHwQHpZ5TSvlUC9c=\n"
+ "ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=zeCqVAyj; arc=fail smtp.client-ip=40.107.100.70\n"
+ "Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com\n"
+ "Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com\n"
+ "ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n"
+ " b=LTdfnSa1VhLOPKJevSaKvpUEM+ibK4JR/D4A9skjpRANTv9ZzuAloP8//3oASD3IdNwrh+OSRxi+9Iwq7hxH6bm72GCC8DmsKuP2rDNCei5s/4ioa7Mt0Rgv1Y/9zANhJ5bTNBTPlIJK6vKpaQdARBJ53qfdQwGiJ48PzqDufYciLrHxwSuTMItPHCXugbz1V3S9i0NMupUEJi2oKI/eevatNkz7jMPkOWb7myAeNRT+nOWgFlh4B1G5PybIF2KIVcmpb5vavCiFv2nXckLeBWe3CjlMqZJgIR/2tMwEHDDQjFAfKr1bkg0JIiZoKD5UYARcmLysUNDUnBW6ZIkQcA==\n"
+ "ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n"
+ " s=arcselector9901;\n"
+ " h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n"
+ " bh=nBu38l4H29f7TDioCJxMHGn5H0K24coARDh1fYxp94g=;\n"
+ " b=Tm4mgAX85xml0c02ymLsi9tk5C41IzMLRHOGWwLnQtBjp1JDzL/nwJeVbnGSnlpvk1POZGeLGRF7uiH/vidV2sDKC96d1S85+P55F8F6RGYjLbU4K7b/V5SjUD5EXMBtRAVnjp0PDyxJrRMJyeAM6BYi8RyT7/DfjMT8G35q9tTlJjCWFv6owwahTlfvcX2HoILzjyrKqGAeDieGHKbYsmZOPTPErMVnPAJ8B7I8++OtLIDDvWXeDmrmLRbHlIemWx0QFJKcVf8k3aQiK3tidiyMuCzDuSs0Ua3O7Upae61Gh50WMtQDWQCbIiKYt0jiqt4Exm8sSBJz6uwIWduLZQ==\n"
+ "ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is\n"
+ " 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com;\n"
+ " dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n"
+ " header.from=amd.com; dkim=none (message not signed); arc=none (0)\n"
+ "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n"
+ " h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n"
+ " bh=nBu38l4H29f7TDioCJxMHGn5H0K24coARDh1fYxp94g=;\n"
+ " b=zeCqVAyjfRxDQher1AZ5EaOKxM5xY4BftFJ208BZWqiiAjXdof/d4iUhbP36IlOA01+A1BhxmrUQU0P14395af+BJG1LpGQu/iQfEYn8iwN6tfjzVCRINDzlsxLRvhiEfBgRdVKJmno9WURcApRABBx4LkwYntw5GkcQBk5RGlA=\n"
+ "Received: from DS0PR17CA0021.namprd17.prod.outlook.com (2603:10b6:8:191::16)\n"
+ " by DS7PR12MB8346.namprd12.prod.outlook.com (2603:10b6:8:e5::13) with\n"
+ " Microsoft SMTP Server (version=TLS1_2,\n"
+ " cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar\n"
+ " 2024 23:05:39 +0000\n"
+ "Received: from DS1PEPF00017091.namprd03.prod.outlook.com\n"
+ " (2603:10b6:8:191:cafe::70) by DS0PR17CA0021.outlook.office365.com\n"
+ " (2603:10b6:8:191::16) with Microsoft SMTP Server (version=TLS1_2,\n"
+ " cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.41 via Frontend\n"
+ " Transport; Fri, 29 Mar 2024 23:05:39 +0000\n"
+ "X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)\n"
+ " smtp.mailfrom=amd.com; dkim=none (message not signed)\n"
+ " header.d=none;dmarc=pass action=none header.from=amd.com;\n"
+ "Received-SPF: Pass (protection.outlook.com: domain of amd.com designates\n"
+ " 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n"
+ " client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C\n"
+ "Received: from SATLEXMB04.amd.com (165.204.84.17) by\n"
+ " DS1PEPF00017091.mail.protection.outlook.com (10.167.17.133) with Microsoft\n"
+ " SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n"
+ " 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 23:05:39 +0000\n"
+ "Received: from localhost (10.180.168.240) by SATLEXMB04.amd.com\n"
+ " (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,\n"
+ " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 29 Mar\n"
+ " 2024 18:05:39 -0500\n"
+ "From: Michael Roth <michael.roth@amd.com>\n"
+ "To: <kvm@vger.kernel.org>\n"
+ "CC: <linux-coco@lists.linux.dev>, <linux-mm@kvack.org>,\n"
+ "\t<linux-crypto@vger.kernel.org>, <x86@kernel.org>,\n"
+ "\t<linux-kernel@vger.kernel.org>, <tglx@linutronix.de>, <mingo@redhat.com>,\n"
+ "\t<jroedel@suse.de>, <thomas.lendacky@amd.com>, <hpa@zytor.com>,\n"
+ "\t<ardb@kernel.org>, <pbonzini@redhat.com>, <seanjc@google.com>,\n"
+ "\t<vkuznets@redhat.com>, <jmattson@google.com>, <luto@kernel.org>,\n"
+ "\t<dave.hansen@linux.intel.com>, <slp@redhat.com>, <pgonda@google.com>,\n"
+ "\t<peterz@infradead.org>, <srinivas.pandruvada@linux.intel.com>,\n"
+ "\t<rientjes@google.com>, <dovmurik@linux.ibm.com>, <tobin@ibm.com>,\n"
+ "\t<bp@alien8.de>, <vbabka@suse.cz>, <kirill@shutemov.name>,\n"
+ "\t<ak@linux.intel.com>, <tony.luck@intel.com>,\n"
+ "\t<sathyanarayanan.kuppuswamy@linux.intel.com>, <alpergun@google.com>,\n"
+ "\t<jarkko@kernel.org>, <ashish.kalra@amd.com>, <nikunj.dadhania@amd.com>,\n"
+ "\t<pankaj.gupta@amd.com>, <liam.merwick@oracle.com>, Brijesh Singh\n"
+ "\t<brijesh.singh@amd.com>, Alexey Kardashevskiy <aik@amd.com>\n"
+ "Subject: [PATCH v12 26/29] KVM: SEV: Provide support for SNP_GUEST_REQUEST NAE event\n"
+ "Date: Fri, 29 Mar 2024 17:58:32 -0500\n"
+ "Message-ID: <20240329225835.400662-27-michael.roth@amd.com>\n"
+ "X-Mailer: git-send-email 2.25.1\n"
+ "In-Reply-To: <20240329225835.400662-1-michael.roth@amd.com>\n"
+ "References: <20240329225835.400662-1-michael.roth@amd.com>\n"
+ "Precedence: bulk\n"
+ "X-Mailing-List: kvm@vger.kernel.org\n"
+ "List-Id: <kvm.vger.kernel.org>\n"
+ "List-Subscribe: <mailto:kvm+subscribe@vger.kernel.org>\n"
+ "List-Unsubscribe: <mailto:kvm+unsubscribe@vger.kernel.org>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Content-Type: text/plain\n"
+ "X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com\n"
+ " (10.181.40.145)\n"
+ "X-EOPAttributedMessage: 0\n"
+ "X-MS-PublicTrafficType: Email\n"
+ "X-MS-TrafficTypeDiagnostic: DS1PEPF00017091:EE_|DS7PR12MB8346:EE_\n"
+ "X-MS-Office365-Filtering-Correlation-Id: 29793531-e2ca-491c-1a60-08dc5044c08d\n"
+ "X-MS-Exchange-SenderADCheck: 1\n"
+ "X-MS-Exchange-AntiSpam-Relay: 0\n"
+ "X-Microsoft-Antispam: BCL:0;\n"
+ "X-Microsoft-Antispam-Message-Info: wFSuaKTvRQfOtdiiZggI/1E9juK+oJc2TRSGXFVjNQH6K1wlm9lAuRi2AABfWovQilmwMVXe1l6T4YxvGuuFifLSCpmtPQOHKjm6x+FajgbzHsEgtMX93cx5A0nttMe/qTI13yLMvcscLwhbPBIdodHYHhzKupmGusDKEUfIkuXqgoS46ONELQ8DpRVI7AvlT51VRqxW6w6SmGYUURqbArpcwis5lJT+cTvGNv8CqPtGPlIy7qfPPfuhv1nCIO9qPPfvEGlgl/Ec+LypJxBtqOEfg2pBgc02cbfF15t+YO5/ue5hwWk2QeyLY/PtzpC6Bue+8ZYMaLgW7iEG237ohWzAvDkoO5JuB0YjPr9df90ZKqzIesdCLnSdeqdDO9BO09jMyX5hg+vOmQmDRLp5MGJZ0CLEXxryinRjW60G57b7aoliHs448u+dW9OMhumg4geX6Ys+dNVlqiUHttX7q1i79Zld8UWIVQxAemTDG5c93reIn0O1bo2r+FTQzyNA60sU19YLtjGrE2CeHrS8UBmvPCHb+dNs/bwEdkpHaysGHJoMSSvphTWHY/GTjqyl61EyVKEXMAdKGOoJEKagRrWl4eg4UKhIYmIVTQyAvx7i9Y2qCbTYlvo+hUPDKlFswU7rnoRM5q0SJo084BAULraS65dFTt/wwZaFs/sG/Pn1sk4sqy3xCY8HS+L4Ka6jAqFvX2LdWGEJVaix3MvIE7CGKTb/0UI+9e3423/5muTUjwuXnqr/9ldh5/UD03xC\n"
+ "X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(36860700004)(82310400014)(7416005)(376005)(1800799015);DIR:OUT;SFP:1101;\n"
+ "X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 23:05:39.7301\n"
+ " (UTC)\n"
+ "X-MS-Exchange-CrossTenant-Network-Message-Id: 29793531-e2ca-491c-1a60-08dc5044c08d\n"
+ "X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d\n"
+ "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]\n"
+ "X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017091.namprd03.prod.outlook.com\n"
+ "X-MS-Exchange-CrossTenant-AuthAs: Anonymous\n"
+ "X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem\n"
+ "X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8346\n"
+ "Return-Path: kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org\n"
+ "X-MS-Exchange-Organization-OriginalArrivalTime: 29 Mar 2024 23:06:10.8900\n"
+ " (UTC)\n"
+ "X-MS-Exchange-Organization-Network-Message-Id: e82b8a82-3a8d-482a-ba73-08dc5044d311\n"
+ "X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.37\n"
+ "X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202\n"
+ "X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de\n"
+ "X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-essen-01.secunet.de:TOTAL-HUB=0.189|SMR=0.131(SMRDE=0.002|SMRC=0.128(SMRCL=0.101|X-SMRCR=0.128))|CAT=0.057(CATRESL=0.024\n"
+ " (CATRESLP2R=0.004)|CATORES=0.030(CATRS=0.029(CATRS-Index Routing\n"
+ " Agent=0.028)));2024-03-29T23:06:11.116Z\n"
+ "X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-01.secunet.de\n"
+ "X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de\n"
+ "X-MS-Exchange-Organization-AuthAs: Anonymous\n"
+ "X-MS-Exchange-Organization-FromEntityHeader: Internet\n"
+ "X-MS-Exchange-Organization-OriginalSize: 17547\n"
+ "X-MS-Exchange-Organization-HygienePolicy: Standard\n"
+ "X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=8.027|SMR=0.008(SMRPI=0.005(SMRPI-FrontendProxyAgent=0.005))|SMS=0.027\n"
+ "X-MS-Exchange-Organization-Recipient-Limit-Verified: True\n"
+ "X-MS-Exchange-Organization-TotalRecipientCount: 1\n"
+ "X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b\n"
+ "X-MS-Exchange-Forest-RulesExecuted: mbx-essen-01\n"
+ "X-MS-Exchange-Organization-RulesExecuted: mbx-essen-01\n"
+ "X-MS-Exchange-Forest-IndexAgent-0: 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\n"
+ " As4HbP6lGbXAN1KVQWZCapXlQB49TZCER9z4L4ZKtSgPQTGBPI+t5t\n"
+ " RyfGm4xssygpN5dfIlDZDhQ4SqTvFAU7CyeP0/WzVSo40lAAABCq8E\n"
+ " PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTE2Ij8+DQ\n"
+ " o8RW1haWxTZXQ+DQogIDxWZXJzaW9uPjE1LjAuMC4wPC9WZXJzaW9u\n"
+ " Pg0KICA8RW1haWxzPg0KICAgIDxFbWFpbCBTdGFydEluZGV4PSIyMS\n"
+ " I+DQogICAgICA8RW1haWxTdHJpbmc+YnJpamVzaC5zaW5naEBhbWQu\n"
+ " Y29tPC9FbWFpbFN0cmluZz4NCiAgICA8L0VtYWlsPg0KICAgIDxFbW\n"
+ " FpbCBTdGFydEluZGV4PSI3MDEiIFBvc2l0aW9uPSJPdGhlciI+DQog\n"
+ " ICAgICA8RW1haWxTdHJpbmc+YWlrQGFtZC5jb208L0VtYWlsU3RyaW\n"
+ " 5nPg0KICAgIDwvRW1haWw+DQogICAgPEVtYWlsIFN0YXJ0SW5kZXg9\n"
+ " Ijg0OSIgUG9zaXRpb249Ik90aGVyIj4NCiAgICAgIDxFbWFpbFN0cm\n"
+ " luZz5hc2hpc2gua2FscmFAYW1kLmNvbTwvRW1haWxTdHJpbmc+DQog\n"
+ " ICAgPC9FbWFpbD4NCiAgICA8RW1haWwgU3RhcnRJbmRleD0iMTA0NC\n"
+ " IgUG9zaXRpb249Ik90aGVyIj4NCiAgICAgIDxFbWFpbFN0cmluZz5t\n"
+ " aWNoYWVsLnJvdGhAYW1kLmNvbTwvRW1haWxTdHJpbmc+DQogICAgPC\n"
+ " 9FbWFpbD4NCiAgPC9FbWFpbHM+DQo8L0VtYWlsU2V0PgEOzwFSZXRy\n"
+ " aWV2ZXJPcGVyYXRvciwxMCwwO1JldHJpZXZlck9wZXJhdG9yLDExLD\n"
+ " E7UG9zdERvY1BhcnNlck9wZXJhdG9yLDEwLDA7UG9zdERvY1BhcnNl\n"
+ " ck9wZXJhdG9yLDExLDA7UG9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY0\n"
+ " 9wZXJhdG9yLDEwLDM7UG9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09w\n"
+ " ZXJhdG9yLDExLDA7VHJhbnNwb3J0V3JpdGVyUHJvZHVjZXIsMjAsMT Q=\n"
+ "X-MS-Exchange-Forest-IndexAgent: 1 4091\n"
+ "X-MS-Exchange-Forest-EmailMessageHash: E4020154\n"
+ "X-MS-Exchange-Forest-Language: en\n"
+ "X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent\n"
+ "\n"
+ "From: Brijesh Singh <brijesh.singh@amd.com>\n"
+ "\n"
+ "Version 2 of GHCB specification added support for the SNP Guest Request\n"
+ "Message NAE event. The event allows for an SEV-SNP guest to make\n"
+ "requests to the SEV-SNP firmware through hypervisor using the\n"
+ "SNP_GUEST_REQUEST API defined in the SEV-SNP firmware specification.\n"
+ "\n"
+ "This is used by guests primarily to request attestation reports from\n"
+ "firmware. There are other request types are available as well, but the\n"
+ "specifics of what guest requests are being made are opaque to the\n"
+ "hypervisor, which only serves as a proxy for the guest requests and\n"
+ "firmware responses.\n"
+ "\n"
+ "Implement handling for these events.\n"
+ "\n"
+ "Co-developed-by: Alexey Kardashevskiy <aik@amd.com>\n"
+ "Signed-off-by: Alexey Kardashevskiy <aik@amd.com>\n"
+ "Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>\n"
+ "Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>\n"
+ "[mdr: ensure FW command failures are indicated to guest, drop extended\n"
+ " request handling to be re-written as separate patch, massage commit]\n"
+ "Signed-off-by: Michael Roth <michael.roth@amd.com>\n"
+ "---\n"
+ " arch/x86/kvm/svm/sev.c         | 83 ++++++++++++++++++++++++++++++++++\n"
+ " include/uapi/linux/sev-guest.h |  9 ++++\n"
+ " 2 files changed, 92 insertions(+)\n"
+ "\n"
+ "diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c\n"
+ "index 658116537f3f..f56f04553e81 100644\n"
+ "--- a/arch/x86/kvm/svm/sev.c\n"
+ "+++ b/arch/x86/kvm/svm/sev.c\n"
+ "@@ -19,6 +19,7 @@\n"
+ " #include <linux/misc_cgroup.h>\n"
+ " #include <linux/processor.h>\n"
+ " #include <linux/trace_events.h>\n"
+ "+#include <uapi/linux/sev-guest.h>\n"
+ " \n"
+ " #include <asm/pkru.h>\n"
+ " #include <asm/trapnr.h>\n"
+ "@@ -3223,6 +3224,7 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm)\n"
+ " \tcase SVM_VMGEXIT_HV_FEATURES:\n"
+ " \tcase SVM_VMGEXIT_PSC:\n"
+ " \tcase SVM_VMGEXIT_TERM_REQUEST:\n"
+ "+\tcase SVM_VMGEXIT_GUEST_REQUEST:\n"
+ " \t\tbreak;\n"
+ " \tdefault:\n"
+ " \t\treason = GHCB_ERR_INVALID_EVENT;\n"
+ "@@ -3646,6 +3648,83 @@ static int sev_snp_ap_creation(struct vcpu_svm *svm)\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "+static bool snp_setup_guest_buf(struct kvm *kvm, struct sev_data_snp_guest_request *data,\n"
+ "+\t\t\t\tgpa_t req_gpa, gpa_t resp_gpa)\n"
+ "+{\n"
+ "+\tstruct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;\n"
+ "+\tkvm_pfn_t req_pfn, resp_pfn;\n"
+ "+\n"
+ "+\tif (!IS_ALIGNED(req_gpa, PAGE_SIZE) || !IS_ALIGNED(resp_gpa, PAGE_SIZE))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\treq_pfn = gfn_to_pfn(kvm, gpa_to_gfn(req_gpa));\n"
+ "+\tif (is_error_noslot_pfn(req_pfn))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tresp_pfn = gfn_to_pfn(kvm, gpa_to_gfn(resp_gpa));\n"
+ "+\tif (is_error_noslot_pfn(resp_pfn))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tif (rmp_make_private(resp_pfn, 0, PG_LEVEL_4K, 0, true))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tdata->gctx_paddr = __psp_pa(sev->snp_context);\n"
+ "+\tdata->req_paddr = __sme_set(req_pfn << PAGE_SHIFT);\n"
+ "+\tdata->res_paddr = __sme_set(resp_pfn << PAGE_SHIFT);\n"
+ "+\n"
+ "+\treturn true;\n"
+ "+}\n"
+ "+\n"
+ "+static bool snp_cleanup_guest_buf(struct sev_data_snp_guest_request *data)\n"
+ "+{\n"
+ "+\tu64 pfn = __sme_clr(data->res_paddr) >> PAGE_SHIFT;\n"
+ "+\n"
+ "+\tif (snp_page_reclaim(pfn))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tif (rmp_make_shared(pfn, PG_LEVEL_4K))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\treturn true;\n"
+ "+}\n"
+ "+\n"
+ "+static bool __snp_handle_guest_req(struct kvm *kvm, gpa_t req_gpa, gpa_t resp_gpa,\n"
+ "+\t\t\t\t   sev_ret_code *fw_err)\n"
+ "+{\n"
+ "+\tstruct sev_data_snp_guest_request data = {0};\n"
+ "+\tstruct kvm_sev_info *sev;\n"
+ "+\tbool ret = true;\n"
+ "+\n"
+ "+\tif (!sev_snp_guest(kvm))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tsev = &to_kvm_svm(kvm)->sev_info;\n"
+ "+\n"
+ "+\tif (!snp_setup_guest_buf(kvm, &data, req_gpa, resp_gpa))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tif (sev_issue_cmd(kvm, SEV_CMD_SNP_GUEST_REQUEST, &data, fw_err))\n"
+ "+\t\tret = false;\n"
+ "+\n"
+ "+\tif (!snp_cleanup_guest_buf(&data))\n"
+ "+\t\tret = false;\n"
+ "+\n"
+ "+\treturn ret;\n"
+ "+}\n"
+ "+\n"
+ "+static void snp_handle_guest_req(struct vcpu_svm *svm, gpa_t req_gpa, gpa_t resp_gpa)\n"
+ "+{\n"
+ "+\tstruct kvm_vcpu *vcpu = &svm->vcpu;\n"
+ "+\tstruct kvm *kvm = vcpu->kvm;\n"
+ "+\tsev_ret_code fw_err = 0;\n"
+ "+\tint vmm_ret = 0;\n"
+ "+\n"
+ "+\tif (!__snp_handle_guest_req(kvm, req_gpa, resp_gpa, &fw_err))\n"
+ "+\t\tvmm_ret = SNP_GUEST_VMM_ERR_GENERIC;\n"
+ "+\n"
+ "+\tghcb_set_sw_exit_info_2(svm->sev_es.ghcb, SNP_GUEST_ERR(vmm_ret, fw_err));\n"
+ "+}\n"
+ "+\n"
+ " static int sev_handle_vmgexit_msr_protocol(struct vcpu_svm *svm)\n"
+ " {\n"
+ " \tstruct vmcb_control_area *control = &svm->vmcb->control;\n"
+ "@@ -3906,6 +3985,10 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu)\n"
+ " \t\tvcpu->run->system_event.ndata = 1;\n"
+ " \t\tvcpu->run->system_event.data[0] = control->ghcb_gpa;\n"
+ " \t\tbreak;\n"
+ "+\tcase SVM_VMGEXIT_GUEST_REQUEST:\n"
+ "+\t\tsnp_handle_guest_req(svm, control->exit_info_1, control->exit_info_2);\n"
+ "+\t\tret = 1;\n"
+ "+\t\tbreak;\n"
+ " \tcase SVM_VMGEXIT_UNSUPPORTED_EVENT:\n"
+ " \t\tvcpu_unimpl(vcpu,\n"
+ " \t\t\t    \"vmgexit: unsupported event - exit_info_1=%#llx, exit_info_2=%#llx\\n\",\n"
+ "diff --git a/include/uapi/linux/sev-guest.h b/include/uapi/linux/sev-guest.h\n"
+ "index 154a87a1eca9..7bd78e258569 100644\n"
+ "--- a/include/uapi/linux/sev-guest.h\n"
+ "+++ b/include/uapi/linux/sev-guest.h\n"
+ "@@ -89,8 +89,17 @@ struct snp_ext_report_req {\n"
+ " #define SNP_GUEST_FW_ERR_MASK\t\tGENMASK_ULL(31, 0)\n"
+ " #define SNP_GUEST_VMM_ERR_SHIFT\t\t32\n"
+ " #define SNP_GUEST_VMM_ERR(x)\t\t(((u64)x) << SNP_GUEST_VMM_ERR_SHIFT)\n"
+ "+#define SNP_GUEST_FW_ERR(x)\t\t((x) & SNP_GUEST_FW_ERR_MASK)\n"
+ "+#define SNP_GUEST_ERR(vmm_err, fw_err)\t(SNP_GUEST_VMM_ERR(vmm_err) | \\\n"
+ "+\t\t\t\t\t SNP_GUEST_FW_ERR(fw_err))\n"
+ " \n"
+ "+/*\n"
+ "+ * The GHCB spec only formally defines INVALID_LEN/BUSY VMM errors, but define\n"
+ "+ * a GENERIC error code such that it won't ever conflict with GHCB-defined\n"
+ "+ * errors if any get added in the future.\n"
+ "+ */\n"
+ " #define SNP_GUEST_VMM_ERR_INVALID_LEN\t1\n"
+ " #define SNP_GUEST_VMM_ERR_BUSY\t\t2\n"
+ "+#define SNP_GUEST_VMM_ERR_GENERIC\tBIT(31)\n"
+ " \n"
+ " #endif /* __UAPI_LINUX_SEV_GUEST_H_ */\n"
+ "-- \n"
  2.25.1
 
-75ddf8157680d9a681b9b19878f7e70f0a92d773cc67df9a978919c28c622eec
+1542bab13b646819827f31b387510dd17ace06bbc400eab96e7e78cd2293700b

diff --git a/a/1.txt b/N2/1.txt
index 3b4e98c..990b08e 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -164,3 +164,348 @@ index 154a87a1eca9..7bd78e258569 100644
  #endif /* __UAPI_LINUX_SEV_GUEST_H_ */
 -- 
 2.25.1
+
+
+X-sender: <kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org>
+X-Receiver: <martin.weber@secunet.com> ORCPT=rfc822;martin.weber@secunet.com
+X-CreatedBy: MSExchange15
+X-HeloDomain: mbx-essen-01.secunet.de
+X-ExtendedProps: BQBjAAoACEqmlidQ3AgFADcAAgAADwA8AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50Lk9yZ2FuaXphdGlvblNjb3BlEQAAAAAAAAAAAAAAAAAAAAAADwA/AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5EaXJlY3RvcnlEYXRhLk1haWxEZWxpdmVyeVByaW9yaXR5DwADAAAATG93
+X-Source: SMTP:Default MBX-ESSEN-02
+X-SourceIPAddress: 10.53.40.197
+X-EndOfInjectedXHeaders: 18094
+Received: from mbx-essen-01.secunet.de (10.53.40.197) by
+ mbx-essen-02.secunet.de (10.53.40.198) with Microsoft SMTP Server
+ (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
+ 15.1.2507.37; Sat, 30 Mar 2024 00:06:10 +0100
+Received: from b.mx.secunet.com (62.96.220.37) by cas-essen-02.secunet.de
+ (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend
+ Transport; Sat, 30 Mar 2024 00:06:10 +0100
+Received: from localhost (localhost [127.0.0.1])
+	by b.mx.secunet.com (Postfix) with ESMTP id D1805202BD
+	for <martin.weber@secunet.com>; Sat, 30 Mar 2024 00:06:10 +0100 (CET)
+X-Virus-Scanned: by secunet
+X-Spam-Flag: NO
+X-Spam-Score: -5.15
+X-Spam-Level:
+X-Spam-Status: No, score=-5.15 tagged_above=-999 required=2.1
+	tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.099, DKIM_SIGNED=0.1,
+	DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,
+	HEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1,
+	RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]
+	autolearn=unavailable autolearn_force=no
+Authentication-Results: a.mx.secunet.com (amavisd-new);
+	dkim=pass (1024-bit key) header.d=amd.com
+Received: from b.mx.secunet.com ([127.0.0.1])
+	by localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)
+	with ESMTP id oAJd4B0w3R4K for <martin.weber@secunet.com>;
+	Sat, 30 Mar 2024 00:06:10 +0100 (CET)
+Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.199.223; helo=ny.mirrors.kernel.org; envelope-from=kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org; receiver=martin.weber@secunet.com 
+DKIM-Filter: OpenDKIM Filter v2.11.0 b.mx.secunet.com 03E3A200BB
+Authentication-Results: b.mx.secunet.com;
+	dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="zeCqVAyj"
+Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
+	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+	(No client certificate requested)
+	by b.mx.secunet.com (Postfix) with ESMTPS id 03E3A200BB
+	for <martin.weber@secunet.com>; Sat, 30 Mar 2024 00:06:10 +0100 (CET)
+Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])
+	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+	(No client certificate requested)
+	by ny.mirrors.kernel.org (Postfix) with ESMTPS id 2F61B1C212A9
+	for <martin.weber@secunet.com>; Fri, 29 Mar 2024 23:06:09 +0000 (UTC)
+Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
+	by smtp.subspace.kernel.org (Postfix) with ESMTP id 1806913F012;
+	Fri, 29 Mar 2024 23:05:45 +0000 (UTC)
+Authentication-Results: smtp.subspace.kernel.org;
+	dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="zeCqVAyj"
+X-Original-To: kvm@vger.kernel.org
+Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2070.outbound.protection.outlook.com [40.107.100.70])
+	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+	(No client certificate requested)
+	by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95E9C13E6B9;
+	Fri, 29 Mar 2024 23:05:42 +0000 (UTC)
+Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.70
+ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
+	t=1711753544; cv=fail; b=BlqqvbGwutAw8URHIgMH30kvA5QpTzs/EidijFPe0fjFy5pMt6gU3Of58WmRgtLC5HdAFWEnpY91icLlr7eYlVXCT6T10fN7aOeDR+taYs5wJQZoRJMsxCRbI3XvUrIl79N5OhELjsPxchrIPeXAKecY7/mL+08bVpQeDnTw0Tg=
+ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
+	s=arc-20240116; t=1711753544; c=relaxed/simple;
+	bh=WgjSuePq/wBpCSmmzUyRKNJcA65Zw60gyFDJt37grOw=;
+	h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:
+	 MIME-Version:Content-Type; b=tadVHjYp3xUeM32EvMaNxfyZwQQAKHmOqhQQ1XMBg9kHp+gJAurvOy+zAHBwq9zTbGuP/KUoD7IDeUX0jGzYICO/4kQRtEwkvcoBPNOkgirp3exZt3Mu9Ku4Nua7UCArN/3crAiO/9CE+CnJguzPNZzA3jmWHwQHpZ5TSvlUC9c=
+ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=zeCqVAyj; arc=fail smtp.client-ip=40.107.100.70
+Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com
+Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com
+ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
+ b=LTdfnSa1VhLOPKJevSaKvpUEM+ibK4JR/D4A9skjpRANTv9ZzuAloP8//3oASD3IdNwrh+OSRxi+9Iwq7hxH6bm72GCC8DmsKuP2rDNCei5s/4ioa7Mt0Rgv1Y/9zANhJ5bTNBTPlIJK6vKpaQdARBJ53qfdQwGiJ48PzqDufYciLrHxwSuTMItPHCXugbz1V3S9i0NMupUEJi2oKI/eevatNkz7jMPkOWb7myAeNRT+nOWgFlh4B1G5PybIF2KIVcmpb5vavCiFv2nXckLeBWe3CjlMqZJgIR/2tMwEHDDQjFAfKr1bkg0JIiZoKD5UYARcmLysUNDUnBW6ZIkQcA==
+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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
+ bh=nBu38l4H29f7TDioCJxMHGn5H0K24coARDh1fYxp94g=;
+ b=Tm4mgAX85xml0c02ymLsi9tk5C41IzMLRHOGWwLnQtBjp1JDzL/nwJeVbnGSnlpvk1POZGeLGRF7uiH/vidV2sDKC96d1S85+P55F8F6RGYjLbU4K7b/V5SjUD5EXMBtRAVnjp0PDyxJrRMJyeAM6BYi8RyT7/DfjMT8G35q9tTlJjCWFv6owwahTlfvcX2HoILzjyrKqGAeDieGHKbYsmZOPTPErMVnPAJ8B7I8++OtLIDDvWXeDmrmLRbHlIemWx0QFJKcVf8k3aQiK3tidiyMuCzDuSs0Ua3O7Upae61Gh50WMtQDWQCbIiKYt0jiqt4Exm8sSBJz6uwIWduLZQ==
+ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
+ 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com;
+ dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
+ header.from=amd.com; dkim=none (message not signed); arc=none (0)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
+ h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
+ bh=nBu38l4H29f7TDioCJxMHGn5H0K24coARDh1fYxp94g=;
+ b=zeCqVAyjfRxDQher1AZ5EaOKxM5xY4BftFJ208BZWqiiAjXdof/d4iUhbP36IlOA01+A1BhxmrUQU0P14395af+BJG1LpGQu/iQfEYn8iwN6tfjzVCRINDzlsxLRvhiEfBgRdVKJmno9WURcApRABBx4LkwYntw5GkcQBk5RGlA=
+Received: from DS0PR17CA0021.namprd17.prod.outlook.com (2603:10b6:8:191::16)
+ by DS7PR12MB8346.namprd12.prod.outlook.com (2603:10b6:8:e5::13) with
+ Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar
+ 2024 23:05:39 +0000
+Received: from DS1PEPF00017091.namprd03.prod.outlook.com
+ (2603:10b6:8:191:cafe::70) by DS0PR17CA0021.outlook.office365.com
+ (2603:10b6:8:191::16) with Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.41 via Frontend
+ Transport; Fri, 29 Mar 2024 23:05:39 +0000
+X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
+ smtp.mailfrom=amd.com; dkim=none (message not signed)
+ header.d=none;dmarc=pass action=none header.from=amd.com;
+Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
+ 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
+ client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
+Received: from SATLEXMB04.amd.com (165.204.84.17) by
+ DS1PEPF00017091.mail.protection.outlook.com (10.167.17.133) with Microsoft
+ SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
+ 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 23:05:39 +0000
+Received: from localhost (10.180.168.240) by SATLEXMB04.amd.com
+ (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 29 Mar
+ 2024 18:05:39 -0500
+From: Michael Roth <michael.roth@amd.com>
+To: <kvm@vger.kernel.org>
+CC: <linux-coco@lists.linux.dev>, <linux-mm@kvack.org>,
+	<linux-crypto@vger.kernel.org>, <x86@kernel.org>,
+	<linux-kernel@vger.kernel.org>, <tglx@linutronix.de>, <mingo@redhat.com>,
+	<jroedel@suse.de>, <thomas.lendacky@amd.com>, <hpa@zytor.com>,
+	<ardb@kernel.org>, <pbonzini@redhat.com>, <seanjc@google.com>,
+	<vkuznets@redhat.com>, <jmattson@google.com>, <luto@kernel.org>,
+	<dave.hansen@linux.intel.com>, <slp@redhat.com>, <pgonda@google.com>,
+	<peterz@infradead.org>, <srinivas.pandruvada@linux.intel.com>,
+	<rientjes@google.com>, <dovmurik@linux.ibm.com>, <tobin@ibm.com>,
+	<bp@alien8.de>, <vbabka@suse.cz>, <kirill@shutemov.name>,
+	<ak@linux.intel.com>, <tony.luck@intel.com>,
+	<sathyanarayanan.kuppuswamy@linux.intel.com>, <alpergun@google.com>,
+	<jarkko@kernel.org>, <ashish.kalra@amd.com>, <nikunj.dadhania@amd.com>,
+	<pankaj.gupta@amd.com>, <liam.merwick@oracle.com>, Brijesh Singh
+	<brijesh.singh@amd.com>, Alexey Kardashevskiy <aik@amd.com>
+Subject: [PATCH v12 26/29] KVM: SEV: Provide support for SNP_GUEST_REQUEST NAE event
+Date: Fri, 29 Mar 2024 17:58:32 -0500
+Message-ID: <20240329225835.400662-27-michael.roth@amd.com>
+X-Mailer: git-send-email 2.25.1
+In-Reply-To: <20240329225835.400662-1-michael.roth@amd.com>
+References: <20240329225835.400662-1-michael.roth@amd.com>
+Precedence: bulk
+X-Mailing-List: kvm@vger.kernel.org
+List-Id: <kvm.vger.kernel.org>
+List-Subscribe: <mailto:kvm+subscribe@vger.kernel.org>
+List-Unsubscribe: <mailto:kvm+unsubscribe@vger.kernel.org>
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain
+X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
+ (10.181.40.145)
+X-EOPAttributedMessage: 0
+X-MS-PublicTrafficType: Email
+X-MS-TrafficTypeDiagnostic: DS1PEPF00017091:EE_|DS7PR12MB8346:EE_
+X-MS-Office365-Filtering-Correlation-Id: 29793531-e2ca-491c-1a60-08dc5044c08d
+X-MS-Exchange-SenderADCheck: 1
+X-MS-Exchange-AntiSpam-Relay: 0
+X-Microsoft-Antispam: BCL:0;
+X-Microsoft-Antispam-Message-Info: wFSuaKTvRQfOtdiiZggI/1E9juK+oJc2TRSGXFVjNQH6K1wlm9lAuRi2AABfWovQilmwMVXe1l6T4YxvGuuFifLSCpmtPQOHKjm6x+FajgbzHsEgtMX93cx5A0nttMe/qTI13yLMvcscLwhbPBIdodHYHhzKupmGusDKEUfIkuXqgoS46ONELQ8DpRVI7AvlT51VRqxW6w6SmGYUURqbArpcwis5lJT+cTvGNv8CqPtGPlIy7qfPPfuhv1nCIO9qPPfvEGlgl/Ec+LypJxBtqOEfg2pBgc02cbfF15t+YO5/ue5hwWk2QeyLY/PtzpC6Bue+8ZYMaLgW7iEG237ohWzAvDkoO5JuB0YjPr9df90ZKqzIesdCLnSdeqdDO9BO09jMyX5hg+vOmQmDRLp5MGJZ0CLEXxryinRjW60G57b7aoliHs448u+dW9OMhumg4geX6Ys+dNVlqiUHttX7q1i79Zld8UWIVQxAemTDG5c93reIn0O1bo2r+FTQzyNA60sU19YLtjGrE2CeHrS8UBmvPCHb+dNs/bwEdkpHaysGHJoMSSvphTWHY/GTjqyl61EyVKEXMAdKGOoJEKagRrWl4eg4UKhIYmIVTQyAvx7i9Y2qCbTYlvo+hUPDKlFswU7rnoRM5q0SJo084BAULraS65dFTt/wwZaFs/sG/Pn1sk4sqy3xCY8HS+L4Ka6jAqFvX2LdWGEJVaix3MvIE7CGKTb/0UI+9e3423/5muTUjwuXnqr/9ldh5/UD03xC
+X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(36860700004)(82310400014)(7416005)(376005)(1800799015);DIR:OUT;SFP:1101;
+X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 23:05:39.7301
+ (UTC)
+X-MS-Exchange-CrossTenant-Network-Message-Id: 29793531-e2ca-491c-1a60-08dc5044c08d
+X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
+X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
+X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017091.namprd03.prod.outlook.com
+X-MS-Exchange-CrossTenant-AuthAs: Anonymous
+X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
+X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8346
+Return-Path: kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org
+X-MS-Exchange-Organization-OriginalArrivalTime: 29 Mar 2024 23:06:10.8900
+ (UTC)
+X-MS-Exchange-Organization-Network-Message-Id: e82b8a82-3a8d-482a-ba73-08dc5044d311
+X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.37
+X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202
+X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de
+X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=cas-essen-02.secunet.de:TOTAL-FE=0.008|SMR=0.008(SMRPI=0.005(SMRPI-FrontendProxyAgent=0.005));2024-03-29T23:06:10.899Z
+X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-02.secunet.de
+X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de
+X-MS-Exchange-Organization-AuthAs: Anonymous
+X-MS-Exchange-Organization-OriginalSize: 17547
+X-MS-Exchange-Organization-Transport-Properties: DeliveryPriority=Low
+X-MS-Exchange-Organization-Prioritization: 2:ShadowRedundancy
+X-MS-Exchange-Organization-IncludeInSla: False:ShadowRedundancy
+
+From: Brijesh Singh <brijesh.singh@amd.com>
+
+Version 2 of GHCB specification added support for the SNP Guest Request
+Message NAE event. The event allows for an SEV-SNP guest to make
+requests to the SEV-SNP firmware through hypervisor using the
+SNP_GUEST_REQUEST API defined in the SEV-SNP firmware specification.
+
+This is used by guests primarily to request attestation reports from
+firmware. There are other request types are available as well, but the
+specifics of what guest requests are being made are opaque to the
+hypervisor, which only serves as a proxy for the guest requests and
+firmware responses.
+
+Implement handling for these events.
+
+Co-developed-by: Alexey Kardashevskiy <aik@amd.com>
+Signed-off-by: Alexey Kardashevskiy <aik@amd.com>
+Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
+Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
+[mdr: ensure FW command failures are indicated to guest, drop extended
+ request handling to be re-written as separate patch, massage commit]
+Signed-off-by: Michael Roth <michael.roth@amd.com>
+---
+ arch/x86/kvm/svm/sev.c         | 83 ++++++++++++++++++++++++++++++++++
+ include/uapi/linux/sev-guest.h |  9 ++++
+ 2 files changed, 92 insertions(+)
+
+diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
+index 658116537f3f..f56f04553e81 100644
+--- a/arch/x86/kvm/svm/sev.c
++++ b/arch/x86/kvm/svm/sev.c
+@@ -19,6 +19,7 @@
+ #include <linux/misc_cgroup.h>
+ #include <linux/processor.h>
+ #include <linux/trace_events.h>
++#include <uapi/linux/sev-guest.h>
+ 
+ #include <asm/pkru.h>
+ #include <asm/trapnr.h>
+@@ -3223,6 +3224,7 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm)
+ 	case SVM_VMGEXIT_HV_FEATURES:
+ 	case SVM_VMGEXIT_PSC:
+ 	case SVM_VMGEXIT_TERM_REQUEST:
++	case SVM_VMGEXIT_GUEST_REQUEST:
+ 		break;
+ 	default:
+ 		reason = GHCB_ERR_INVALID_EVENT;
+@@ -3646,6 +3648,83 @@ static int sev_snp_ap_creation(struct vcpu_svm *svm)
+ 	return ret;
+ }
+ 
++static bool snp_setup_guest_buf(struct kvm *kvm, struct sev_data_snp_guest_request *data,
++				gpa_t req_gpa, gpa_t resp_gpa)
++{
++	struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
++	kvm_pfn_t req_pfn, resp_pfn;
++
++	if (!IS_ALIGNED(req_gpa, PAGE_SIZE) || !IS_ALIGNED(resp_gpa, PAGE_SIZE))
++		return false;
++
++	req_pfn = gfn_to_pfn(kvm, gpa_to_gfn(req_gpa));
++	if (is_error_noslot_pfn(req_pfn))
++		return false;
++
++	resp_pfn = gfn_to_pfn(kvm, gpa_to_gfn(resp_gpa));
++	if (is_error_noslot_pfn(resp_pfn))
++		return false;
++
++	if (rmp_make_private(resp_pfn, 0, PG_LEVEL_4K, 0, true))
++		return false;
++
++	data->gctx_paddr = __psp_pa(sev->snp_context);
++	data->req_paddr = __sme_set(req_pfn << PAGE_SHIFT);
++	data->res_paddr = __sme_set(resp_pfn << PAGE_SHIFT);
++
++	return true;
++}
++
++static bool snp_cleanup_guest_buf(struct sev_data_snp_guest_request *data)
++{
++	u64 pfn = __sme_clr(data->res_paddr) >> PAGE_SHIFT;
++
++	if (snp_page_reclaim(pfn))
++		return false;
++
++	if (rmp_make_shared(pfn, PG_LEVEL_4K))
++		return false;
++
++	return true;
++}
++
++static bool __snp_handle_guest_req(struct kvm *kvm, gpa_t req_gpa, gpa_t resp_gpa,
++				   sev_ret_code *fw_err)
++{
++	struct sev_data_snp_guest_request data = {0};
++	struct kvm_sev_info *sev;
++	bool ret = true;
++
++	if (!sev_snp_guest(kvm))
++		return false;
++
++	sev = &to_kvm_svm(kvm)->sev_info;
++
++	if (!snp_setup_guest_buf(kvm, &data, req_gpa, resp_gpa))
++		return false;
++
++	if (sev_issue_cmd(kvm, SEV_CMD_SNP_GUEST_REQUEST, &data, fw_err))
++		ret = false;
++
++	if (!snp_cleanup_guest_buf(&data))
++		ret = false;
++
++	return ret;
++}
++
++static void snp_handle_guest_req(struct vcpu_svm *svm, gpa_t req_gpa, gpa_t resp_gpa)
++{
++	struct kvm_vcpu *vcpu = &svm->vcpu;
++	struct kvm *kvm = vcpu->kvm;
++	sev_ret_code fw_err = 0;
++	int vmm_ret = 0;
++
++	if (!__snp_handle_guest_req(kvm, req_gpa, resp_gpa, &fw_err))
++		vmm_ret = SNP_GUEST_VMM_ERR_GENERIC;
++
++	ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, SNP_GUEST_ERR(vmm_ret, fw_err));
++}
++
+ static int sev_handle_vmgexit_msr_protocol(struct vcpu_svm *svm)
+ {
+ 	struct vmcb_control_area *control = &svm->vmcb->control;
+@@ -3906,6 +3985,10 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu)
+ 		vcpu->run->system_event.ndata = 1;
+ 		vcpu->run->system_event.data[0] = control->ghcb_gpa;
+ 		break;
++	case SVM_VMGEXIT_GUEST_REQUEST:
++		snp_handle_guest_req(svm, control->exit_info_1, control->exit_info_2);
++		ret = 1;
++		break;
+ 	case SVM_VMGEXIT_UNSUPPORTED_EVENT:
+ 		vcpu_unimpl(vcpu,
+ 			    "vmgexit: unsupported event - exit_info_1=%#llx, exit_info_2=%#llx\n",
+diff --git a/include/uapi/linux/sev-guest.h b/include/uapi/linux/sev-guest.h
+index 154a87a1eca9..7bd78e258569 100644
+--- a/include/uapi/linux/sev-guest.h
++++ b/include/uapi/linux/sev-guest.h
+@@ -89,8 +89,17 @@ struct snp_ext_report_req {
+ #define SNP_GUEST_FW_ERR_MASK		GENMASK_ULL(31, 0)
+ #define SNP_GUEST_VMM_ERR_SHIFT		32
+ #define SNP_GUEST_VMM_ERR(x)		(((u64)x) << SNP_GUEST_VMM_ERR_SHIFT)
++#define SNP_GUEST_FW_ERR(x)		((x) & SNP_GUEST_FW_ERR_MASK)
++#define SNP_GUEST_ERR(vmm_err, fw_err)	(SNP_GUEST_VMM_ERR(vmm_err) | \
++					 SNP_GUEST_FW_ERR(fw_err))
+ 
++/*
++ * The GHCB spec only formally defines INVALID_LEN/BUSY VMM errors, but define
++ * a GENERIC error code such that it won't ever conflict with GHCB-defined
++ * errors if any get added in the future.
++ */
+ #define SNP_GUEST_VMM_ERR_INVALID_LEN	1
+ #define SNP_GUEST_VMM_ERR_BUSY		2
++#define SNP_GUEST_VMM_ERR_GENERIC	BIT(31)
+ 
+ #endif /* __UAPI_LINUX_SEV_GUEST_H_ */
+-- 
+2.25.1
diff --git a/a/content_digest b/N2/content_digest
index 272490d..3206d3d 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -208,6 +208,351 @@
  " \n"
  " #endif /* __UAPI_LINUX_SEV_GUEST_H_ */\n"
  "-- \n"
+ "2.25.1\n"
+ "\n"
+ "\n"
+ "X-sender: <kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org>\n"
+ "X-Receiver: <martin.weber@secunet.com> ORCPT=rfc822;martin.weber@secunet.com\n"
+ "X-CreatedBy: MSExchange15\n"
+ "X-HeloDomain: mbx-essen-01.secunet.de\n"
+ "X-ExtendedProps: BQBjAAoACEqmlidQ3AgFADcAAgAADwA8AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50Lk9yZ2FuaXphdGlvblNjb3BlEQAAAAAAAAAAAAAAAAAAAAAADwA/AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5EaXJlY3RvcnlEYXRhLk1haWxEZWxpdmVyeVByaW9yaXR5DwADAAAATG93\n"
+ "X-Source: SMTP:Default MBX-ESSEN-02\n"
+ "X-SourceIPAddress: 10.53.40.197\n"
+ "X-EndOfInjectedXHeaders: 18094\n"
+ "Received: from mbx-essen-01.secunet.de (10.53.40.197) by\n"
+ " mbx-essen-02.secunet.de (10.53.40.198) with Microsoft SMTP Server\n"
+ " (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n"
+ " 15.1.2507.37; Sat, 30 Mar 2024 00:06:10 +0100\n"
+ "Received: from b.mx.secunet.com (62.96.220.37) by cas-essen-02.secunet.de\n"
+ " (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,\n"
+ " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend\n"
+ " Transport; Sat, 30 Mar 2024 00:06:10 +0100\n"
+ "Received: from localhost (localhost [127.0.0.1])\n"
+ "\tby b.mx.secunet.com (Postfix) with ESMTP id D1805202BD\n"
+ "\tfor <martin.weber@secunet.com>; Sat, 30 Mar 2024 00:06:10 +0100 (CET)\n"
+ "X-Virus-Scanned: by secunet\n"
+ "X-Spam-Flag: NO\n"
+ "X-Spam-Score: -5.15\n"
+ "X-Spam-Level:\n"
+ "X-Spam-Status: No, score=-5.15 tagged_above=-999 required=2.1\n"
+ "\ttests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.099, DKIM_SIGNED=0.1,\n"
+ "\tDKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\n"
+ "\tHEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1,\n"
+ "\tRCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]\n"
+ "\tautolearn=unavailable autolearn_force=no\n"
+ "Authentication-Results: a.mx.secunet.com (amavisd-new);\n"
+ "\tdkim=pass (1024-bit key) header.d=amd.com\n"
+ "Received: from b.mx.secunet.com ([127.0.0.1])\n"
+ "\tby localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)\n"
+ "\twith ESMTP id oAJd4B0w3R4K for <martin.weber@secunet.com>;\n"
+ "\tSat, 30 Mar 2024 00:06:10 +0100 (CET)\n"
+ "Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.199.223; helo=ny.mirrors.kernel.org; envelope-from=kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org; receiver=martin.weber@secunet.com \n"
+ "DKIM-Filter: OpenDKIM Filter v2.11.0 b.mx.secunet.com 03E3A200BB\n"
+ "Authentication-Results: b.mx.secunet.com;\n"
+ "\tdkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=\"zeCqVAyj\"\n"
+ "Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])\n"
+ "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n"
+ "\t(No client certificate requested)\n"
+ "\tby b.mx.secunet.com (Postfix) with ESMTPS id 03E3A200BB\n"
+ "\tfor <martin.weber@secunet.com>; Sat, 30 Mar 2024 00:06:10 +0100 (CET)\n"
+ "Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])\n"
+ "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n"
+ "\t(No client certificate requested)\n"
+ "\tby ny.mirrors.kernel.org (Postfix) with ESMTPS id 2F61B1C212A9\n"
+ "\tfor <martin.weber@secunet.com>; Fri, 29 Mar 2024 23:06:09 +0000 (UTC)\n"
+ "Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])\n"
+ "\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 1806913F012;\n"
+ "\tFri, 29 Mar 2024 23:05:45 +0000 (UTC)\n"
+ "Authentication-Results: smtp.subspace.kernel.org;\n"
+ "\tdkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=\"zeCqVAyj\"\n"
+ "X-Original-To: kvm@vger.kernel.org\n"
+ "Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2070.outbound.protection.outlook.com [40.107.100.70])\n"
+ "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n"
+ "\t(No client certificate requested)\n"
+ "\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 95E9C13E6B9;\n"
+ "\tFri, 29 Mar 2024 23:05:42 +0000 (UTC)\n"
+ "Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.70\n"
+ "ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n"
+ "\tt=1711753544; cv=fail; b=BlqqvbGwutAw8URHIgMH30kvA5QpTzs/EidijFPe0fjFy5pMt6gU3Of58WmRgtLC5HdAFWEnpY91icLlr7eYlVXCT6T10fN7aOeDR+taYs5wJQZoRJMsxCRbI3XvUrIl79N5OhELjsPxchrIPeXAKecY7/mL+08bVpQeDnTw0Tg=\n"
+ "ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;\n"
+ "\ts=arc-20240116; t=1711753544; c=relaxed/simple;\n"
+ "\tbh=WgjSuePq/wBpCSmmzUyRKNJcA65Zw60gyFDJt37grOw=;\n"
+ "\th=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:\n"
+ "\t MIME-Version:Content-Type; b=tadVHjYp3xUeM32EvMaNxfyZwQQAKHmOqhQQ1XMBg9kHp+gJAurvOy+zAHBwq9zTbGuP/KUoD7IDeUX0jGzYICO/4kQRtEwkvcoBPNOkgirp3exZt3Mu9Ku4Nua7UCArN/3crAiO/9CE+CnJguzPNZzA3jmWHwQHpZ5TSvlUC9c=\n"
+ "ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=zeCqVAyj; arc=fail smtp.client-ip=40.107.100.70\n"
+ "Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com\n"
+ "Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com\n"
+ "ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n"
+ " b=LTdfnSa1VhLOPKJevSaKvpUEM+ibK4JR/D4A9skjpRANTv9ZzuAloP8//3oASD3IdNwrh+OSRxi+9Iwq7hxH6bm72GCC8DmsKuP2rDNCei5s/4ioa7Mt0Rgv1Y/9zANhJ5bTNBTPlIJK6vKpaQdARBJ53qfdQwGiJ48PzqDufYciLrHxwSuTMItPHCXugbz1V3S9i0NMupUEJi2oKI/eevatNkz7jMPkOWb7myAeNRT+nOWgFlh4B1G5PybIF2KIVcmpb5vavCiFv2nXckLeBWe3CjlMqZJgIR/2tMwEHDDQjFAfKr1bkg0JIiZoKD5UYARcmLysUNDUnBW6ZIkQcA==\n"
+ "ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n"
+ " s=arcselector9901;\n"
+ " h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n"
+ " bh=nBu38l4H29f7TDioCJxMHGn5H0K24coARDh1fYxp94g=;\n"
+ " b=Tm4mgAX85xml0c02ymLsi9tk5C41IzMLRHOGWwLnQtBjp1JDzL/nwJeVbnGSnlpvk1POZGeLGRF7uiH/vidV2sDKC96d1S85+P55F8F6RGYjLbU4K7b/V5SjUD5EXMBtRAVnjp0PDyxJrRMJyeAM6BYi8RyT7/DfjMT8G35q9tTlJjCWFv6owwahTlfvcX2HoILzjyrKqGAeDieGHKbYsmZOPTPErMVnPAJ8B7I8++OtLIDDvWXeDmrmLRbHlIemWx0QFJKcVf8k3aQiK3tidiyMuCzDuSs0Ua3O7Upae61Gh50WMtQDWQCbIiKYt0jiqt4Exm8sSBJz6uwIWduLZQ==\n"
+ "ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is\n"
+ " 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com;\n"
+ " dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n"
+ " header.from=amd.com; dkim=none (message not signed); arc=none (0)\n"
+ "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n"
+ " h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n"
+ " bh=nBu38l4H29f7TDioCJxMHGn5H0K24coARDh1fYxp94g=;\n"
+ " b=zeCqVAyjfRxDQher1AZ5EaOKxM5xY4BftFJ208BZWqiiAjXdof/d4iUhbP36IlOA01+A1BhxmrUQU0P14395af+BJG1LpGQu/iQfEYn8iwN6tfjzVCRINDzlsxLRvhiEfBgRdVKJmno9WURcApRABBx4LkwYntw5GkcQBk5RGlA=\n"
+ "Received: from DS0PR17CA0021.namprd17.prod.outlook.com (2603:10b6:8:191::16)\n"
+ " by DS7PR12MB8346.namprd12.prod.outlook.com (2603:10b6:8:e5::13) with\n"
+ " Microsoft SMTP Server (version=TLS1_2,\n"
+ " cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar\n"
+ " 2024 23:05:39 +0000\n"
+ "Received: from DS1PEPF00017091.namprd03.prod.outlook.com\n"
+ " (2603:10b6:8:191:cafe::70) by DS0PR17CA0021.outlook.office365.com\n"
+ " (2603:10b6:8:191::16) with Microsoft SMTP Server (version=TLS1_2,\n"
+ " cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.41 via Frontend\n"
+ " Transport; Fri, 29 Mar 2024 23:05:39 +0000\n"
+ "X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)\n"
+ " smtp.mailfrom=amd.com; dkim=none (message not signed)\n"
+ " header.d=none;dmarc=pass action=none header.from=amd.com;\n"
+ "Received-SPF: Pass (protection.outlook.com: domain of amd.com designates\n"
+ " 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n"
+ " client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C\n"
+ "Received: from SATLEXMB04.amd.com (165.204.84.17) by\n"
+ " DS1PEPF00017091.mail.protection.outlook.com (10.167.17.133) with Microsoft\n"
+ " SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n"
+ " 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 23:05:39 +0000\n"
+ "Received: from localhost (10.180.168.240) by SATLEXMB04.amd.com\n"
+ " (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,\n"
+ " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 29 Mar\n"
+ " 2024 18:05:39 -0500\n"
+ "From: Michael Roth <michael.roth@amd.com>\n"
+ "To: <kvm@vger.kernel.org>\n"
+ "CC: <linux-coco@lists.linux.dev>, <linux-mm@kvack.org>,\n"
+ "\t<linux-crypto@vger.kernel.org>, <x86@kernel.org>,\n"
+ "\t<linux-kernel@vger.kernel.org>, <tglx@linutronix.de>, <mingo@redhat.com>,\n"
+ "\t<jroedel@suse.de>, <thomas.lendacky@amd.com>, <hpa@zytor.com>,\n"
+ "\t<ardb@kernel.org>, <pbonzini@redhat.com>, <seanjc@google.com>,\n"
+ "\t<vkuznets@redhat.com>, <jmattson@google.com>, <luto@kernel.org>,\n"
+ "\t<dave.hansen@linux.intel.com>, <slp@redhat.com>, <pgonda@google.com>,\n"
+ "\t<peterz@infradead.org>, <srinivas.pandruvada@linux.intel.com>,\n"
+ "\t<rientjes@google.com>, <dovmurik@linux.ibm.com>, <tobin@ibm.com>,\n"
+ "\t<bp@alien8.de>, <vbabka@suse.cz>, <kirill@shutemov.name>,\n"
+ "\t<ak@linux.intel.com>, <tony.luck@intel.com>,\n"
+ "\t<sathyanarayanan.kuppuswamy@linux.intel.com>, <alpergun@google.com>,\n"
+ "\t<jarkko@kernel.org>, <ashish.kalra@amd.com>, <nikunj.dadhania@amd.com>,\n"
+ "\t<pankaj.gupta@amd.com>, <liam.merwick@oracle.com>, Brijesh Singh\n"
+ "\t<brijesh.singh@amd.com>, Alexey Kardashevskiy <aik@amd.com>\n"
+ "Subject: [PATCH v12 26/29] KVM: SEV: Provide support for SNP_GUEST_REQUEST NAE event\n"
+ "Date: Fri, 29 Mar 2024 17:58:32 -0500\n"
+ "Message-ID: <20240329225835.400662-27-michael.roth@amd.com>\n"
+ "X-Mailer: git-send-email 2.25.1\n"
+ "In-Reply-To: <20240329225835.400662-1-michael.roth@amd.com>\n"
+ "References: <20240329225835.400662-1-michael.roth@amd.com>\n"
+ "Precedence: bulk\n"
+ "X-Mailing-List: kvm@vger.kernel.org\n"
+ "List-Id: <kvm.vger.kernel.org>\n"
+ "List-Subscribe: <mailto:kvm+subscribe@vger.kernel.org>\n"
+ "List-Unsubscribe: <mailto:kvm+unsubscribe@vger.kernel.org>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Content-Type: text/plain\n"
+ "X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com\n"
+ " (10.181.40.145)\n"
+ "X-EOPAttributedMessage: 0\n"
+ "X-MS-PublicTrafficType: Email\n"
+ "X-MS-TrafficTypeDiagnostic: DS1PEPF00017091:EE_|DS7PR12MB8346:EE_\n"
+ "X-MS-Office365-Filtering-Correlation-Id: 29793531-e2ca-491c-1a60-08dc5044c08d\n"
+ "X-MS-Exchange-SenderADCheck: 1\n"
+ "X-MS-Exchange-AntiSpam-Relay: 0\n"
+ "X-Microsoft-Antispam: BCL:0;\n"
+ "X-Microsoft-Antispam-Message-Info: wFSuaKTvRQfOtdiiZggI/1E9juK+oJc2TRSGXFVjNQH6K1wlm9lAuRi2AABfWovQilmwMVXe1l6T4YxvGuuFifLSCpmtPQOHKjm6x+FajgbzHsEgtMX93cx5A0nttMe/qTI13yLMvcscLwhbPBIdodHYHhzKupmGusDKEUfIkuXqgoS46ONELQ8DpRVI7AvlT51VRqxW6w6SmGYUURqbArpcwis5lJT+cTvGNv8CqPtGPlIy7qfPPfuhv1nCIO9qPPfvEGlgl/Ec+LypJxBtqOEfg2pBgc02cbfF15t+YO5/ue5hwWk2QeyLY/PtzpC6Bue+8ZYMaLgW7iEG237ohWzAvDkoO5JuB0YjPr9df90ZKqzIesdCLnSdeqdDO9BO09jMyX5hg+vOmQmDRLp5MGJZ0CLEXxryinRjW60G57b7aoliHs448u+dW9OMhumg4geX6Ys+dNVlqiUHttX7q1i79Zld8UWIVQxAemTDG5c93reIn0O1bo2r+FTQzyNA60sU19YLtjGrE2CeHrS8UBmvPCHb+dNs/bwEdkpHaysGHJoMSSvphTWHY/GTjqyl61EyVKEXMAdKGOoJEKagRrWl4eg4UKhIYmIVTQyAvx7i9Y2qCbTYlvo+hUPDKlFswU7rnoRM5q0SJo084BAULraS65dFTt/wwZaFs/sG/Pn1sk4sqy3xCY8HS+L4Ka6jAqFvX2LdWGEJVaix3MvIE7CGKTb/0UI+9e3423/5muTUjwuXnqr/9ldh5/UD03xC\n"
+ "X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(36860700004)(82310400014)(7416005)(376005)(1800799015);DIR:OUT;SFP:1101;\n"
+ "X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 23:05:39.7301\n"
+ " (UTC)\n"
+ "X-MS-Exchange-CrossTenant-Network-Message-Id: 29793531-e2ca-491c-1a60-08dc5044c08d\n"
+ "X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d\n"
+ "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]\n"
+ "X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017091.namprd03.prod.outlook.com\n"
+ "X-MS-Exchange-CrossTenant-AuthAs: Anonymous\n"
+ "X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem\n"
+ "X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8346\n"
+ "Return-Path: kvm+bounces-13131-martin.weber=secunet.com@vger.kernel.org\n"
+ "X-MS-Exchange-Organization-OriginalArrivalTime: 29 Mar 2024 23:06:10.8900\n"
+ " (UTC)\n"
+ "X-MS-Exchange-Organization-Network-Message-Id: e82b8a82-3a8d-482a-ba73-08dc5044d311\n"
+ "X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.37\n"
+ "X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202\n"
+ "X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de\n"
+ "X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=cas-essen-02.secunet.de:TOTAL-FE=0.008|SMR=0.008(SMRPI=0.005(SMRPI-FrontendProxyAgent=0.005));2024-03-29T23:06:10.899Z\n"
+ "X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-02.secunet.de\n"
+ "X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de\n"
+ "X-MS-Exchange-Organization-AuthAs: Anonymous\n"
+ "X-MS-Exchange-Organization-OriginalSize: 17547\n"
+ "X-MS-Exchange-Organization-Transport-Properties: DeliveryPriority=Low\n"
+ "X-MS-Exchange-Organization-Prioritization: 2:ShadowRedundancy\n"
+ "X-MS-Exchange-Organization-IncludeInSla: False:ShadowRedundancy\n"
+ "\n"
+ "From: Brijesh Singh <brijesh.singh@amd.com>\n"
+ "\n"
+ "Version 2 of GHCB specification added support for the SNP Guest Request\n"
+ "Message NAE event. The event allows for an SEV-SNP guest to make\n"
+ "requests to the SEV-SNP firmware through hypervisor using the\n"
+ "SNP_GUEST_REQUEST API defined in the SEV-SNP firmware specification.\n"
+ "\n"
+ "This is used by guests primarily to request attestation reports from\n"
+ "firmware. There are other request types are available as well, but the\n"
+ "specifics of what guest requests are being made are opaque to the\n"
+ "hypervisor, which only serves as a proxy for the guest requests and\n"
+ "firmware responses.\n"
+ "\n"
+ "Implement handling for these events.\n"
+ "\n"
+ "Co-developed-by: Alexey Kardashevskiy <aik@amd.com>\n"
+ "Signed-off-by: Alexey Kardashevskiy <aik@amd.com>\n"
+ "Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>\n"
+ "Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>\n"
+ "[mdr: ensure FW command failures are indicated to guest, drop extended\n"
+ " request handling to be re-written as separate patch, massage commit]\n"
+ "Signed-off-by: Michael Roth <michael.roth@amd.com>\n"
+ "---\n"
+ " arch/x86/kvm/svm/sev.c         | 83 ++++++++++++++++++++++++++++++++++\n"
+ " include/uapi/linux/sev-guest.h |  9 ++++\n"
+ " 2 files changed, 92 insertions(+)\n"
+ "\n"
+ "diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c\n"
+ "index 658116537f3f..f56f04553e81 100644\n"
+ "--- a/arch/x86/kvm/svm/sev.c\n"
+ "+++ b/arch/x86/kvm/svm/sev.c\n"
+ "@@ -19,6 +19,7 @@\n"
+ " #include <linux/misc_cgroup.h>\n"
+ " #include <linux/processor.h>\n"
+ " #include <linux/trace_events.h>\n"
+ "+#include <uapi/linux/sev-guest.h>\n"
+ " \n"
+ " #include <asm/pkru.h>\n"
+ " #include <asm/trapnr.h>\n"
+ "@@ -3223,6 +3224,7 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm)\n"
+ " \tcase SVM_VMGEXIT_HV_FEATURES:\n"
+ " \tcase SVM_VMGEXIT_PSC:\n"
+ " \tcase SVM_VMGEXIT_TERM_REQUEST:\n"
+ "+\tcase SVM_VMGEXIT_GUEST_REQUEST:\n"
+ " \t\tbreak;\n"
+ " \tdefault:\n"
+ " \t\treason = GHCB_ERR_INVALID_EVENT;\n"
+ "@@ -3646,6 +3648,83 @@ static int sev_snp_ap_creation(struct vcpu_svm *svm)\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "+static bool snp_setup_guest_buf(struct kvm *kvm, struct sev_data_snp_guest_request *data,\n"
+ "+\t\t\t\tgpa_t req_gpa, gpa_t resp_gpa)\n"
+ "+{\n"
+ "+\tstruct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;\n"
+ "+\tkvm_pfn_t req_pfn, resp_pfn;\n"
+ "+\n"
+ "+\tif (!IS_ALIGNED(req_gpa, PAGE_SIZE) || !IS_ALIGNED(resp_gpa, PAGE_SIZE))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\treq_pfn = gfn_to_pfn(kvm, gpa_to_gfn(req_gpa));\n"
+ "+\tif (is_error_noslot_pfn(req_pfn))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tresp_pfn = gfn_to_pfn(kvm, gpa_to_gfn(resp_gpa));\n"
+ "+\tif (is_error_noslot_pfn(resp_pfn))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tif (rmp_make_private(resp_pfn, 0, PG_LEVEL_4K, 0, true))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tdata->gctx_paddr = __psp_pa(sev->snp_context);\n"
+ "+\tdata->req_paddr = __sme_set(req_pfn << PAGE_SHIFT);\n"
+ "+\tdata->res_paddr = __sme_set(resp_pfn << PAGE_SHIFT);\n"
+ "+\n"
+ "+\treturn true;\n"
+ "+}\n"
+ "+\n"
+ "+static bool snp_cleanup_guest_buf(struct sev_data_snp_guest_request *data)\n"
+ "+{\n"
+ "+\tu64 pfn = __sme_clr(data->res_paddr) >> PAGE_SHIFT;\n"
+ "+\n"
+ "+\tif (snp_page_reclaim(pfn))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tif (rmp_make_shared(pfn, PG_LEVEL_4K))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\treturn true;\n"
+ "+}\n"
+ "+\n"
+ "+static bool __snp_handle_guest_req(struct kvm *kvm, gpa_t req_gpa, gpa_t resp_gpa,\n"
+ "+\t\t\t\t   sev_ret_code *fw_err)\n"
+ "+{\n"
+ "+\tstruct sev_data_snp_guest_request data = {0};\n"
+ "+\tstruct kvm_sev_info *sev;\n"
+ "+\tbool ret = true;\n"
+ "+\n"
+ "+\tif (!sev_snp_guest(kvm))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tsev = &to_kvm_svm(kvm)->sev_info;\n"
+ "+\n"
+ "+\tif (!snp_setup_guest_buf(kvm, &data, req_gpa, resp_gpa))\n"
+ "+\t\treturn false;\n"
+ "+\n"
+ "+\tif (sev_issue_cmd(kvm, SEV_CMD_SNP_GUEST_REQUEST, &data, fw_err))\n"
+ "+\t\tret = false;\n"
+ "+\n"
+ "+\tif (!snp_cleanup_guest_buf(&data))\n"
+ "+\t\tret = false;\n"
+ "+\n"
+ "+\treturn ret;\n"
+ "+}\n"
+ "+\n"
+ "+static void snp_handle_guest_req(struct vcpu_svm *svm, gpa_t req_gpa, gpa_t resp_gpa)\n"
+ "+{\n"
+ "+\tstruct kvm_vcpu *vcpu = &svm->vcpu;\n"
+ "+\tstruct kvm *kvm = vcpu->kvm;\n"
+ "+\tsev_ret_code fw_err = 0;\n"
+ "+\tint vmm_ret = 0;\n"
+ "+\n"
+ "+\tif (!__snp_handle_guest_req(kvm, req_gpa, resp_gpa, &fw_err))\n"
+ "+\t\tvmm_ret = SNP_GUEST_VMM_ERR_GENERIC;\n"
+ "+\n"
+ "+\tghcb_set_sw_exit_info_2(svm->sev_es.ghcb, SNP_GUEST_ERR(vmm_ret, fw_err));\n"
+ "+}\n"
+ "+\n"
+ " static int sev_handle_vmgexit_msr_protocol(struct vcpu_svm *svm)\n"
+ " {\n"
+ " \tstruct vmcb_control_area *control = &svm->vmcb->control;\n"
+ "@@ -3906,6 +3985,10 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu)\n"
+ " \t\tvcpu->run->system_event.ndata = 1;\n"
+ " \t\tvcpu->run->system_event.data[0] = control->ghcb_gpa;\n"
+ " \t\tbreak;\n"
+ "+\tcase SVM_VMGEXIT_GUEST_REQUEST:\n"
+ "+\t\tsnp_handle_guest_req(svm, control->exit_info_1, control->exit_info_2);\n"
+ "+\t\tret = 1;\n"
+ "+\t\tbreak;\n"
+ " \tcase SVM_VMGEXIT_UNSUPPORTED_EVENT:\n"
+ " \t\tvcpu_unimpl(vcpu,\n"
+ " \t\t\t    \"vmgexit: unsupported event - exit_info_1=%#llx, exit_info_2=%#llx\\n\",\n"
+ "diff --git a/include/uapi/linux/sev-guest.h b/include/uapi/linux/sev-guest.h\n"
+ "index 154a87a1eca9..7bd78e258569 100644\n"
+ "--- a/include/uapi/linux/sev-guest.h\n"
+ "+++ b/include/uapi/linux/sev-guest.h\n"
+ "@@ -89,8 +89,17 @@ struct snp_ext_report_req {\n"
+ " #define SNP_GUEST_FW_ERR_MASK\t\tGENMASK_ULL(31, 0)\n"
+ " #define SNP_GUEST_VMM_ERR_SHIFT\t\t32\n"
+ " #define SNP_GUEST_VMM_ERR(x)\t\t(((u64)x) << SNP_GUEST_VMM_ERR_SHIFT)\n"
+ "+#define SNP_GUEST_FW_ERR(x)\t\t((x) & SNP_GUEST_FW_ERR_MASK)\n"
+ "+#define SNP_GUEST_ERR(vmm_err, fw_err)\t(SNP_GUEST_VMM_ERR(vmm_err) | \\\n"
+ "+\t\t\t\t\t SNP_GUEST_FW_ERR(fw_err))\n"
+ " \n"
+ "+/*\n"
+ "+ * The GHCB spec only formally defines INVALID_LEN/BUSY VMM errors, but define\n"
+ "+ * a GENERIC error code such that it won't ever conflict with GHCB-defined\n"
+ "+ * errors if any get added in the future.\n"
+ "+ */\n"
+ " #define SNP_GUEST_VMM_ERR_INVALID_LEN\t1\n"
+ " #define SNP_GUEST_VMM_ERR_BUSY\t\t2\n"
+ "+#define SNP_GUEST_VMM_ERR_GENERIC\tBIT(31)\n"
+ " \n"
+ " #endif /* __UAPI_LINUX_SEV_GUEST_H_ */\n"
+ "-- \n"
  2.25.1
 
-75ddf8157680d9a681b9b19878f7e70f0a92d773cc67df9a978919c28c622eec
+83060adde73a1fccfe298d3c4bef8e0f97ec1e3aacaec9bbea9c1b31d67533c5

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox