From patchwork Wed Mar 5 22:59:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003616 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2042.outbound.protection.outlook.com [40.107.102.42]) (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 551352066C4; Wed, 5 Mar 2025 23:00:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215631; cv=fail; b=XpnsO/ztNlbE9rRyg4RZT/sNfyhfEu/9/waQapXGABeHJc8lSrhYkpPeBKgdPdG8nWZtLtiSzcKH/jxiDPgE+HwI8Bka+TwEuH2c9YzngWvcrXinQo+EQoJXwA1Ya+6VVkNWywWS+XEg3Rlny06v4U4gRqvzojNEfCV1P4cvyVE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215631; c=relaxed/simple; bh=/4/OT1ALXFSX3C2vo5CwlhdXkOxJ16JkPDnW2WjRH/4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=DtqaZtF5UNiGDAI1otB2zKoM03pTvvKrJppYyEU4ZW1fc3iEd9qXAAFW58iuaKeUmdtlozTVGUsIiKRxxM3JSzTBRRhTn9nqe5wUV9yOO4pRjfwTOSmhtMM8cJ+TsE9yF/TOROiE/dGfRQRa8PBhbbuw7hbRWloyIUjG/RKgAOA= 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=D80leKj9; arc=fail smtp.client-ip=40.107.102.42 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="D80leKj9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eeGc/rRWooqlxm08ojLaKlXyaNUZ2t265DrCA43F7xNBJSMHt3hSHAa58wYYp+Xo69CNjUppzp4tkaIeizw3HG0eiZqix9KCqW31dZPExxxcV73niDAt7sNmiMx+gXwWuT/kOr9gfAq7ikSG6Wy1JJ61/ycIm5uOXUBqIr9irOf6HJowjq0xPJeoatw4R86pB5A9qzwZGh7doZVOlIryAxO/BfctQknLQ64FT8TllQpMvM+M2eZDz0kzN2bmA4X6CoitypLC0t3Wl7pKo04aInVe8vEBySF7GuwEpGPDki+tWEQ7if/GrDW20khBp/GzhNEdjjJ2CwwZghg8+nE14w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=iPzld0uPyREdpEwrjDRUCdr4rmcxggdsKjC/l8fKW4M=; b=aUNd2yod9Ln+Iz4W2pAZt8DTka6ZcftE6Q31gSYfcqipXjP1ohxfTd8WGVQS2DtxP6s+y28JqYHS4CHAKTJ+N6qrD6l3Ua9B2gn1mzi7vQARcfm5866on16iSTB9qJ17lVPaHwfCKDlDJsi33WuXeOBjX7Xw5+D21gCaZr1zzb8UjlAkWmsgTElORfo3vmuSI27sEO1AQlPgj8qvHiufdQ1vdgG1T4zeM+ATRrm+aevE7cJlIj2LTHi22d80tzKOjGFalwcfdRksZvnzROtU1kOyBr5lebvYj+MD2oM4owrBu1w1/WfMiJsWTkS+Z/6NTcondyV+wiyDTIvTxW+jUw== 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=iPzld0uPyREdpEwrjDRUCdr4rmcxggdsKjC/l8fKW4M=; b=D80leKj93tM1voBYl+PgVzfm9s0jecHKN2qcVq3qR/XBdAzFIazhO2xaMZ4y2sdDV3En1QHhzjIuUHl+tURTRWH1LhYKbRzMHaU2ylIzUvJK+xQIF98fKeKLyhcR/KuG5qi4e4VbwJk7gKY9djR15Eb516r8tOaf9HLvBwlyUTg= Received: from BN0PR04CA0073.namprd04.prod.outlook.com (2603:10b6:408:ea::18) by DS0PR12MB6416.namprd12.prod.outlook.com (2603:10b6:8:cb::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.16; Wed, 5 Mar 2025 23:00:26 +0000 Received: from MN1PEPF0000F0E3.namprd04.prod.outlook.com (2603:10b6:408:ea:cafe::38) by BN0PR04CA0073.outlook.office365.com (2603:10b6:408:ea::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.16 via Frontend Transport; Wed, 5 Mar 2025 23:00:26 +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 MN1PEPF0000F0E3.mail.protection.outlook.com (10.167.242.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:00:26 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:00:23 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 01/10] KVM: SEV: Disable SEV-SNP support on initialization failure Date: Wed, 5 Mar 2025 16:59:51 -0600 Message-ID: <20250305230000.231025-2-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E3:EE_|DS0PR12MB6416:EE_ X-MS-Office365-Filtering-Correlation-Id: ca97ab9a-cbe7-4c92-11ef-08dd5c3984b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014|7416014; X-Microsoft-Antispam-Message-Info: 4QKRuJMQ3s/kHnfu+gzxXYnwh5VBA/ehqbchIw+KdYAJWyO5JCyN5piy3FtEJDyZ3LW4mg9BgJh+MFfC2JcuU4aD7/WxC1J6JGIiLSsH1jwGWNTzj31Rg4ApvdJtq1lHHmoT04WOLk13OTR5lm+ziOLwRVV4mJCDo8trQ+PJph1j9takSsBmv6mnov2yqbN9PvJYpR80BR+q4sn2iH5bpEb7B31nqfL/6GnWT1RBHnyMDlqYJZLs1qpbvBifWaIUaGWsYZKCw1+hvMi6zCM2eSqxwGIEjcULJo8NYaGaZ5d2euDH1Sned48xC/4av+QeSbocxjYmHSuagO3+lzBag5ZFi+jhfDTGliSRRC3NxBIWZPnuJGoam3k1jb8Ibpvy2VNt7OJahwB6NXhs/HXICFPVL7bvlbzLGvLr4oQFCL54Kmg7iUbZzcVw5Ncumn8Kc8YSUgh1Hatyd0/wUuW+sIz/Obp58Myusdg6F85+C81pElIzEQGkN6K61pn3/+nHw5uyFa8w3WxviOJK2gmkjH/yixZrZmkAGYaDpUNXzho7HhsHtAsK2KEgYMvyBPckYg6Jq1p9nvca3gN1hR/nl9yaRWzQGeO87KiiL/i5T6Q+CbvKvZba6oZhN1tLGqmdHy/5GSaAtB0mG4QEndYFP8+G0pgxeC5SX3f6xrNb0H81RDJgVTlzBN2KmbVPwKoglK5DyXwMyOQT0FhUF+gjecLYi6XxAljeZxfWfIhvMPrmR2C2dn3qGZM7rYz/wY3ZT+i4QTmVaA2JwtU84aBnNXS0Vlc6CKUCaUUFhTER/njfHlP4evQ1eoldXdUnkcG/6eDfDCHkcBvZ4nRMASNJJSFmchKGVjByNOlZd44QC+eENv8+5nglIleN4Dn3OXLZ93X9TT6G9SdKzQls5uFL4F+40E8DUmNL4LQxC0LnLmpQUD/v8mXgG0PJSzkKDjBfX3qouJ1e5PPL4MivHufo0YmiDzuRtXTPzxiLkKHOah5Y1Ecym9ISjfM+TUZsDfFTeosWoL6U8q7UnNao/5+wralEnssoWF2CnttPxNCWr4ctC3Tjccsv0FrS6zYEEQSReHupjGNAQkIjtHj63+TZG7/zZ1DF43bGfCur8SLtH1bQqv5oHyaozT/nnsds+HDZG8LvTV9l1FB7Y1nAHOMUlx5hSvP4D9ZfSwRHMzquBrD4WLS0nIXd4AOH+aOVvCsuqdDePAp6p4tVDaEbhVHNgmzMNaaY9OD949GLZKW3D1z21wTXq8B/7KSzyZryhGKijLRLOKKQCtjePn3Q/gSyn9xdi+NoggVMk4YzxlVbC12Lc840f+hor80uXYYfNWKZy16wLqhf2K/6CL7n2//pgUFHg6fZaK/oMU7LDsA/hKEZ5iW8Xo6edRUwuxo0f6KRP1WSSMRi8fFZVoTrezV5+Lc2Aq/tbenw5leJRmkeeuGaVIOOyBn+twXnxVCupxls42HlBFOjBzOi0APGHLxukO8bTum2Rjvy5/yHmSsZ7yc= 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:(13230040)(1800799024)(36860700013)(82310400026)(376014)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:00:26.5425 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ca97ab9a-cbe7-4c92-11ef-08dd5c3984b6 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: MN1PEPF0000F0E3.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6416 During platform init, SNP initialization may fail for several reasons, such as firmware command failures and incompatible versions. However, the KVM capability may continue to advertise support for it. During setup, query the SNP platform status to obtain the initialization state and use it as an additional condition to determine support for SEV-SNP. Fixes: 1dfe571c12cf ("KVM: SEV: Add initial SEV-SNP support") Suggested-by: Sean Christopherson Signed-off-by: Pratik R. Sampat --- v7..v8: * Avoid exporting yet another API from CCP. Instead query SNP_PLATFORM_STATUS to get the current the initialization state within KVM (Tom) --- arch/x86/kvm/svm/sev.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 0dbb25442ec1..e21c3aa6f592 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -2950,6 +2950,32 @@ void __init sev_set_cpu_caps(void) } } +static bool snp_initialized(void) +{ + struct sev_user_data_snp_status *status; + struct sev_data_snp_addr buf; + bool initialized = false; + void *data; + int error; + + data = snp_alloc_firmware_page(GFP_KERNEL_ACCOUNT); + if (!data) + return initialized; + + buf.address = __psp_pa(data); + if (sev_do_cmd(SEV_CMD_SNP_PLATFORM_STATUS, &buf, &error)) + goto out; + + status = (struct sev_user_data_snp_status *)data; + if (status->state) + initialized = true; + +out: + snp_free_firmware_page(data); + + return initialized; +} + void __init sev_hardware_setup(void) { unsigned int eax, ebx, ecx, edx, sev_asid_count, sev_es_asid_count; @@ -3050,7 +3076,9 @@ void __init sev_hardware_setup(void) sev_es_asid_count = min_sev_asid - 1; WARN_ON_ONCE(misc_cg_set_capacity(MISC_CG_RES_SEV_ES, sev_es_asid_count)); sev_es_supported = true; - sev_snp_supported = sev_snp_enabled && cc_platform_has(CC_ATTR_HOST_SEV_SNP); + sev_snp_supported = (sev_snp_enabled && + cc_platform_has(CC_ATTR_HOST_SEV_SNP) && + snp_initialized()); out: if (boot_cpu_has(X86_FEATURE_SEV)) From patchwork Wed Mar 5 22:59:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003617 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2041.outbound.protection.outlook.com [40.107.96.41]) (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 0D5B541C85; Wed, 5 Mar 2025 23:01:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.96.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215664; cv=fail; b=Dg9fS2CuSFpbMaqWTIkjNX9vjlDYzoq6UhPwj5k70dQnDqusIMH38Kez9yhYLwvAMIbraukrC9nq/1pjyT53XuXUppdiTFKecF2h64HSDtkrtnXkeZwyLXf4KHjSirlPowVKAyV9klH8peioVOPWTcMfwNirGk7EKIwQsjjrjMA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215664; c=relaxed/simple; bh=98lLaXJYMtWt4aMP17S+XOWQAaIU4ZcqBAYHNEJcTDA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=svThKr4rzbk4NcF6MmMN4K1HZCaMiyY9hIGUsmCF7waDM9ohUPelKPnZTb6FhbA5113D0LiNUtdajuoG3kximsJ7Kg2ZolPQFagtEK5NROISNvWHm6AZImWEGMMJJhZCiAA3CPlVYYRfHacZLpd6gva+U5ajhEnIy8R3FskQBgY= 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=sfLEAkj6; arc=fail smtp.client-ip=40.107.96.41 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="sfLEAkj6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PDE4xQaoLR8ULAf9A0QlL1KUemGCSg2kDzIrVeXVRCSzYDD9fKf/vSDONs0DonJqDBKaA9ulQ3NYavMDRPskK7ar0A1jCx9n4y0vmGLZiU/GB6+Jyyslby0136vVQq+IcXZ9Av64G0a/UTQ1RjOgIxNXj7RAFtUTd+j6Lypj96zVJ3zhQsanl2fY4VnQZPv/7RjlBte8jGTpSpu+QsbWcBpzu3tYg2a/rYbpKtk4+TnoCkmasjhXHBittsHH3WLDqvJP/Hk2yzlRxbZX0BsONHDwSDZJfdAkY5CPWhYxjRc5lkbx03CoXK8lUrpavmXcLlA2b/G3dsIMKqo8nuHp3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=lBE7zHekxYgxiNuv+IPzAsIVxl7ku2EBHE1X1i3NUfc=; b=a/YJ2NkdeN4jpXmqXKswh7rU9ZnybTmGu5SCddHTxtkS0+Pb+QWRzjTQiMF0ITsQtt9j8T3jAWkVwX4wLYV8Ifrlkvqj2S2l15MEPZPU38ImPVa0tM6utm6wDVD9QuhwuuUAxeUkKBe8rP+Qk/a7UoYjQrOfgzfqbC478s+PF+PWrGHhCOvrKkRsIWDgwkPOLYPRBWTAaI1+kUtwFVAZ5y/bh2Cr/p9CYDAtaop9VV2Km0szuk1PdmH10hCI8ZzXR9PN8EVeDrso1Hx9P+DIyLvpOhgeSkSgoWOY/FHQYpsOF5Ouq6gS5qHv+G/0s8UicUXVpEYDhz1lTXeGoHft9w== 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=lBE7zHekxYgxiNuv+IPzAsIVxl7ku2EBHE1X1i3NUfc=; b=sfLEAkj6duyiR6M/hjp+HD1rejDCVPrAykJAYT4itHOHNbYT34DxwnMdAvG7QHjuzYXLtzXyxE6mzBjjN0nTv4SZpmyWXCl169ud7MwT9QzYaxguWUzZEM3FeRwtoldkO+qEVyPPJsKm7UdouNzlyaPuCQrQft/GkKKPrm0OGIE= Received: from BN8PR07CA0015.namprd07.prod.outlook.com (2603:10b6:408:ac::28) by CH2PR12MB4055.namprd12.prod.outlook.com (2603:10b6:610:78::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.22; Wed, 5 Mar 2025 23:00:57 +0000 Received: from MN1PEPF0000F0E4.namprd04.prod.outlook.com (2603:10b6:408:ac:cafe::44) by BN8PR07CA0015.outlook.office365.com (2603:10b6:408:ac::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.16 via Frontend Transport; Wed, 5 Mar 2025 23:00:57 +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 MN1PEPF0000F0E4.mail.protection.outlook.com (10.167.242.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:00:57 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:00:36 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 02/10] KVM: selftests: SEV-SNP test for KVM_SEV_INIT2 Date: Wed, 5 Mar 2025 16:59:52 -0600 Message-ID: <20250305230000.231025-3-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E4:EE_|CH2PR12MB4055:EE_ X-MS-Office365-Filtering-Correlation-Id: 8a1d4131-03bb-4ce0-6a49-08dd5c39973b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|7416014|376014|82310400026; X-Microsoft-Antispam-Message-Info: vQl4ahr4A4Fc3zMhYyafGxLNZfDPUfDC/QMJdfEstRJLQa64lyZf56zxUjCNlBWI6fgbDeU3UoWMfcbYvkV8TQTzhs7Uw5y8Za6ZtOchNde4CmeKArpv7wQI/d1AK65jAchl6Kx2SKcYKnSA53Z8tPwAjPTu96rL4eL4Lxm5S3gylSl9HxPy0knHW4YzAcLZqZuaS/gxH/LaSo2+sATwDiqYnIBGsOhDa98mXeXjZ5aoVOBNQYxeT9LbRtCUr3DlKHqwDaKLyX7Af7qPiBjn/Y3q5r5lfXaTnKAtFLJZwJWjKdN512qnNZNOBu9We15bghx4BaF6wZIvbTotHpYbYjb2ocnlbHJqhXWFPDx6x7WF0iNJ+BMjA5BmcNDYwZb7RIhHtQgMQdsqpL9mAuv+WgT5aK1MVCofFrbIdFyFdE2/n86dyyZWUwL8fRxqTM3cj9LoEkBIsLAZuI7WE73QoEnRb+IH651tYu0+EzP8xJvFxnMl4SgS5yhT+mOP0Un2Zjv6Jc4FOZuh8PuTlRjGgMDjH5Q34s+dKtth9LVjS3znjuMn3RR4bAHI8ZYMFy0uXMcXjmoUQbCpJ+CPG2h7Q9OhwQdw1TpgB31kI+by79+20qKurOr/6hcf969nqiSgcdncPfyo1KKT3JzFrmGzTr/3SXaCfm+ehtIK+2B7I6Fy0/HW1ZkoLe5j+xHCCjFP3PEVNDLDqKcIofEpj7ZfG7a1brus5HGsJ40eLw9vLN0U26NsFCASAcTWRbvRK45navC8jOttnuljrmIH8tilbtwxL6ljD6mXnmemfhtVMTx5gXx6qDtQatfw2zPI9VfhFYDYNysAJvFkgtFtJnK0ch1pCsBj5rgqJx6mYYBwldcuLtz8Rxxx7qiMhzH9JpL0QazVa5azkGhjX5/GuXa6RYVnlPrDDUvkp8VePlamlsjGoCaOrqyvOp8mn9Qj3Ujs6wWhwlfH2DxdgdjsN0HeUbE3yxrHHaMeRwlHssEMU7+tS7G221v5NiJx64xlYDx0Bue31N22FXcCxjm1+BWXZ1Z9K67esz2j0RvZULtSPj/JOx9oB2+zVvmsKRblawQKix99YCACgicRxXJ9XM6pGi/rcQptfJqH5MEyOCWubTnXCZ/lQKrHkhZREhIcAie4XR9IQVQUa1c1dwzoUDdtvatBENp/BW/dtsLJMVnDnYQF76hIovV2v9K1pp9n71lHcF2dMYXo7nmz9iPGInNrcqhVDvAGHaPwoUd5epsTRCSGv7sYHADJqZueHUb7M2RcSiJ8bZxaH6ECzaeNLW8HZX+paY7KGgvUSXzuNqe4/nbx7LyPsrq1U/QjFkT5tfuJu1FjPFVGq3iEToMvJoY58g0nKQv8IB+IdfNJfS3Nxpah6vFr7QX1NvwiEb6m/4DxVddaQMS7q6ToZ8RDAhzJZEoeCrX5xLNA8kwaI5YL9TkW5WSplMEPkvQjia+k70JD2Z43CahzLCGyDE4WEXy2xolXIbLT/WbFTIDs0IU1svI= 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:(13230040)(1800799024)(36860700013)(7416014)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:00:57.6154 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8a1d4131-03bb-4ce0-6a49-08dd5c39973b 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: MN1PEPF0000F0E4.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4055 Add the X86_FEATURE_SEV_SNP CPU feature to the architectural definition for the SEV-SNP VM type to exercise the KVM_SEV_INIT2 call. Ensure that the SNP test is skipped in scenarios where CPUID supports it but KVM does not, preventing reporting of failure in such cases. Reviewed-by: Nikunj A Dadhania Signed-off-by: Pratik R. Sampat --- tools/testing/selftests/kvm/include/x86/processor.h | 1 + tools/testing/selftests/kvm/x86/sev_init2_tests.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/tools/testing/selftests/kvm/include/x86/processor.h b/tools/testing/selftests/kvm/include/x86/processor.h index d60da8966772..6f63fd10bbc6 100644 --- a/tools/testing/selftests/kvm/include/x86/processor.h +++ b/tools/testing/selftests/kvm/include/x86/processor.h @@ -199,6 +199,7 @@ struct kvm_x86_cpu_feature { #define X86_FEATURE_VGIF KVM_X86_CPU_FEATURE(0x8000000A, 0, EDX, 16) #define X86_FEATURE_SEV KVM_X86_CPU_FEATURE(0x8000001F, 0, EAX, 1) #define X86_FEATURE_SEV_ES KVM_X86_CPU_FEATURE(0x8000001F, 0, EAX, 3) +#define X86_FEATURE_SEV_SNP KVM_X86_CPU_FEATURE(0x8000001F, 0, EAX, 4) /* * KVM defined paravirt features. diff --git a/tools/testing/selftests/kvm/x86/sev_init2_tests.c b/tools/testing/selftests/kvm/x86/sev_init2_tests.c index 3fb967f40c6a..ab3dd11ac163 100644 --- a/tools/testing/selftests/kvm/x86/sev_init2_tests.c +++ b/tools/testing/selftests/kvm/x86/sev_init2_tests.c @@ -28,6 +28,7 @@ int kvm_fd; u64 supported_vmsa_features; bool have_sev_es; +bool have_snp; static int __sev_ioctl(int vm_fd, int cmd_id, void *data) { @@ -83,6 +84,9 @@ void test_vm_types(void) if (have_sev_es) test_init2(KVM_X86_SEV_ES_VM, &(struct kvm_sev_init){}); + if (have_snp) + test_init2(KVM_X86_SNP_VM, &(struct kvm_sev_init){}); + test_init2_invalid(0, &(struct kvm_sev_init){}, "VM type is KVM_X86_DEFAULT_VM"); if (kvm_check_cap(KVM_CAP_VM_TYPES) & BIT(KVM_X86_SW_PROTECTED_VM)) @@ -138,15 +142,24 @@ int main(int argc, char *argv[]) "sev-es: KVM_CAP_VM_TYPES (%x) does not match cpuid (checking %x)", kvm_check_cap(KVM_CAP_VM_TYPES), 1 << KVM_X86_SEV_ES_VM); + have_snp = kvm_check_cap(KVM_CAP_VM_TYPES) & BIT(KVM_X86_SNP_VM); + TEST_ASSERT(!have_snp || kvm_cpu_has(X86_FEATURE_SEV_SNP), + "sev-snp: KVM_CAP_VM_TYPES (%x) indicates SNP support (bit %d), but CPUID does not", + kvm_check_cap(KVM_CAP_VM_TYPES), KVM_X86_SNP_VM); + test_vm_types(); test_flags(KVM_X86_SEV_VM); if (have_sev_es) test_flags(KVM_X86_SEV_ES_VM); + if (have_snp) + test_flags(KVM_X86_SNP_VM); test_features(KVM_X86_SEV_VM, 0); if (have_sev_es) test_features(KVM_X86_SEV_ES_VM, supported_vmsa_features); + if (have_snp) + test_features(KVM_X86_SNP_VM, supported_vmsa_features); return 0; } From patchwork Wed Mar 5 22:59:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003618 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2055.outbound.protection.outlook.com [40.107.93.55]) (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 D33F8205E22; Wed, 5 Mar 2025 23:01:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.55 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215680; cv=fail; b=Lr5a1E97oo0IU+LeIfZJEsU3MgRzwMkEk0MYz7VFgUcRrSBu4zII5J7gngF5xFGuqOEnVEiqFhu/CWys7fpH/uKkS7bBrvtDYbJ3Q2N+Ghp/X1TFmBMc8smZP4nNKg9ghskQG9r2F4OpO/eUknldeoB4dU0aqe2YQ5FM5sMsFLk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215680; c=relaxed/simple; bh=ZDmrcdsAlkFz5FjlETMqbuVEt4sdShCPnaXBqw2ejKY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=crlfDZ9HbNijcDyvopDC+9iuo0pVtRjUKsvWPfISwJtfwuXEoAGHqRPj8XLpDXhzGmy5JjECLOXEe/svdQU81VoUePu4NiOhZkvMz3xn8WbNyl2cdXDInKJBbV5z2Q6WLw1KufohXIJlZf2kU+v76xcHVNT+tnu8JUJ/sBGU4P4= 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=2ocpoJFo; arc=fail smtp.client-ip=40.107.93.55 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="2ocpoJFo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bMGDbnFn3ZfK4qCvR1kyg1Zj2Ns0bj2SgGT0QgiNWULaDyAUHYSRGOePtLFp/9kIUaTMozEpWVr/4VbksEI+FNsGDAB0ai7F1z/lFILhuVSXeMGtTGmIGYCrwD2k8EX5xlE1qFPnf/635FdYKp4QxMJRFNbBGAfGUaCJ1isSMgT87g0EVSvi3/lgrRwZhm4r4Twg2awbmAjKih9sc6bWU38zhigp833fnE/0DD22Mjna9tiAC3FtqyiKlnHD2Ngi6OLjDjdmajJexXRdDhQTx8pcuY5JiKKlibBaW4McGTaXwh2P8ASrrEMtYZVwkh5QGNppZ/Erc2lXiZYtNdAMrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ZSLJ6UUOZ7n/LI5/3Ddu8SU4NNJReLU7zATinl/ARwk=; b=gVceQUB2eK/6JLJfPFrxjGn+TgV3Duv0qdMiJSgADpcRenPHj4CHlaTS/7oV0K39uBPSlRmqXBQto3eHcQS5JevYdm1aJo1xiohd4PtVuz8Rj5yEEaEdQNwxb/H9/DeIR3XbRtt6TxXtuXaNuAreBJ9WpW4yh3yfwhwT0CTh2vLNBnw8AsWCqgiiAg7wZo59Uikrelyl73NJRTYM65HQOvx+ZxC+O04bcE/oQx4jADM+7pOzcBVOAnL1xUmfi3An9yiPJLupz8Iuqv8OaSLGy+vxvwuBqS1UHrX46yDtYNJ5g4aMik/LM6eENdXEL5QrK4/m9e7jye1IULl3uWY1EA== 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=ZSLJ6UUOZ7n/LI5/3Ddu8SU4NNJReLU7zATinl/ARwk=; b=2ocpoJFof01wcb8HRxMdtIpoJ+eoDRrqcmKRYa5NjyN0hJu4FlmW+cUG/bWzdDBJlbN2x1EVfr1eivtOnnKD+mKNEYMocYkn9S3JoV2H/7gfwKzcjwtteSBIItQVqsOd8l9VvKLEl1fL82pTgj7tXcfSuCHGCiAzDjxkn8Z0ODQ= Received: from BN8PR07CA0024.namprd07.prod.outlook.com (2603:10b6:408:ac::37) by IA1PR12MB7541.namprd12.prod.outlook.com (2603:10b6:208:42f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.16; Wed, 5 Mar 2025 23:01:11 +0000 Received: from MN1PEPF0000F0E4.namprd04.prod.outlook.com (2603:10b6:408:ac:cafe::4a) by BN8PR07CA0024.outlook.office365.com (2603:10b6:408:ac::37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.16 via Frontend Transport; Wed, 5 Mar 2025 23:01:11 +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 MN1PEPF0000F0E4.mail.protection.outlook.com (10.167.242.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:01:11 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:01:08 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 03/10] KVM: selftests: Add vmgexit helper Date: Wed, 5 Mar 2025 16:59:53 -0600 Message-ID: <20250305230000.231025-4-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E4:EE_|IA1PR12MB7541:EE_ X-MS-Office365-Filtering-Correlation-Id: ce6d52c1-2bd1-40a9-0fdc-08dd5c399f58 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|7416014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: rM6zZXT+0RhNEaNwelGKWDTTXfZoFcg2l5B3UdTfJsB25pfvhfpL2pmXj35IJ5Nx+TRzZm9Jwc0G9waf46WNbHbR3TFlWtuDZby9fmyubvMYnEEGoKX8LUo2XJp4vfdLcDw9Bqr6BybFadwd3Gd3hDBwmvuudVziFG72AH0hgyWqDyo66Pl811uP6zRfOwuQgBUlfkT23h7cBnpWJ+3MuKox4etMvyoj7uqjRTJXjEihvMNVbQPnFnVUwb/Bgjlc3qNBzwILWVQiO097l4h2ne+npKCzVhCd2vAR4g1yND/17QiWx87nnbaAv9JwHvraa2Cqbq8q8rGJtCMXc+XpUxGNeGbtx+tLSC1qnr3CZ8nKU9J67PINTX3rSncHVi5Er+19dDwzYhuUK1n8EwIoUqLdrVFn47Mpjxl6p/8ym0ezFPws2mU0m7G5B3XacT0cb6mQZ2tvKqvw0yhwwV+xfFyuiKzK8iKXtM6YSdKAl5xAioouHJsTSSKMraIDFifjDs0P55ezVsxbUOgbo224QJWGUZoF8s47Vgp0G5tCPXks4crxK+DiCAcr151GHatWid60iyYxhJRd+7HJ6gg888trsK4rAM778TVQMwvTmVQpBpIe2tKF+w1CVAkSr1qzfT3K4iQLvn2h8Z1S2x90vWBA8JC8DXmUtP7VD6hyfE+lelXNEsf4Lmbe2KQUL5CZnxM7n2CzstdwlqJuXXU+QLHOLG6nLx8YEdPSEfxZpiTqXukBKYy6ygnkOJKI6tc5HR3bHGx/KQIt4C3MxxqWBM1B2YWUPKLgQiejj2PvWE4kMaKv1uWw7AdCyf4Tj6Sa0/HVIqAC7K8T0VdkmRCOp4v1VGK+KlkCiUHIR9oBHB0DkmByiJEkoPY/+51CsUzfJZAGEzqXsEPrkaVpjk6LN5rmMylQthlml9R6Gx69apK84C0+yWOSENXhytFvOsU0TMYKhe9gWIu4eZeU0d1QOyfVSqkizn9s6FOhOQr1TH8tDIUupeNcKuKJ5EQ7FNpLzJ3iSM7CYO3tAwl7bgyFmV3phgWN3N9Akycaf96k7a2bPuE/WkBJFanuuMO5zkuWGfGsUdz6RvFRT4jC/P2qlQ9d7ulynrFZzZAPEvv//jabvQORa7oNuhLiCTHiNNxY42okX9cbNUyFWC3zyEhz/wUVRD2qHUOlopjZZ7ogPIGN+eGQsWzBT9WPYv+jFAYsSEKH7iETeErAePXKn59+aMRDHURKKLHNyn60TFEaNWEzD1zKQmydOjb397BfLAhfb6GYYDE/jx56ES3K5wCjBev8bs7FrYu7714YNqvfXHMxF5eqvkrIz5lVeusBs33foEfhwZblVveCDL+h7NSx84oQ/RO1UFlX2Ek5ns5ILadb2hjIXRH/JLtXuMS5XklLLrpAL3N6UmenKIhtrT4FxZJHqLEKxzMAFSVtoBTqs8DG3gA3cA+Kp8LHAQ74de4b8opBEGHW0YkMw8gx+5sl1+95gN3Vixz+4D1Lz/geXgg= 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:(13230040)(82310400026)(376014)(7416014)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:01:11.2405 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ce6d52c1-2bd1-40a9-0fdc-08dd5c399f58 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: MN1PEPF0000F0E4.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7541 Abstract rep vmmcall coded into the vmgexit helper for the sev library. No functional change intended. Signed-off-by: Pratik R. Sampat Reviewed-by: Pankaj Gupta --- tools/testing/selftests/kvm/include/x86/sev.h | 5 +++++ tools/testing/selftests/kvm/x86/sev_smoke_test.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/include/x86/sev.h b/tools/testing/selftests/kvm/include/x86/sev.h index 82c11c81a956..3003dc837fb7 100644 --- a/tools/testing/selftests/kvm/include/x86/sev.h +++ b/tools/testing/selftests/kvm/include/x86/sev.h @@ -71,6 +71,11 @@ kvm_static_assert(SEV_RET_SUCCESS == 0); void sev_vm_init(struct kvm_vm *vm); void sev_es_vm_init(struct kvm_vm *vm); +static inline void vmgexit(void) +{ + __asm__ __volatile__("rep; vmmcall"); +} + static inline void sev_register_encrypted_memory(struct kvm_vm *vm, struct userspace_mem_region *region) { diff --git a/tools/testing/selftests/kvm/x86/sev_smoke_test.c b/tools/testing/selftests/kvm/x86/sev_smoke_test.c index a1a688e75266..6812b94bf5b6 100644 --- a/tools/testing/selftests/kvm/x86/sev_smoke_test.c +++ b/tools/testing/selftests/kvm/x86/sev_smoke_test.c @@ -27,7 +27,7 @@ static void guest_sev_es_code(void) * force "termination" to signal "done" via the GHCB MSR protocol. */ wrmsr(MSR_AMD64_SEV_ES_GHCB, GHCB_MSR_TERM_REQ); - __asm__ __volatile__("rep; vmmcall"); + vmgexit(); } static void guest_sev_code(void) From patchwork Wed Mar 5 22:59:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003619 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2076.outbound.protection.outlook.com [40.107.92.76]) (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 0D259207A23; Wed, 5 Mar 2025 23:01:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215689; cv=fail; b=ssdAp6eEwWY/MzYbRCbTy+5Uu24F54c5Z8R/4OMU9vXTyJQgoD/+7gNMYMIwiv7srqdJuzA2gNRp4f03iZlI193XCvT9xicIS9llMv6fEenPx9litlgTQ7LrKdpXGmdpnhydmbqYSjbExIr6xci38Vzb6vmOMakXwb54+AaD6yI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215689; c=relaxed/simple; bh=WlsAbaSPddZ3CkEgeFPrMsin1PTQVo15lUiSgpsZQKE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OqTaHYcIp2HN0Ej58xIx5QnHazL0Fe91tTLf7JGXf/baPBNovt7M3JLo1AHuxzjg99SUliog3kGiku+Hzx5npoRXD046Lynusa7Tgi7rn9J+qHUn5hoipm6a99S26y2WEpc8mTZcsPDrqMxZqQY08QdpjX8GYuWbzIS7yyjbeNw= 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=utqj5hMN; arc=fail smtp.client-ip=40.107.92.76 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="utqj5hMN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tqwY1sOcrTNNFJoPrroTyDv+/fhEpj2h1pipIH6UbY5tYR5pguyXvtd0KlNA2YNlC+Dz8sIV9yHP5exnS8wCt2L9cLUxX8xzwCeiaDCpmv67BLjwRM3+8JOwGsqfBLDoaVfju8Ghec8IE456l1PyJ3IWY/B19lyM/e9AYixq72ZaeF+ym1xz2TMY4ceO6tql+zMDLmtQlNRzsaiyVhArbjtqowyljzH/JCm+CbQitQ1rOODAKzOroFZJvZRvf7zdWepmHzl01Sb3OVFtT7GUW+xoUlWxOU+epv/3CSx0IzYwU3Pp+0TOTUbO6FNPT3lgkG7SgTinFs6SbMteUm5Lvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=tjbCeIzgdbQNBkOx88nh3nWgFZBMP8RIdEU/gh9qBuA=; b=UR3uH+LLb4+PpANOalmteGqkQ2FyI6QO4vSP7TGSC+RbD32Z0aft/DDx7sDJKcY/5OIJKhkX1KdKs8i7l+HaWUzBxNF5HwiYKeiVnNPDE1hgJ2wXhNozrJBaSTR6uXPVgzmIAAcksoUGncIA15mdHuSQI5/eukf/2NHNG8dEnEzc1lpyRg1JYnseFV9O5TBnWX7p4R4GukVZ+7yLmKqCcbzZ1AKzqiMGdcYIatjsPvznjoS5/FwWHEPsr+M8Z73DQYlnxTt8Nl8cjqs4wiCTsEoKZ4VNgIuJW+37HiBrBa6vjlsuIJOcJ+ySi0FBX9Pi7SDJgeVZEEf6tRMCAfkY1A== 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=tjbCeIzgdbQNBkOx88nh3nWgFZBMP8RIdEU/gh9qBuA=; b=utqj5hMNujZOzClHukNkVgpqSq+xkeFXvH5nIYkjy1HSbkhzHKcomih7TI3JYHx8W5pTzVxGF4XjisNsD+an2vwgOwDB0HOfW0YK8MA/uuwvsgTZ1x/I3AM8S1vzwP8y0H8vyaAsBDv7gtc/YAUgRaKxiF4ui5HeP0KBLLqRALE= Received: from MN2PR05CA0029.namprd05.prod.outlook.com (2603:10b6:208:c0::42) by CY5PR12MB9053.namprd12.prod.outlook.com (2603:10b6:930:37::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.16; Wed, 5 Mar 2025 23:01:23 +0000 Received: from MN1PEPF0000F0DF.namprd04.prod.outlook.com (2603:10b6:208:c0:cafe::71) by MN2PR05CA0029.outlook.office365.com (2603:10b6:208:c0::42) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.16 via Frontend Transport; Wed, 5 Mar 2025 23:01:22 +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 MN1PEPF0000F0DF.mail.protection.outlook.com (10.167.242.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:01:22 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:01:20 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 04/10] KVM: selftests: Add SMT control state helper Date: Wed, 5 Mar 2025 16:59:54 -0600 Message-ID: <20250305230000.231025-5-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0DF:EE_|CY5PR12MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: d8219be7-b1dc-43ac-51cd-08dd5c39a651 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: SiXOgOxdfk5oXhzhIVDc28bd7Ru/dPpo4R8XDsfuv+UA1djnr9URxrpiH4qmfyrkyyvSj882VgmikA/l9wP51Xrkg9jaFWU6CZsnd1oCGBTuirv/G73lZTE0H6DwLlxt2X1aKdNdByqlNz3Ty35fqzZAU2jT39gy5wZ/phNObyjafKzpDzFSBR0eUx9kae+I5SkLsaMAPz1VpgRBFcSvxibgdGPcHAltbSGeXeZQLfDNRUWwhx4bijvtQgjDcg5zfdNHE+0ka1DzpnUDazALNPUqiYJbigq0YijD8+uSxXvvOxxfofy510b05uKmI4KHRkYwsQy2Qlj3V3Vm0fmsD9/EW7wTt2/wt4uqtS/IeZy9NnjlmX78ADkhWSxGB2aMYYnni1GDCO3lqpUZtGcqdAvxiyT2Pqe3g9j3t6S/kdhRGrJG5C4sOEZ8o7xDKQYQzh5iJFTl1K1V9JGPhTR46KlkgoyBvs2F5fpplbDbyO84QSnJ5Q8yFCseccyalNfVsSbUVUcQX+mMn8z/e6j/3B1Z0M5c0r4QYZ5iFTb0zSRRfDu6EdIFO/tUF/MdjIYAsQZmxXsfAbsSmubrUNKKiN9ho9k5VOFK7Ciz3p4iMQxa2GUJ4enDgqzdZbntylt2OOHGKDbiiSy7/Zbw77CX1FphQztQzX9/WWHnTzh+RgQCpy40azvCdnNHwiertLHGKYjEfmGVN891H0F5Dyavg8kZeVpxJfO3PmZvdYPvHyjPq9aCe06+XBM2szyXnlM27HGd19uoufDDBMvma9a0d+A6Yq7b4Nvhl0z5HMm5YA69YVj8b0VgN5pBp0ikAPHURgueEC7mk1WWvcZRD4rk+3yfSJ7uurrelMkqxm/Ex2UHIDu31tnmgEc7feT8Xp6f21yiF3BzftNJbYutgEwWTk5NwAhN4rVAXsuW2NqqF91MHi+iXiYORHXw6Bzcazic/LjCOAoJTsNoZR9NE3id4r1qrPph2fbWmMzH5IcUfmAayEYc0vNisbgMa3gyYuXmUi0JNkhoZnCehx+k95jh+iVMwjamxusj95zdy56YxZ8BDe15uHNsk6UYDNN5eD8hXPIvKw3847NjD89K4nNuA/sON2wJpzAcVdXbASiUMhQvw4xdsQLEoCZotr+uNY2qwe9ngR1mN7BR3mzq3Ig6ZlCj2qGGDaRKMgzo7loHTszKp21qE+4CDRZf1GwI7MSpZ7S2rtI7IhU0LsWK8Xp7eHwSONysWbNqG/UJvm1EJYizmiIZ3klX7QL4D2E8A/9VUTnBHLMX7kkr4scqOaCXt6cxl3pHWMltxK/EcF+7vFOFMXMaZ8W64p+yzj5ubov9tmu2nQeLmdGdY280Nq1fVfD46W+6AHwub63m/zr2dgRzNJ+zYc08C6RDlFZr1KrUxY6sk9VGqTbk5gBCxVeZtBaBSSpwhqYU/3eaPE4/9rLyxV57FdeWjmHT7rHuBKTs0/IJyPX68vo39pAR+aHopB6OqFvZvz/RQbXpW9tt0cA= 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:(13230040)(376014)(7416014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:01:22.9248 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d8219be7-b1dc-43ac-51cd-08dd5c39a651 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: MN1PEPF0000F0DF.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB9053 Move the SMT control check out of the hyperv_cpuid selftest so that it is generally accessible all KVM selftests. Split the functionality into a helper that populates a buffer with SMT control value which other helpers can use to ascertain if SMT state is available and active. Signed-off-by: Pratik R. Sampat --- .../testing/selftests/kvm/include/kvm_util.h | 35 +++++++++++++++++++ .../testing/selftests/kvm/x86/hyperv_cpuid.c | 19 ---------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h index 4c4e5a847f67..446f04b2710f 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -542,6 +542,41 @@ static inline uint64_t vm_get_stat(struct kvm_vm *vm, const char *stat_name) return data; } +static inline bool read_smt_control(char *buf, size_t buf_size) +{ + FILE *f = fopen("/sys/devices/system/cpu/smt/control", "r"); + bool ret; + + if (!f) + return false; + + ret = fread(buf, sizeof(*buf), buf_size, f) > 0; + fclose(f); + + return ret; +} + +static inline bool smt_possible(void) +{ + char buf[16]; + + if (read_smt_control(buf, sizeof(buf)) && + (!strncmp(buf, "forceoff", 8) || !strncmp(buf, "notsupported", 12))) + return false; + + return true; +} + +static inline bool smt_on(void) +{ + char buf[16]; + + if (read_smt_control(buf, sizeof(buf)) && !strncmp(buf, "on", 2)) + return true; + + return false; +} + void vm_create_irqchip(struct kvm_vm *vm); static inline int __vm_create_guest_memfd(struct kvm_vm *vm, uint64_t size, diff --git a/tools/testing/selftests/kvm/x86/hyperv_cpuid.c b/tools/testing/selftests/kvm/x86/hyperv_cpuid.c index 4e920705681a..1eb55d0b7297 100644 --- a/tools/testing/selftests/kvm/x86/hyperv_cpuid.c +++ b/tools/testing/selftests/kvm/x86/hyperv_cpuid.c @@ -22,25 +22,6 @@ static void guest_code(void) { } -static bool smt_possible(void) -{ - char buf[16]; - FILE *f; - bool res = true; - - f = fopen("/sys/devices/system/cpu/smt/control", "r"); - if (f) { - if (fread(buf, sizeof(*buf), sizeof(buf), f) > 0) { - if (!strncmp(buf, "forceoff", 8) || - !strncmp(buf, "notsupported", 12)) - res = false; - } - fclose(f); - } - - return res; -} - static void test_hv_cpuid(struct kvm_vcpu *vcpu, bool evmcs_expected) { const bool has_irqchip = !vcpu || vcpu->vm->has_irqchip; From patchwork Wed Mar 5 22:59:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003625 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2048.outbound.protection.outlook.com [40.107.220.48]) (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 7F8622066C8; Wed, 5 Mar 2025 23:02:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215777; cv=fail; b=en27+nFeez4PKZ+5lwKV2VMn+m8uvxMR3UrJB6Gx10nfXtltenLhDB61rAqPt/A32Hk6DROJALM8DCnF4hnz248VjoGSaFP5YYWWyoUjfgOgsY+nF7QyqNUFcIztQUWMEhsgoxVsOrn9b3T2cAhq5EhOj2Zy1sNCshFWuwWY7tA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215777; c=relaxed/simple; bh=qen85s0LwJUlM5XBA0ntJFYWNvR1Ym8iBLEMugdM78c=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WJmcyuSLeLHD148l9BTm7z+tYU+xwMP2UC9weARczF/9SfbQ7vbSQhnQaKZR6NXXdOyzFMI4yEde/H46Gjb9lHGVv4Gam0lxGiFrfSIOA/bi+/Iivoe7+LBxSO2OqL1xmCur87VRkuZYSfGpT/h+nVb/gFMx76mLWUJQTN1JmHI= 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=KHf+sAxf; arc=fail smtp.client-ip=40.107.220.48 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="KHf+sAxf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RMNpB00mTwSBN5CtgE13iXM7mfqi5VHoZ2KBpHlr2RY9LHuaxxdFWFSUUBHctCkf1j6cCO6j4+RnSn3YnNfnSCYs0I9Cv3Oo+gzEGu1t3KMsHnP6m30eWLGJ68X8jfR4O8KcMbSYG6BMisMF1I60v49PyAbWwSIIrbEK5JC+o+suYG4jOgam5i8DWcgBFidZBnIhnwv1aqz8YpdvBrYkWRY8DFN45HmZWH02S8ZWcqHHvLLiqpt42qIE0iEfYuPczH56b86yIWAIdvDOKFP8OuhPHa4eNHtHHFvNbsEJBRK493zNJzfeSC5Hw3kIQeLBICFNO4BXRSaZNC1J2+Z1dQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=9baNceY/XMXT8QqzJ8sp90hyfzSXu0IJEsC0zfNT0pw=; b=b4CDIBJplt6KszvSjiH4Bdwuz/Z+lHuuroPpn6BkgfuIr+jUNeIN7vyHrVeIB/1qeH9Bh3bq3INZLtTJdEiHgpPO2+VviYdfWPj1B6n/HEhhiyUdSg1EB9A2PAlDxwT2TGmW2kckGj/6sW3X7v2tlcnUjTwumeA7ruvkWkriJYLriaL352TFNHPNOho3tSYAQQnPCFt9m1sLsmuEqWlxymKwywF5PrYvSnQ3yddxIrhUZvYjTo9DCmt5vMoPrRq9YDNCKaY5PKf/aplf9MKzP0VVAiK16ShBQKK2JGocSu7MUtkH5hRoq5R1upRbClRK8Ik11POqcVeWkUlbh6ekkw== 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=9baNceY/XMXT8QqzJ8sp90hyfzSXu0IJEsC0zfNT0pw=; b=KHf+sAxfA03IDyn2bS1grTswldCDRwabDQMvjOn3RmfdGfiCGyvTvA/5O+3GZtpijfgkjwZieTFmZ8IdFqCwAdq70yXoghXeP+eQUO5Vog6+sPxgE+u1EaoKJHHbc/M4TbnIhu8gdu7MKQSW8q6mue8ej6bVEE2mq+SQ/facsbk= Received: from BN8PR07CA0027.namprd07.prod.outlook.com (2603:10b6:408:ac::40) by PH0PR12MB5629.namprd12.prod.outlook.com (2603:10b6:510:141::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.17; Wed, 5 Mar 2025 23:01:35 +0000 Received: from MN1PEPF0000F0E4.namprd04.prod.outlook.com (2603:10b6:408:ac:cafe::fc) by BN8PR07CA0027.outlook.office365.com (2603:10b6:408:ac::40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8489.29 via Frontend Transport; Wed, 5 Mar 2025 23:01:34 +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 MN1PEPF0000F0E4.mail.protection.outlook.com (10.167.242.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:01:34 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:01:32 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 05/10] KVM: selftests: Replace assert() with TEST_ASSERT_EQ() Date: Wed, 5 Mar 2025 16:59:55 -0600 Message-ID: <20250305230000.231025-6-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E4:EE_|PH0PR12MB5629:EE_ X-MS-Office365-Filtering-Correlation-Id: 641d654a-2d02-4197-fcd5-08dd5c39ad6c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: L7trnC3YWnlSBiYeyjdYz8vi8Keb3vIh54005a/tzJAhhJqEj+EcWDqdoaLwTqj5UjXyoZusJDNtfurTKhQy+/S2PhQ9arn8i92CyeDwV82b58wpfgJEgi82e0Jn5xUROKj43UU8miUKxsAUqF4rZQEmHlCjA61j06H6nNnvI7nL6MIv1egUtXc0Dn+Y5YcGmwCnnQntr2yeb/pMr7+HTRYTTn+izlk3w2dZWVotzyWGUaw/if5SD1FktVy27Pe29bvbC76mDFkdR6HWt7LWHpQUX9TOBoep9XlLb9a/XvDbxxyJ8sfP1bT7baODoQNBB6xS2KhcSYaSBuXzSRQtRChoRdK0xto8rdQQ8HODQZnid8s+Fa5K/jLfAhva/R06z56ix/JoAXQ3o3GJf4f2PSimXZV3flUjG+kqCHvfl7xOpioMdjjDfJ4qWZqFXJMluN70ls58FnHz3+mr7A4B6hm7YHHL38rE5j25HaXeJXb3WwwBpcE/ka1SOd1wfFwVrxgeR/8/RLt2eYqh+elyEuCSmaUFaUBirCPBzgGLHRoku7fadga7gWT73/WcPQhXlm91diBXJsGf2p2tFacF2qqOXO9+axLR4O19AU7zW53OvifrFj2XPw8GAZ5JyY36B3Zawdpy6RpZaVKL+VKqSh/aGSmaZCd1DeQBYs+HMAWdC2gqR3S4rC1h7PgeUdyT3dOnYOzFMjCJHLhegVF2QE+i+WYnIiEq+Kfbvr72+ogkjGo8DcsJWoPtwrSLjI/C4EOhRHqfMhEnAqlO+clXVhRw5Xvwi9nbWbyYky8ZDd5Sy0ek050E1J6PR42i55SPpJvxamyEwOQX4INIEYSzqwaej/hxF9gKYAcqU0NaTyfOLerV6IdchX+dr+Tb1QogChihsSmLgwvTSjqs/8Ev9oQkRckveb6qpuPln6MO++FlnL7jhy/YkLCAnF4e6SLpfv3sfW1qXIzuAd7wEpFC2GJzR0knvky49uf3JMqNY2zsw0d/iM2sNGWVI/TXRwXwEeMjmBKjPOoh09T7ynG1bN1crIFHIiZluVO1eAQqBWZuM7oHHrJC9ykFqUxD6WjkWTHW22XT8N16OeK4eb+L+KzboKS/o7R2reRcWkyIBUIpNpajDyQBcrg4M+K/+zBKoXQwLczIuUw7HSWgWwJuiRdsqH4vWkUQygsaOiblbSXRHrxPZSCMUJgifbcfsPWNcSGRlm/9YXRAwASXKM/kXIUB4xOUBfh9FbnW6E+LDOQ5WLe6u4MgF6Aj3P2FWquXdQNTAv6ArvekMAvgm2IpHhvOuHwf0LTbho/C8GdeBZs+yQ05ANrc9amXJWukOmrJDbJNQ0ZhS36kY0ZpM22zlwYBwJhA/Eq3rdN5pnto8A2SWlKHBD+DUBXt1CJ4SSSKZWwXdhSDhBTdxzuYZZ87opRgiJoMmiaXn1WPGUCgRPtoDV+yBw73g56KRIRH5ITzX4nFfdfI/OQnf7U9qoWjfg6vJUg0W+PzxOUFUXpfYLE= 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:(13230040)(376014)(7416014)(82310400026)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:01:34.8501 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 641d654a-2d02-4197-fcd5-08dd5c39ad6c 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: MN1PEPF0000F0E4.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5629 For SEV tests, assert() failures on VM type or fd do not provide sufficient error reporting. Replace assert() with TEST_ASSERT_EQ() to obtain more detailed information on the assertion condition failure, including the call stack. Signed-off-by: Pratik R. Sampat --- tools/testing/selftests/kvm/lib/x86/sev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/x86/sev.c b/tools/testing/selftests/kvm/lib/x86/sev.c index e9535ee20b7f..60d7a03dc1c2 100644 --- a/tools/testing/selftests/kvm/lib/x86/sev.c +++ b/tools/testing/selftests/kvm/lib/x86/sev.c @@ -37,12 +37,12 @@ static void encrypt_region(struct kvm_vm *vm, struct userspace_mem_region *regio void sev_vm_init(struct kvm_vm *vm) { if (vm->type == KVM_X86_DEFAULT_VM) { - assert(vm->arch.sev_fd == -1); + TEST_ASSERT_EQ(vm->arch.sev_fd, -1); vm->arch.sev_fd = open_sev_dev_path_or_exit(); vm_sev_ioctl(vm, KVM_SEV_INIT, NULL); } else { struct kvm_sev_init init = { 0 }; - assert(vm->type == KVM_X86_SEV_VM); + TEST_ASSERT_EQ(vm->type, KVM_X86_SEV_VM); vm_sev_ioctl(vm, KVM_SEV_INIT2, &init); } } @@ -50,12 +50,12 @@ void sev_vm_init(struct kvm_vm *vm) void sev_es_vm_init(struct kvm_vm *vm) { if (vm->type == KVM_X86_DEFAULT_VM) { - assert(vm->arch.sev_fd == -1); + TEST_ASSERT_EQ(vm->arch.sev_fd, -1); vm->arch.sev_fd = open_sev_dev_path_or_exit(); vm_sev_ioctl(vm, KVM_SEV_ES_INIT, NULL); } else { struct kvm_sev_init init = { 0 }; - assert(vm->type == KVM_X86_SEV_ES_VM); + TEST_ASSERT_EQ(vm->type, KVM_X86_SEV_ES_VM); vm_sev_ioctl(vm, KVM_SEV_INIT2, &init); } } From patchwork Wed Mar 5 22:59:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003620 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2068.outbound.protection.outlook.com [40.107.237.68]) (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 68E232066EE; Wed, 5 Mar 2025 23:01:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215715; cv=fail; b=tm/SJ+83TmBGqzARCVlwzeQCMqFXpZWumqyy/N69GqZxQbdzBb0ktqF/DWMXYaZS6gSHM296se1tWuYaCYThCl0Uw+h0jR4xNElIkzfvdc3mV7rHAvZbF91K9+YA2d/WVMthj0ck2dJ5+MUeM5l+5V7mYsBvl5IBIxzLBTHEens= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215715; c=relaxed/simple; bh=YCLeVbxyeg3lU+UdIBWeGDbIcB+rfaM+5ge12v6DKew=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GlgiICHTjoHHspt+XwwcHXHHIn6Pxev2/Sgb7SzKlvT2p1LKMxFHpF3+9ux7ocZu3CGWob0Mit0l96ePrOBNvsJ0jRPvoNuaB7irsTLs7jLQu9p85vkQ0VoA9nIAPYq4ewCniasT/2x14v8NJHf6b9NG1trARJUOcpcpZnogpI4= 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=4ApbmRED; arc=fail smtp.client-ip=40.107.237.68 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="4ApbmRED" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WobSiKbWLuyAHEsp1TKLxKthV/42Scm4R6pVryemPegqDw+nhdq99y7OcPkn5bitw2eSiEnnwxlxdAj/Bmkhv/AiXwuR7J5tXH/0FlvOxgBv4VHSwS6kNcnfHeC6gPcy3gnR7YeSzXGgF6qDqM5Vs3k5hu8dQjov27b1IvehA+mZnzr5V2j2L18Ar1Mt0JMD63lVotYXa2Hk3PCGPGT7ue7LhUo3su1BZnyq3ZKUtBu3Dq5z6m1abxObtn34ayQePFLc4NeKOMbDqAQ2QABOMyVI1UKYaxdiZzHEQH3OAvN3hEpvFXGTJL2HDRvz2a9Olll7GEFUBfSKgAhdtF5g8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=QM3Dv+Gxe2NlEj2wfiGq1HyLq9rQxhupuuAloJuhmE4=; b=DqJ7qU1PgLG4ajqPJnhb+VdmPaZlFpukhQmKkV6F3y9n/i+k2T04TnbKTZWOIHDfXTvyogFrGzRhIQzEn3D7j6jjZG1OSRJTGmgyaxIE6KVvxSl0k8Pk8O5O90oLFGBnYTQzV7BA9RLaTJ3Kd6Cmah6UJAiXBR65JKWkuQy+O3pyjm6KRez961zDlYspDcft8xCJqda1URwaTCEgS2+hWsH1XSla9I15KEzc/CjUvteHJX2L4d8IaaY/sNcdt3BKGsqiyWo3nvpsfsKNGpT0YwnuQNwTgkb6zAna+3qUNlfFEqEGUxKhPULX05F4lWQsl1gUJQrOwPISzl+5jVutlw== 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=QM3Dv+Gxe2NlEj2wfiGq1HyLq9rQxhupuuAloJuhmE4=; b=4ApbmREDXIGbKMq7olgs1OcT6P6pDO2ntXh6K4sxQBKXhXFwgJTdxbNsL4LFF303dM7XECkcxyNYxMPtYBpef291W3U0O/xhmbnF+yDrbX4Tlj8du+SKg3lCzS+j/KJXhBtU4CSgs254yNGi8kV1dsBKeHYIGGH74hiJmhfeQZk= Received: from BN8PR07CA0034.namprd07.prod.outlook.com (2603:10b6:408:ac::47) by PH0PR12MB7984.namprd12.prod.outlook.com (2603:10b6:510:26f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.29; Wed, 5 Mar 2025 23:01:48 +0000 Received: from MN1PEPF0000F0E4.namprd04.prod.outlook.com (2603:10b6:408:ac:cafe::28) by BN8PR07CA0034.outlook.office365.com (2603:10b6:408:ac::47) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.18 via Frontend Transport; Wed, 5 Mar 2025 23:01:48 +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 MN1PEPF0000F0E4.mail.protection.outlook.com (10.167.242.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:01:47 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:01:45 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 06/10] KVM: selftests: Introduce SEV VM type check Date: Wed, 5 Mar 2025 16:59:56 -0600 Message-ID: <20250305230000.231025-7-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E4:EE_|PH0PR12MB7984:EE_ X-MS-Office365-Filtering-Correlation-Id: 67533831-fb92-4c7a-b94b-08dd5c39b53f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|7416014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: 74P0TnipvEcIMp+Ff0mbyx57kASPlOS/2z5asbGqAHFP5G4uR9sxa3XfPAnw4PETDag013F47gaTKXofjo4upUReuG+qWNCG1JnQ2KGonmyYUcODZDkNeVJBqqxXznrjaS6RdkucrnDzIwb8u5Q6HHq1v5MvkduRAQt7gafofuJRMSw7FItw/JSSdb4v2dtU4tDK96GnV3XdFF9o85K3Vjwmt0SWWcnObd+tqXrjrdgu6ZD5GtfPVXmG6M59XXPFBL69QQ/niloWnpIRyaBGT7IzYlYnBmcLyIP93KB4cb5PSHEf0g3jjNdiXkF3nALPJEUZv6u/0ZIycWYKk+rNLXwrQ0j5XePcAIgTKA95lLJAkKhBjA2QRd/HjUZkl5HqiBpeR/psLOLu2o0XNhU+BfWKiaiKKg/YEmDAkFE5bQoY5aktmy+ykhem1sLDzRXWc9Hnov3FI1/4FsEE9l5+Y+4YI2cTx2BKvGxJLcwjKbb9lqu+/xXsrbXkP1zaCSGGh2nXXKrrDbO5LySEVAeYgVSaB8F0scyrHLqYt2/j5VcehJpH0ahdfW7v0BWNObjEIgpU8aUkUQsDNG0fFu6y1eW8AvX8+yvV3DGDtl3TgjhgZ6YRs1+/HYGS7ztG9DzDa864bxd7CyFv+sR2i5w/HSu/YUlMMyeZnsAhR13Qb/vUW4KiTBM6/LIbLaxLpHdWrjEKDWgL6aopC1wIsMktdhKB6eMSVKELLonm6LqtZzxe4aEHKyg6uJFh79UH4IRFemWmOSTyV+DliEx3Ssdi5g0yQietrqX63dK4I57iEju8hJwZG1PtF/Y49bBh4jrRWPuQ66awkRe2nbWHrAb9J1BRlTcvzDMPpuWhOj0J+sPfnmjJFObkj9snNu8baPSvlID9l3zd6Z2rH3ika4OuzpWzNu7RxEc06b0Q44NHW2LQqOZAR0WWn9YvKKYevgaclrtmKZtoB5FrfxKXGt1eH/oMDGQGBtWlb4ChN2EcjMAv9SsjYPnM5B0Pq8+GdIASQXEyINgLWcCw66a0Tc4/XOiMfoXIBM7OZT7Da43k7bImDfnoGYVPDdlyGtu/ofM64jDj9qdHrVkDK0mlg9p0yOMpEfFygO7DgjEo8p23od5DrRFtIx1cWFTlO0cEN3DcO/QhN24Ia3RmlT94N+C0wWvMVhMkxQNCgqOOZeSn3sc8pOjE3sI0LwjDacaQUF5V9JU51ZKgZfSdYfOD+hdjPdcX/8khdNinsZAoViYlGT1teOCd0YIgFoAvnmlRIEqX/Vtlu+BFt9TCsT4ZKm14QGKQgsSlPA5FkU4aHVR1bti/psg3kT9p2THcVUGwmiFpTAAYjfXLYjftX0VnsTqjUorze53yvqlPMfm1rGUt8PQwCNBKWiISwJaKBh6kEd2r/SW8lNCa7b0RBtOZxUmkHsrW29M1SpNfrb1NoFfObLBiE06RP1tFNkrDwO/5cErlYyApbsWdsBHAlrd2xgB+IpTCwL8dIcut04QtoRfKxzM= 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:(13230040)(376014)(1800799024)(7416014)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:01:47.9753 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 67533831-fb92-4c7a-b94b-08dd5c39b53f 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: MN1PEPF0000F0E4.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7984 In preparation for SNP, declutter the vm type check by introducing a SEV-SNP VM type check as well as a transitive set of helper functions. The SNP VM type is the subset of SEV-ES. Similarly, the SEV-ES and SNP types are subset of the SEV VM type check. Signed-off-by: Pratik R. Sampat --- tools/testing/selftests/kvm/include/x86/sev.h | 4 ++++ tools/testing/selftests/kvm/lib/x86/processor.c | 4 ++-- tools/testing/selftests/kvm/lib/x86/sev.c | 17 +++++++++++++++++ .../testing/selftests/kvm/x86/sev_smoke_test.c | 2 +- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/kvm/include/x86/sev.h b/tools/testing/selftests/kvm/include/x86/sev.h index 3003dc837fb7..b112f7664534 100644 --- a/tools/testing/selftests/kvm/include/x86/sev.h +++ b/tools/testing/selftests/kvm/include/x86/sev.h @@ -27,6 +27,10 @@ enum sev_guest_state { #define GHCB_MSR_TERM_REQ 0x100 +bool is_sev_vm(struct kvm_vm *vm); +bool is_sev_es_vm(struct kvm_vm *vm); +bool is_sev_snp_vm(struct kvm_vm *vm); + void sev_vm_launch(struct kvm_vm *vm, uint32_t policy); void sev_vm_launch_measure(struct kvm_vm *vm, uint8_t *measurement); void sev_vm_launch_finish(struct kvm_vm *vm); diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testing/selftests/kvm/lib/x86/processor.c index bd5a802fa7a5..a92dc1dad085 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -639,7 +639,7 @@ void kvm_arch_vm_post_create(struct kvm_vm *vm) sync_global_to_guest(vm, host_cpu_is_amd); sync_global_to_guest(vm, is_forced_emulation_enabled); - if (vm->type == KVM_X86_SEV_VM || vm->type == KVM_X86_SEV_ES_VM) { + if (is_sev_vm(vm)) { struct kvm_sev_init init = { 0 }; vm_sev_ioctl(vm, KVM_SEV_INIT2, &init); @@ -1156,7 +1156,7 @@ void kvm_get_cpu_address_width(unsigned int *pa_bits, unsigned int *va_bits) void kvm_init_vm_address_properties(struct kvm_vm *vm) { - if (vm->type == KVM_X86_SEV_VM || vm->type == KVM_X86_SEV_ES_VM) { + if (is_sev_vm(vm)) { vm->arch.sev_fd = open_sev_dev_path_or_exit(); vm->arch.c_bit = BIT_ULL(this_cpu_property(X86_PROPERTY_SEV_C_BIT)); vm->gpa_tag_mask = vm->arch.c_bit; diff --git a/tools/testing/selftests/kvm/lib/x86/sev.c b/tools/testing/selftests/kvm/lib/x86/sev.c index 60d7a03dc1c2..4587f2b6bc39 100644 --- a/tools/testing/selftests/kvm/lib/x86/sev.c +++ b/tools/testing/selftests/kvm/lib/x86/sev.c @@ -4,6 +4,23 @@ #include "sev.h" +bool is_sev_snp_vm(struct kvm_vm *vm) +{ + return vm->type == KVM_X86_SNP_VM; +} + +/* A SNP VM is also a SEV-ES VM */ +bool is_sev_es_vm(struct kvm_vm *vm) +{ + return is_sev_snp_vm(vm) || vm->type == KVM_X86_SEV_ES_VM; +} + +/* A SEV-ES and SNP VM is also a SEV VM */ +bool is_sev_vm(struct kvm_vm *vm) +{ + return is_sev_es_vm(vm) || vm->type == KVM_X86_SEV_VM; +} + /* * sparsebit_next_clear() can return 0 if [x, 2**64-1] are all set, and the * -1 would then cause an underflow back to 2**64 - 1. This is expected and diff --git a/tools/testing/selftests/kvm/x86/sev_smoke_test.c b/tools/testing/selftests/kvm/x86/sev_smoke_test.c index 6812b94bf5b6..a2de1e63c3cb 100644 --- a/tools/testing/selftests/kvm/x86/sev_smoke_test.c +++ b/tools/testing/selftests/kvm/x86/sev_smoke_test.c @@ -123,7 +123,7 @@ static void test_sev(void *guest_code, uint64_t policy) for (;;) { vcpu_run(vcpu); - if (policy & SEV_POLICY_ES) { + if (is_sev_es_vm(vm)) { TEST_ASSERT(vcpu->run->exit_reason == KVM_EXIT_SYSTEM_EVENT, "Wanted SYSTEM_EVENT, got %s", exit_reason_str(vcpu->run->exit_reason)); From patchwork Wed Mar 5 22:59:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003621 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2071.outbound.protection.outlook.com [40.107.92.71]) (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 BA4FF2066FF; Wed, 5 Mar 2025 23:02:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215727; cv=fail; b=ovfpCxOevehTl5cVyIIVOoaTsy85fnHM/72fqoUNChb5gQaM3r1ecaqmvZ2CiBSJZaOKrIk/q5m12leAwGZVkG7CkV66t6DY/S2/yRPxj8LjvsrOsNgms2UyWDDgtu36D8Dsj5sFRST9PvAgWIbZ8K8iDPOZQSDjHX5zWQeHXTE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215727; c=relaxed/simple; bh=/Ouu5XCq3a4k4UxbRqtM89Xhd2DI6zgv6pliaxrFYGU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pzwbZzuyMnXyJlD851+ZV8G7y/PHiNy+ndU6E+EvTcuZkxTJ8xrSKaXTSGuit3uYVYHsd964H5acqun+7/WNMNJjCFFfTHBf1a4f7LEXSNNz1eqqqv4T8LLZWQsj+zYgYxmXC75Xlnr+g7Cbypc4i2Q6R0JmQtVZM19n3nfIsuI= 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=x+VyfmeR; arc=fail smtp.client-ip=40.107.92.71 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="x+VyfmeR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cAZqy2We3GDpclE08csQcshs2cpJ5nYcleJQqV+iym0J3H4MqGCmfB3vQW4nhxplJ3HAM4wEzK8nvUjCTsBi+Sl9Vtg5jb9jg5/vfyq2daC0h6v3y0uOAZwg9N+633GCUDDcH4SIqXCKFIkge22RdJfrrfT3OmiaWZZ5USwInfzIiNOtiPDxexUsAmIrkgj/e2dzX+bgqkrd9Xsq1ZsoYOlEf5y7W5oAmwzXa/F/CYRNx4yV8UrvCf8M1A/UopYeBFldX1kwpVNIhRes6yhFm0BehUArlMFh1KwlqloFEwIMDZaK/MQK7xWTdRXr/+3jL0PbwSOKChavc1t4rFlvyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=/6Gjv1pvh24smJKRL+zGAzSFWJoFqxEhFKzHsMiFV50=; b=uH7SjEkIcraR29hRJfPaCld8xyPqlUlINjRRQRS65wqw+LgNr0hF0/OnBLexw4VjiTCKplisjwFqTI2uqXs1yALKXIqpcEaHY8dXfkwMUq8UTWWpoot9SKNdI1X82tQtMR5jXmxDm3irozECdsOcbEfq5mr3YBIVNZMBCboxnjT+/4jG72bawQ142y14uVJh6UYmKXGo2/alMFJCndBVnrP8ZkkYUIYO0GUOENJrDmVHocPIb7ixaS0H8LbMS4inyDPnqw3NMk5MaM38SNYocwXgH/769fO5vTZplotVuYaNKIIR5E5uE1qUlrJ3MyjaIRsQvWOfquGURAutQUB+cQ== 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=/6Gjv1pvh24smJKRL+zGAzSFWJoFqxEhFKzHsMiFV50=; b=x+VyfmeROxLKsc+ZM1uLrgWa93qYAlzP9db2LTadJOJ4rhsmoiFKirILal5uXGl3Ctp54FNnGENCwnxw08idsJ7HzM1zNuUVpJ3VTh5dNiF6tZ+kV9/B45CB71MI3Yn3426OKDwbjFOHS+16fjN24U2od1ZHDBqGJAo14ctVGgo= Received: from BN9PR03CA0393.namprd03.prod.outlook.com (2603:10b6:408:111::8) by IA1PR12MB7663.namprd12.prod.outlook.com (2603:10b6:208:424::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.25; Wed, 5 Mar 2025 23:01:59 +0000 Received: from MN1PEPF0000F0DE.namprd04.prod.outlook.com (2603:10b6:408:111:cafe::51) by BN9PR03CA0393.outlook.office365.com (2603:10b6:408:111::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.16 via Frontend Transport; Wed, 5 Mar 2025 23:01:59 +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 MN1PEPF0000F0DE.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:01:59 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:01:57 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 07/10] KVM: selftests: Add library support for interacting with SNP Date: Wed, 5 Mar 2025 16:59:57 -0600 Message-ID: <20250305230000.231025-8-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0DE:EE_|IA1PR12MB7663:EE_ X-MS-Office365-Filtering-Correlation-Id: 81777d01-76ca-4012-1840-08dd5c39bbd2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|7416014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: 41HEsQlQwCr5ayXdfn0mnU7kHsATWjt9gRa27Y6yqSeMLcZoOdo1TvxC/FissHmRC18i2j29VOhq/WbvPhYPDqY+KVDpFxsZVapo0DcVGPLSt45n1t5904xIJUsJwuqjFv84UMmeDWNaxYBrKc9hL04blLZnVBRo250NnJMTzZsrBaIFiaeiVk0OzUaOQ3iSjTMeyvZ/wJubngVvRl30WHiaFpG6/BmjJ+xxIixEyKP+Eh/jisDrLb4WgmxogOdC8fsveUcwQCr1i9zJRK7rwmrjKFOt9sRC4uzxC8OabA7gzd1y+BFy7HZxqxChS385VYHk1BiGqz6jsmXyVY0kXosS2DZTbzQsCK5yiaaxH7OWiYn8bGGyaY3vu+13JMnC39eVmuFfUH+J4vXisNPmr5gK/YbGopKCEvl3GuO98qdG4dAkAcNEz3giyfBgpNNZJm+wWqvBnIIJpFUAE5Oo2TQdOmoFEb85nmFscPrkYanKaDgnSkwXGbzdzSFTHS+C/ywvrY4z3jRLPhLCuStUxF/TF069Qk3eo4U1vB494y8CIlDred8ch4mKZmekIvE6YCc+lcFhZ9zmG5aGrY4XsZRRFhJNs8I9SKwmWP8MWszwRDiy6zLjBZfJmQ5XGxmpBWq1udezlnCLssYbKxC9I8oqwsHiu/41oGvnLl88wvpvMCpo1syMSWhb//2CdZTuk4b5sVzG2HPuFpeG8Ww4ApIbtr76+83pXzvnIzcj7E/nXlsa1WjTmn78LSbWJs7vb5ie3j6thXNK1epaR62OhODZjW+sYers3ymUl1O1ftB6vYed1yj/EYmrkcLX7Y4x2XL26Mdxse/RwCTznnbE67WhpouM1g+gL6Ujlc1ty6+qaPknOUrXSDs9ARm4H1F6YRZAe1WkiUV5ghVChqg1V9m0ikCypFidjDMMiEszfLRm4dkOjxxdD+Hr+jElu1Y+PCTb/He+vULzryBiJxNCzYeDFa3N8XRisRF5kZipFzqzl4S6sMnr0RTiRDkvl1XpPUmIomv9iQ/wHaACNPdCRFO5D/EE8CKjQdKZF+pZwvMf8TWp87rvNTds+XacAr4eibi7/rsi0UupUQ0eJ24i44+Lqxbj7XE4bwfsP459GZx5tkXuMO2pPvwhWe8etyksookOpUMhGc+1Bl3gdl4c6eszg2f0z4UGgPrUk3C6iBC0KA0B+sEYQ1lTo620NoqbjnUxB9txy23ZOGGdrAfDONlPeZGEXiwkMWArR3BxgqoF/E8Ja+kVGtVNBriSooH/jdu7fEmsPkKaPleq3x97UHM6WUrlOVkNmXaUFDXuxF7NORAZrEZCXKjiwS+tYqj6+Ofi6y8p+AJsWXFi4B9IBPy3skUZNGDYrZQ6aleUqqIGv0Vl1x2JBDODjqoJE2ls6WPkTnQsuvaj35SQIrbtbzMVURouMWKVnEVqktdPJLHST1E2pCmQKxasrW9no5MKCo2I4ZycD7IV2+PPMViAdhG9rRkuFTf1XGkD7emPfvc= 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:(13230040)(82310400026)(376014)(7416014)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:01:59.0165 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 81777d01-76ca-4012-1840-08dd5c39bbd2 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: MN1PEPF0000F0DE.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7663 Extend the SEV library to include support for SNP ioctl() wrappers, which aid in launching and interacting with a SEV-SNP guest. Signed-off-by: Pratik R. Sampat --- arch/x86/include/uapi/asm/kvm.h | 1 + tools/arch/x86/include/uapi/asm/kvm.h | 1 + tools/testing/selftests/kvm/include/x86/sev.h | 33 ++++++++- tools/testing/selftests/kvm/lib/x86/sev.c | 68 +++++++++++++++++-- 4 files changed, 97 insertions(+), 6 deletions(-) diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kvm.h index 9e75da97bce0..565e4d054627 100644 --- a/arch/x86/include/uapi/asm/kvm.h +++ b/arch/x86/include/uapi/asm/kvm.h @@ -841,6 +841,7 @@ struct kvm_sev_snp_launch_start { }; /* Kept in sync with firmware values for simplicity. */ +#define KVM_SEV_PAGE_TYPE_INVALID 0x0 #define KVM_SEV_SNP_PAGE_TYPE_NORMAL 0x1 #define KVM_SEV_SNP_PAGE_TYPE_ZERO 0x3 #define KVM_SEV_SNP_PAGE_TYPE_UNMEASURED 0x4 diff --git a/tools/arch/x86/include/uapi/asm/kvm.h b/tools/arch/x86/include/uapi/asm/kvm.h index 88585c1de416..17e44fbdc2a7 100644 --- a/tools/arch/x86/include/uapi/asm/kvm.h +++ b/tools/arch/x86/include/uapi/asm/kvm.h @@ -841,6 +841,7 @@ struct kvm_sev_snp_launch_start { }; /* Kept in sync with firmware values for simplicity. */ +#define KVM_SEV_PAGE_TYPE_INVALID 0x0 #define KVM_SEV_SNP_PAGE_TYPE_NORMAL 0x1 #define KVM_SEV_SNP_PAGE_TYPE_ZERO 0x3 #define KVM_SEV_SNP_PAGE_TYPE_UNMEASURED 0x4 diff --git a/tools/testing/selftests/kvm/include/x86/sev.h b/tools/testing/selftests/kvm/include/x86/sev.h index b112f7664534..c696d10f9332 100644 --- a/tools/testing/selftests/kvm/include/x86/sev.h +++ b/tools/testing/selftests/kvm/include/x86/sev.h @@ -25,6 +25,10 @@ enum sev_guest_state { #define SEV_POLICY_NO_DBG (1UL << 0) #define SEV_POLICY_ES (1UL << 2) +#define SNP_POLICY_SMT (1ULL << 16) +#define SNP_POLICY_RSVD_MBO (1ULL << 17) +#define SNP_POLICY_DBG (1ULL << 19) + #define GHCB_MSR_TERM_REQ 0x100 bool is_sev_vm(struct kvm_vm *vm); @@ -34,13 +38,26 @@ bool is_sev_snp_vm(struct kvm_vm *vm); void sev_vm_launch(struct kvm_vm *vm, uint32_t policy); void sev_vm_launch_measure(struct kvm_vm *vm, uint8_t *measurement); void sev_vm_launch_finish(struct kvm_vm *vm); +void snp_vm_launch_start(struct kvm_vm *vm, uint64_t policy); +void snp_vm_launch_update(struct kvm_vm *vm); +void snp_vm_launch_finish(struct kvm_vm *vm); struct kvm_vm *vm_sev_create_with_one_vcpu(uint32_t type, void *guest_code, struct kvm_vcpu **cpu); -void vm_sev_launch(struct kvm_vm *vm, uint32_t policy, uint8_t *measurement); +void vm_sev_launch(struct kvm_vm *vm, uint64_t policy, uint8_t *measurement); kvm_static_assert(SEV_RET_SUCCESS == 0); +/* + * A SEV-SNP VM requires the policy reserved bit to always be set. + * The SMT policy bit is also required to be set based on SMT being + * available and active on the system. + */ +static inline u64 snp_default_policy(void) +{ + return SNP_POLICY_RSVD_MBO | (smt_on() ? SNP_POLICY_SMT : 0); +} + /* * The KVM_MEMORY_ENCRYPT_OP uAPI is utter garbage and takes an "unsigned long" * instead of a proper struct. The size of the parameter is embedded in the @@ -74,6 +91,7 @@ kvm_static_assert(SEV_RET_SUCCESS == 0); void sev_vm_init(struct kvm_vm *vm); void sev_es_vm_init(struct kvm_vm *vm); +void snp_vm_init(struct kvm_vm *vm); static inline void vmgexit(void) { @@ -102,4 +120,17 @@ static inline void sev_launch_update_data(struct kvm_vm *vm, vm_paddr_t gpa, vm_sev_ioctl(vm, KVM_SEV_LAUNCH_UPDATE_DATA, &update_data); } +static inline void snp_launch_update_data(struct kvm_vm *vm, vm_paddr_t gpa, + uint64_t hva, uint64_t size, uint8_t type) +{ + struct kvm_sev_snp_launch_update update_data = { + .uaddr = hva, + .gfn_start = gpa >> PAGE_SHIFT, + .len = size, + .type = type, + }; + + vm_sev_ioctl(vm, KVM_SEV_SNP_LAUNCH_UPDATE, &update_data); +} + #endif /* SELFTEST_KVM_SEV_H */ diff --git a/tools/testing/selftests/kvm/lib/x86/sev.c b/tools/testing/selftests/kvm/lib/x86/sev.c index 4587f2b6bc39..a56f5164b0a6 100644 --- a/tools/testing/selftests/kvm/lib/x86/sev.c +++ b/tools/testing/selftests/kvm/lib/x86/sev.c @@ -31,7 +31,8 @@ bool is_sev_vm(struct kvm_vm *vm) * and find the first range, but that's correct because the condition * expression would cause us to quit the loop. */ -static void encrypt_region(struct kvm_vm *vm, struct userspace_mem_region *region) +static void encrypt_region(struct kvm_vm *vm, struct userspace_mem_region *region, + uint8_t page_type, bool private) { const struct sparsebit *protected_phy_pages = region->protected_phy_pages; const vm_paddr_t gpa_base = region->region.guest_phys_addr; @@ -41,13 +42,23 @@ static void encrypt_region(struct kvm_vm *vm, struct userspace_mem_region *regio if (!sparsebit_any_set(protected_phy_pages)) return; - sev_register_encrypted_memory(vm, region); + if (!is_sev_snp_vm(vm)) + sev_register_encrypted_memory(vm, region); sparsebit_for_each_set_range(protected_phy_pages, i, j) { const uint64_t size = (j - i + 1) * vm->page_size; const uint64_t offset = (i - lowest_page_in_region) * vm->page_size; - sev_launch_update_data(vm, gpa_base + offset, size); + if (private) + vm_mem_set_private(vm, gpa_base + offset, size); + + if (is_sev_snp_vm(vm)) + snp_launch_update_data(vm, gpa_base + offset, + (uint64_t)addr_gpa2hva(vm, gpa_base + offset), + size, page_type); + else + sev_launch_update_data(vm, gpa_base + offset, size); + } } @@ -77,6 +88,14 @@ void sev_es_vm_init(struct kvm_vm *vm) } } +void snp_vm_init(struct kvm_vm *vm) +{ + struct kvm_sev_init init = { 0 }; + + TEST_ASSERT_EQ(vm->type, KVM_X86_SNP_VM); + vm_sev_ioctl(vm, KVM_SEV_INIT2, &init); +} + void sev_vm_launch(struct kvm_vm *vm, uint32_t policy) { struct kvm_sev_launch_start launch_start = { @@ -93,7 +112,7 @@ void sev_vm_launch(struct kvm_vm *vm, uint32_t policy) TEST_ASSERT_EQ(status.state, SEV_GUEST_STATE_LAUNCH_UPDATE); hash_for_each(vm->regions.slot_hash, ctr, region, slot_node) - encrypt_region(vm, region); + encrypt_region(vm, region, KVM_SEV_PAGE_TYPE_INVALID, false); if (policy & SEV_POLICY_ES) vm_sev_ioctl(vm, KVM_SEV_LAUNCH_UPDATE_VMSA, NULL); @@ -129,6 +148,33 @@ void sev_vm_launch_finish(struct kvm_vm *vm) TEST_ASSERT_EQ(status.state, SEV_GUEST_STATE_RUNNING); } +void snp_vm_launch_start(struct kvm_vm *vm, uint64_t policy) +{ + struct kvm_sev_snp_launch_start launch_start = { + .policy = policy, + }; + + vm_sev_ioctl(vm, KVM_SEV_SNP_LAUNCH_START, &launch_start); +} + +void snp_vm_launch_update(struct kvm_vm *vm) +{ + struct userspace_mem_region *region; + int ctr; + + hash_for_each(vm->regions.slot_hash, ctr, region, slot_node) + encrypt_region(vm, region, KVM_SEV_SNP_PAGE_TYPE_NORMAL, true); + + vm->arch.is_pt_protected = true; +} + +void snp_vm_launch_finish(struct kvm_vm *vm) +{ + struct kvm_sev_snp_launch_finish launch_finish = { 0 }; + + vm_sev_ioctl(vm, KVM_SEV_SNP_LAUNCH_FINISH, &launch_finish); +} + struct kvm_vm *vm_sev_create_with_one_vcpu(uint32_t type, void *guest_code, struct kvm_vcpu **cpu) { @@ -145,8 +191,20 @@ struct kvm_vm *vm_sev_create_with_one_vcpu(uint32_t type, void *guest_code, return vm; } -void vm_sev_launch(struct kvm_vm *vm, uint32_t policy, uint8_t *measurement) +void vm_sev_launch(struct kvm_vm *vm, uint64_t policy, uint8_t *measurement) { + if (is_sev_snp_vm(vm)) { + vm_enable_cap(vm, KVM_CAP_EXIT_HYPERCALL, (1 << KVM_HC_MAP_GPA_RANGE)); + + snp_vm_launch_start(vm, policy); + + snp_vm_launch_update(vm); + + snp_vm_launch_finish(vm); + + return; + } + sev_vm_launch(vm, policy); if (!measurement) From patchwork Wed Mar 5 22:59:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003622 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2071.outbound.protection.outlook.com [40.107.223.71]) (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 5E97320764A; Wed, 5 Mar 2025 23:02:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215738; cv=fail; b=WmWm/Hoo8v5hZxnE7U7S82Huya09Zy239HOJpg8WjLNKdIrekKYmtux9RqDEdQCPbXxOXJarmJEnAeyAeb94VMdRYDGpLrKGP7HeaLl8Cv05f8oIM1J7mUhmR8TvZxOkpvR9FEc6vVXuD/ZVGSyq1XwnEt7C9gPOjSdKH9lDQB8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215738; c=relaxed/simple; bh=8Zm+saQvm3iQHWzwa0AFasdrYzPnqdivK+SQZq6xe0E=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GYaAadahDPU27iLwqD9Dl7MtawwKr2ccNA5cy8/6C1OmhRYSSBto5zbqfHn2BtWM+tVOnn3OhDPrQDEmyWzS3E6IpHukYfc9Zq1HJG8EVC9S+vPd0p+sOPA/EvyAWNdV5W2xB3wrmtTZF90axk3aSx6jrgoxca9Jny15jhISGqM= 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=f9cFY8Rv; arc=fail smtp.client-ip=40.107.223.71 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="f9cFY8Rv" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q9YMZUzAum6z2Qbb0lqlSB1EHkfasJ1LuF4xzG4Kx/g5Th7haUH+g80L6wmOR2jCMDVAS6bsCJNTfaz0eALtWwyGxUvDzM+kZ6vvGJhAv9fHzydzRo9Ylg3sukoDSm81dILO71STppCoZ8KwcnhAfnn85yImKsxYAHmntrTa+3tE+OFEGiUL8WMWa4bAFO+xNg1iELfomukiU8q/RuOniLQyGNpqOeoKEQ/txUmrepfZpuut6CpN8URehJ0cCZvlc2n35pU4nHxkk6m4XjFBGlcIZTvx1QNcE1df07+jEC53GMRX3MsDV/K7s05b2+M+MK2iq5BOo/va4Q+Ed4rExA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=hECz9pFVz/suIaR60vbxBLgnenR1cmtTB1A+tesJQlg=; b=gkMjiYxF/y4jkSYc4HxslKFQeJle0Aj/veHwa+NNXNg5rt8WfdSzz1ZaABDu3vzrYa1aXRS/CcDYUMke81KAleQi2hp5xvN0v+pwdJG1NFGpDs6nr2BNraFDNkNLApHRs+p4wLZoay4XkqgNl78pSFvQ+ExNba5XrhEQYi/olXxiBm1SrEoFm3h49EaITCrysr/0pkZWupmWv57rjhbV7NnAt0SY9HnK6fBt1STFXOH56LWoPCHKAFNXgFhQJO9462oX8o+8YtwhY0YYHpDfOCXij5zPP3nkb7NWSIMmcGEs/tWyeTjjTTRCckmbG8uM4EK1SvmIsmbALowtGbk/4Q== 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=hECz9pFVz/suIaR60vbxBLgnenR1cmtTB1A+tesJQlg=; b=f9cFY8RvGv4rrOxi2n/ac8PtoZcf2s2XQcf4adBfXZxsudB7tDNO6xnCTLli9v6Ur0MH7EFbFCSqPWus0GnmKrDrJNG4rBxzYV4Eja0fqztdtGnS/OpulXIe4C06y/vxrcSf8artEHigswB4NmFpZiGuGOxSyJpvpcujjNOIwfk= Received: from MN2PR05CA0012.namprd05.prod.outlook.com (2603:10b6:208:c0::25) by DM6PR12MB4467.namprd12.prod.outlook.com (2603:10b6:5:2a8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.19; Wed, 5 Mar 2025 23:02:12 +0000 Received: from MN1PEPF0000F0DF.namprd04.prod.outlook.com (2603:10b6:208:c0:cafe::c) by MN2PR05CA0012.outlook.office365.com (2603:10b6:208:c0::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:02:11 +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 MN1PEPF0000F0DF.mail.protection.outlook.com (10.167.242.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:02:11 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:02:09 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 08/10] KVM: selftests: Force GUEST_MEMFD flag for SNP VM type Date: Wed, 5 Mar 2025 16:59:58 -0600 Message-ID: <20250305230000.231025-9-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0DF:EE_|DM6PR12MB4467:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b35c14d-64d6-48d9-e6cd-08dd5c39c377 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026|7416014; X-Microsoft-Antispam-Message-Info: 3liftS6auFeKJkTP9Ub5Ll71JKVuKwpRkC71fIs5tF6L0wUWjKaAnFnumUIxdAoKBwpzeJSwOJ4PSV2Jc06MunAp8oR3cZes47n/jX4n0/bVC60moSxQn2cMSX79wl4rzRDkkdXQjj0uAYPvMu5gQ374iZc000Yxzh4ake3kP/v44aSPjpJVfwH38Zg8qGcfcAesfgEsGrtsMx4xQAWOj0SWRpgoiukNbKNPtctKWsH1AHWwg+IDmAMOwph1LmFujTT86pQr+aTvC9Irz0Dhe6VjKZGd1R4Z+hVenhi3sRC+bByZbp6MPaz6HunoeiayjaqfV8KxIo4I/7vG7kdS9Ce5hcDJ+uDzIrMk96QQmaiuId313ndbzaWc9DI05Vv6+j1B5BqeW6s44P81+uF8ErttRRJWFxFkc2PwuQNbeO7Meulxiq3m1rRDysr2egUE2Q/1wCGPgiqj5lninasNMbWRIoipkcmiZENU3XxhPxAp9kHwz7VtlmPZGQgU8+wqk7vXFODDL25bOZ389dXGtigI2GjPKglDmmz8kgTrLkDX1e+6PU6gDbM/++n2oVTZTpbDbU6aV1eihjPx85z5nfYHmI4z8Yms+2VHRxbadQI2chjJOpR0U6rAL4WCQBn0uWfBjmKVmdEfl2uBqDVctF7jez9eLN4XxgIBHc9wngcYQkh4CmFsfczdZP0EJfQqgXBJWZnlD9WYk7r4EyTGHc01NO/pLPsNk7NLM7I4KNubW09ECp4JtLNJBFsdtCqDF2nDJO4pSLCdazBwzqlwh5BO8R95WS7kM9o1CCzn+jUKyYUfwAnWeuWzDC7oRJWBMR13Iv21Kygmd5P4KVYuvltScAdOdKzZxRktvs0pycvISJXYSdIqOzsHMvrISaZpwa+z9biN6BcjAusSWQt3ferlbY322WTw6ja3C8pT7t+zMzHpI0WNY0b1wgkV7nkemvWPwsp1ZC6dVk2IBFBpU7HU0eC4i+MlhI1aLGKh+4TBUcBxhfCwAgDvkPJ06mxlLYbjJ/jrf9KvTfGcBCnVb7le/ZPe7oshMhvbfw59zziPBmSv4Hlhi5bpSsCrZbWcAStgyRRa2bnv4SyQXl2yqMkLXg0Yo58yUrnWUPS5zY54p4feREpyqH7qvIq3j2CJ5EMVMyPLTOgQCzeje4qWzNXff+nYXRS7T1XxGQp4iRBK98Mq2Lbh2uyPFYFw8MOyZU65Cg+Manx3XOslfxsvYdx43gtwAN4Zy6Ps8W6BZ3YqVvwkO7NZk9MRqUEtIDB8wvsW0VdJ2EqxRXFF/wnY05oLUeX/x/MLskx/gCaFeYvl9Kslbd8yb4hfj7Px8k/0qMfSzi6xg0ZZpZJq7eEKMvmWDyE/5FNPGumLXEzjtWc7j2cxk5EcuFHvtJO2JzeGG+/DuP11bTk8jWqJDGrhs/x258Y8x7BGxNmPIpUQp4kqCv1uzB81m3IZLXTrTS8y2l1X7Mu9gzbBA8Kfs/Bhvw== 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:(13230040)(36860700013)(1800799024)(376014)(82310400026)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:02:11.8315 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b35c14d-64d6-48d9-e6cd-08dd5c39c377 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: MN1PEPF0000F0DF.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4467 Force the SEV-SNP VM type to set the KVM_MEM_GUEST_MEMFD flag for the creation of private memslots. Signed-off-by: Pratik R. Sampat --- tools/testing/selftests/kvm/lib/kvm_util.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index 33fefeb3ca44..089488e2eaf6 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -413,14 +413,17 @@ struct kvm_vm *__vm_create(struct vm_shape shape, uint32_t nr_runnable_vcpus, nr_extra_pages); struct userspace_mem_region *slot0; struct kvm_vm *vm; - int i; + int i, flags = 0; pr_debug("%s: mode='%s' type='%d', pages='%ld'\n", __func__, vm_guest_mode_string(shape.mode), shape.type, nr_pages); vm = ____vm_create(shape); - vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, 0, 0, nr_pages, 0); + if (shape.type == KVM_X86_SNP_VM) + flags |= KVM_MEM_GUEST_MEMFD; + + vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, 0, 0, nr_pages, flags); for (i = 0; i < NR_MEM_REGIONS; i++) vm->memslots[i] = 0; From patchwork Wed Mar 5 22:59:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003623 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2088.outbound.protection.outlook.com [40.107.93.88]) (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 5C8FD1F7076; Wed, 5 Mar 2025 23:02:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.88 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215750; cv=fail; b=JGlORMhuqrPfOicz5GkGbCLHztEPdAxfRAf/vH5N7xLTmk0WnAxLyhwlil7Nd/k/kyPwnvNl/zeKpyRDaggxH4ZspTacbDeyJtFvKeCxXcfcypvkN5ms7idyRuP85x1vj/8HErKfI3qN2FMDbSbSRYQxe3iAP/Ag6seVocRXbSw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215750; c=relaxed/simple; bh=qMtFr+x2ZkJNsCqK82IKZg5c/ENlX69wHPRP1d/jgMY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pnSqFE8MzmbRNZOUo1EkN1xuKQKNt4I7BRsRgK9Q/1/w1vN/J63nhIUcH2pw8729I7B3Bey54Lv8B2BiufF9RqOtbvd8ftBF3qiDfyR8mG+sWqc6na0r0si591hoLJ/KUCC3AJgS13803q4Xdvoe+7S4YUNQhBHbpJ/KPXnsVpY= 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=OUTOAGcN; arc=fail smtp.client-ip=40.107.93.88 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="OUTOAGcN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ydimhvS1yygjUbL5bv0Rdc6pjqFPJ7hwoLoi3lwqzut/2tIkRU5NJBAOcyHFi0Khxexzsiys9b6rfX/jpfQPXjl+GihlpWjLh9GEQ3igj2Y9CBN6nIA2pwakfM+Hsfh5YTs8CYpjwzih6pV4NHfOorHKWwBEg2sH0N1hO1dfn9PnhPIdgILZIekShCxsuSE+s9GRI32tLng0oS82DEzVI/lKhOC31J5jww/v9DSdCkGRc13qUdvRNdR2wK7pDGM3GKPkry2QQ7y+KFqb5jypxcOk7Q6hgN5/9QizoyVYDVUkHUsuwI8l2KNn68u7r/e1v8cILluVNBTfqon1Pm78Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=6wZDv370DRQqtBSv1Lhg+NuZ46P8LTX38bNAu3gbV3w=; b=T88ECyd54D6BQnArKg0O83KlGE6aIyZM6VdPUYJs7XXlDIvFeJXZIl+h4qJUdWSgel6bOj2PfbMIBMayMzPLspnbIEZ/aN4HvUTiGAQHB0EIhaxOaTxBJN8FdWSG0Z1fyCZT8e/GnE99wCHQwUsO9DeKFUlIBQFmTnqcGAsS3mV2xM8fTk52F50LVy0WeaveyULBfoQrSSETnkz93cNMl4I1WVahEnAMPDkjHW90calRQSrH00ZmlZl/vjnQ2s4qlqmyJP/L8JiErU8CqrkjbKoVTh0sF2DyU0HmBUQPFXlYJvXrSuJRxCAhz7+Ss1uV6N93c8m030bpakDZCeZFBA== 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=6wZDv370DRQqtBSv1Lhg+NuZ46P8LTX38bNAu3gbV3w=; b=OUTOAGcN7SyzASDLul4MYKMW4tsJy70fEVYIh1jKk/sZMfki9xVnCdLOZ1XdmXvvEOBZ1izs5LSlNMB1mjDHF06QVr9XWtwLW9nvpGBLGF1nNqOwAkC+9wVLhb65xTVn0+XzzvPL0ooHToiwFidohhABGSqC4U2lYMGrFKTWk8g= Received: from BN0PR04CA0023.namprd04.prod.outlook.com (2603:10b6:408:ee::28) by SA1PR12MB6969.namprd12.prod.outlook.com (2603:10b6:806:24c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.17; Wed, 5 Mar 2025 23:02:24 +0000 Received: from MN1PEPF0000F0E2.namprd04.prod.outlook.com (2603:10b6:408:ee:cafe::32) by BN0PR04CA0023.outlook.office365.com (2603:10b6:408:ee::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.16 via Frontend Transport; Wed, 5 Mar 2025 23:02:23 +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 MN1PEPF0000F0E2.mail.protection.outlook.com (10.167.242.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:02:23 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:02:22 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 09/10] KVM: selftests: Abstractions for SEV to decouple policy from type Date: Wed, 5 Mar 2025 16:59:59 -0600 Message-ID: <20250305230000.231025-10-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E2:EE_|SA1PR12MB6969:EE_ X-MS-Office365-Filtering-Correlation-Id: d9bbc7ad-1119-49d3-4008-08dd5c39caaa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: ydKQG8duj464eCZQnVDs7mgdGrETtWsPYQf02K4huiPxI40zVT6yMJy9jsIyTesD/E1LeOZtJ3xruhaLTefeP7pRUovCEntD9ny9xoaWiSu6HFB6gu7tkPMpd4x5Ssy+RGQoUoHXTNEEeBd0B/hj81HHwEf9Msi3r/EW6O27hrTQ8zHZpsP8vUrLuOM4SVUSbM3x2Gmm6vq2EHpDZJlcMn8ExZ2IWpkNpIk9nYKZdZkaEqUi/dzVtym9w7ThltFkiazmSkaNLCoqOI4ibiPwzIOMCZpd1kwkIfMnerav1PQmL5EdfRicDYarhKuGKhh0OsCAkBguJ9vovKXwl9r+Riad+7Q+gqFx1JotPZb7mNxuNHhyA2dzW+4ueygfjj9Jtnso70ia1Kx/emLKZUZMpszqoEW1DApBuXf0EUduH5zyRJBhmLKI0uCAdugdqkg4Uu8/0xNONozOBwSzTfbFIfQxIFuKQCrpIQEXVuN5RkOxMluOEzBSMqr7vaPhXBBx2y8mYPEde88xVBL3jj028d9i5Mnwq3oEvAKdtyc6mgkUn4VvmO7jxF+uGiWmcrSiK8/uxXTEeOBTGpwoT98Tx6wMAi+TmtMnBikpKlkLkh6uy6qgPkvS1pdA2TfTJqUqKqWm6SW+4nZJsfH5MfUR3VfYZRg+iKAEUSOHFddA9t9pyjQewtmEvfhsjddmMlRp3i5VldUeRFKx+L6BEB8OXCkAU5HGZs6Xzon5La92i+bxegC1Dmkp4pn0hnPq5rw7IlEpLWeiLldq6nzMnqmqik7Js68tZDn5g2+xiBIGWnU2WbjVlrwHQEQdwOAnAKwE7FgyTsTHsiFLzEEC3gs9mmV89s6wJb2hkVGcYeHnR7s/lH6RJlF/uFriL7m1HEX5mW+aMZHIi+fYCbrfe+ysdhJPdMgB/90I/fEk1nGaec1gwYyuAQdbzxkp/O1ibQD8NY2m6Z8iWXOnwCrvsvu/0w90WX1CpRK7cNwGtN2ogmi+T+lCdi9pVuTc4T3OGvAwjZ/CS5xHszq4RB1SHepzUxiQW9Kg6J21qw6IVXA463lReuuYr1ztZElAtbZONM0qWupiK6/2qFTN476DBAA+8yaoZ0I8l5n3Bi8h+GY5gLM9ZDib/sGxQ20AwxYVhDtmEvNtHigeNQdNvaKJ424ZAVwcgxOYG45RvAmZO6dJUsm1pZdVT/egaftdcWnjxBDGENZYjeRw8FEbkd6zvsFwMTccshuq5wIr63tJ3J5n5tD0wYWuEqWde8cliorQWC4NnYcGr+4cWSolFbFIgsdWGhi5wWr5fJQlGwCvcFwVwydePQ9ArvIvp4PA+EJhrbgBHSF5+n2r5o8jZfzkOBmWp2pR7nhYrCory6C9sajT9alCbg1GQoqqjr6meZ/fbKbazQY9upr78wnkvL9NW207YccG4fANe2La5rx6aSUanpEZ20Z5O1tKm45Qy2W6yoi/exGF68p71ILwQz3uLQnA034k/SA5E4BeuTYiraTHSQg= 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:(13230040)(36860700013)(82310400026)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:02:23.9212 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d9bbc7ad-1119-49d3-4008-08dd5c39caaa 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: MN1PEPF0000F0E2.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6969 In preparation for SNP, cleanup the smoke test to decouple deriving type from policy. This enables us to reuse existing interfaces as well as deduplicate the test calls that are called for SEV and SEV-ES. No functional change intended. Signed-off-by: Pratik R. Sampat --- .../selftests/kvm/x86/sev_smoke_test.c | 50 ++++++++++--------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/tools/testing/selftests/kvm/x86/sev_smoke_test.c b/tools/testing/selftests/kvm/x86/sev_smoke_test.c index a2de1e63c3cb..620aa7c41f7a 100644 --- a/tools/testing/selftests/kvm/x86/sev_smoke_test.c +++ b/tools/testing/selftests/kvm/x86/sev_smoke_test.c @@ -61,7 +61,7 @@ static void compare_xsave(u8 *from_host, u8 *from_guest) abort(); } -static void test_sync_vmsa(uint32_t policy) +static void test_sync_vmsa(uint32_t type, uint64_t policy) { struct kvm_vcpu *vcpu; struct kvm_vm *vm; @@ -71,7 +71,7 @@ static void test_sync_vmsa(uint32_t policy) double x87val = M_PI; struct kvm_xsave __attribute__((aligned(64))) xsave = { 0 }; - vm = vm_sev_create_with_one_vcpu(KVM_X86_SEV_ES_VM, guest_code_xsave, &vcpu); + vm = vm_sev_create_with_one_vcpu(type, guest_code_xsave, &vcpu); gva = vm_vaddr_alloc_shared(vm, PAGE_SIZE, KVM_UTIL_MIN_VADDR, MEM_REGION_TEST_DATA); hva = addr_gva2hva(vm, gva); @@ -88,7 +88,7 @@ static void test_sync_vmsa(uint32_t policy) : "ymm4", "st", "st(1)", "st(2)", "st(3)", "st(4)", "st(5)", "st(6)", "st(7)"); vcpu_xsave_set(vcpu, &xsave); - vm_sev_launch(vm, SEV_POLICY_ES | policy, NULL); + vm_sev_launch(vm, policy, NULL); /* This page is shared, so make it decrypted. */ memset(hva, 0, 4096); @@ -107,14 +107,12 @@ static void test_sync_vmsa(uint32_t policy) kvm_vm_free(vm); } -static void test_sev(void *guest_code, uint64_t policy) +static void test_sev(void *guest_code, uint32_t type, uint64_t policy) { struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct ucall uc; - uint32_t type = policy & SEV_POLICY_ES ? KVM_X86_SEV_ES_VM : KVM_X86_SEV_VM; - vm = vm_sev_create_with_one_vcpu(type, guest_code, &vcpu); /* TODO: Validate the measurement is as expected. */ @@ -160,16 +158,14 @@ static void guest_shutdown_code(void) __asm__ __volatile__("ud2"); } -static void test_sev_es_shutdown(void) +static void test_sev_shutdown(uint32_t type, uint64_t policy) { struct kvm_vcpu *vcpu; struct kvm_vm *vm; - uint32_t type = KVM_X86_SEV_ES_VM; - vm = vm_sev_create_with_one_vcpu(type, guest_shutdown_code, &vcpu); - vm_sev_launch(vm, SEV_POLICY_ES, NULL); + vm_sev_launch(vm, policy, NULL); vcpu_run(vcpu); TEST_ASSERT(vcpu->run->exit_reason == KVM_EXIT_SHUTDOWN, @@ -179,27 +175,33 @@ static void test_sev_es_shutdown(void) kvm_vm_free(vm); } -int main(int argc, char *argv[]) +static void test_sev_smoke(void *guest, uint32_t type, uint64_t policy) { const u64 xf_mask = XFEATURE_MASK_X87_AVX; - TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_SEV)); - - test_sev(guest_sev_code, SEV_POLICY_NO_DBG); - test_sev(guest_sev_code, 0); + test_sev(guest, type, policy | SEV_POLICY_NO_DBG); + test_sev(guest, type, policy); - if (kvm_cpu_has(X86_FEATURE_SEV_ES)) { - test_sev(guest_sev_es_code, SEV_POLICY_ES | SEV_POLICY_NO_DBG); - test_sev(guest_sev_es_code, SEV_POLICY_ES); + if (type == KVM_X86_SEV_VM) + return; - test_sev_es_shutdown(); + test_sev_shutdown(type, policy); - if (kvm_has_cap(KVM_CAP_XCRS) && - (xgetbv(0) & kvm_cpu_supported_xcr0() & xf_mask) == xf_mask) { - test_sync_vmsa(0); - test_sync_vmsa(SEV_POLICY_NO_DBG); - } + if (kvm_has_cap(KVM_CAP_XCRS) && + (xgetbv(0) & kvm_cpu_supported_xcr0() & xf_mask) == xf_mask) { + test_sync_vmsa(type, policy); + test_sync_vmsa(type, policy | SEV_POLICY_NO_DBG); } +} + +int main(int argc, char *argv[]) +{ + TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_SEV)); + + test_sev_smoke(guest_sev_code, KVM_X86_SEV_VM, 0); + + if (kvm_cpu_has(X86_FEATURE_SEV_ES)) + test_sev_smoke(guest_sev_es_code, KVM_X86_SEV_ES_VM, SEV_POLICY_ES); return 0; } From patchwork Wed Mar 5 23:00:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Pratik R. Sampat" X-Patchwork-Id: 14003624 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2085.outbound.protection.outlook.com [40.107.244.85]) (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 0F17D205AD6; Wed, 5 Mar 2025 23:02:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.85 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215764; cv=fail; b=eybJOj/JwdMKYtQ2HBx9TNQK2FlHN5Ue5NKRwK1RfKlM6he8up/uMs9C8/ZQg/IkSEBY5u/Nwmb1fWEV8CiOl/1rUg6E2/OS/x1c5Xva5suSZCr7SFacs/il2sdcze8eTY8HqUtF1obJuG37gZoB+LZYg/wACLFq6JbaUlNeB5A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741215764; c=relaxed/simple; bh=RFYa9WD8MlAi5rvaLTmSbjXe5T/nmPNuTqO4PXcBJ1s=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fzuFwkHLOJxxVFK/wyhnbZvZa02jT0lcs3L2p2cFh3upfIZRBQ1bbl1bYoFz/SIUHh/OaL6CQDP8tXt+LJcKB/LGA7GXD4Uo2ps84qaug6/erdLHCnDXbKwdOKe0t2doOAwQXMY2zTDol3L7vr1X9O867Lu5fJo0KPaKEMrtMDg= 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=KSrL7Pnm; arc=fail smtp.client-ip=40.107.244.85 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="KSrL7Pnm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tjZuMv3lOMhFE5O7wMXx02vwYjik8F1ghCCjkk6M/Lq7Y87W/1vLtGamqNhTGmZoH6ggUh9APvxnjLRijMOaFKwKY1aHPDH0mPuWFZq7A9jA9swCSiTswLNDQU5+LvAcVEnEn4u2tHLVy7t9boOg2UeDURA/ZSRqTXM++yHjh0QDwwzpM8IKmBejBL+25/XsI6PE9p7b5WUE0P9Inks3nTK4+nQVEpa8AT5nkCwaKjcGdvCWe2bKJTXi3SeuuskDcWmRMSyBkPeLK/Vo5vu6CWcfrKTsLLz5shxQoLxtipiBSxoNQ0d/q4SosBbyvy8YqSEuQDXZhX/KDl33ac3ARg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=n3YD95RsUY5eTxx8ae5CVScVbNwbwBFPsy+5uUC4FJ8=; b=u0pTW8B8BlZuwdiYHZkkWlCSA/PEWRdbok1UPbRLfaglOXdon/e1uZ25UwaH2mz59swNcx9v7J/t3nsjSFZS5q3Yhoo6d6xrnwQfDjB4iEFQ85rolKTgIF/T8qZSVp2QhnRi6+4l8MFDlBVX8f8dg27vdJfidg4XkQf+0QmIKpsljnlySoLBup60f30LHgBX5yJy+u8CeL2bfWqHKP0TaP/lNguGeusBraAtaWXLxq8eTSMvHNexHs+HL8OsniywqjEVjVL9HAxDCghbC8IBkDnQADn5tl3D+7bmzP0L3+IPWjwWj8Rpgpkxw3RZgzOS76A55+KID3iQ68VduY+/ew== 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=n3YD95RsUY5eTxx8ae5CVScVbNwbwBFPsy+5uUC4FJ8=; b=KSrL7Pnm2zVWdKKn7HSNf0u465etDifAXsAw4Vtc7Bb6XDP5oq6xTsCTmuHSKbGLG5H92cbKxsWyqugQFDxbhTiz36ipowQMOR0O+8UTsqGaB75Cl042hyuvyItH/NJNwgffxjn0PY/ubhULtl6ykrV5OFf4RXuaBwtK4xtRhtQ= Received: from MN2PR05CA0010.namprd05.prod.outlook.com (2603:10b6:208:c0::23) by DM6PR12MB4353.namprd12.prod.outlook.com (2603:10b6:5:2a6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.16; Wed, 5 Mar 2025 23:02:36 +0000 Received: from MN1PEPF0000F0DF.namprd04.prod.outlook.com (2603:10b6:208:c0:cafe::3d) by MN2PR05CA0010.outlook.office365.com (2603:10b6:208:c0::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:02:35 +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 MN1PEPF0000F0DF.mail.protection.outlook.com (10.167.242.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8511.15 via Frontend Transport; Wed, 5 Mar 2025 23:02:35 +0000 Received: from zenon.amd.com (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.39; Wed, 5 Mar 2025 17:02:34 -0600 From: "Pratik R. Sampat" To: , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v8 10/10] KVM: selftests: Add a basic SEV-SNP smoke test Date: Wed, 5 Mar 2025 17:00:00 -0600 Message-ID: <20250305230000.231025-11-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305230000.231025-1-prsampat@amd.com> References: <20250305230000.231025-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0DF:EE_|DM6PR12MB4353:EE_ X-MS-Office365-Filtering-Correlation-Id: a91919c2-a281-41aa-33ee-08dd5c39d1cd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: BJHjwriffoFLJ+rFRMvj7+ywyyyYqki7zOdiFzii2Yz2MDkjUmCorXMbybs8BvNUlLVQLrmLt7cRjQvhfOFhfv2PPZhpN7GPnNQ3QoNE5mfAGKyRPhzVk667Tu8hWm+2EwDWnjIN37XeEFu2FVFUfYWlMW62FZ8WNmKbiOnJE+63cZ/sruJCq6dOR3T/aP8HvRBQK9j0ly5HVpvs0beDYGrSxg2T8c0RDzSZxm5U+M0pPDSRjRHUzaj9bn7ZJb4OlSa0VaPugzc5r1hz4Xg7rA7cWHTHBGOFiqGJ5CuLYVqXz8zZEQBUS9LkBBEvlKLKdTVAatLSJ3GddvNet4cPrIRN0MNJso23KVAIgIIs/6hesMhEs5SOHHgmi5RMGbsIvZwCqP8BJcfxcFE4jmTkl1FAK871TOKC35w3+Byc1zOiqOu7ZCwfJJlC/EesVEwKNbSYCRvnDZ3KUnzDKc9DXkP15KY3etFKPuqcUI2Xm6Ofl5jwASyNFdn6Wxe8/WPViCBMFxHY4/Mm4OetoazbN1lBUfUoWRl3gN+L9+uMgbmWQzqqozE25DAGG4CdJNEMz6b1MCsQFQ5ye2KCabmRgvY4v+6KnmcTROnvud7zeBH95xVxJLuoDJnpyfY5zHwRbbzK1ipsFeybA2XkeAN9yQZPFO6LsEWCLl74ppn62qW6ve9Ivc6vW9JQ5cBG7idCUyYeARXFz1ePFjNXc8NtNHmHAVr3J9lPKI3tjk2Fpwc819Id05+fmDHWx7Riq7Kf+A8bJkfTlTTi6K92Pf04LLBnLABY1eSkZNsIo2AS2fKQ6+vz+KMtJ7HgEPEP5yjMapIcEC9PSDdh6e8AyBXh9s2MbsZIc5Ui6Ronj5/OXvbGJL6BTSnMSZRtWUYPPeFht5nTGEh6SWJS7VvlYLWtplHP9KUK9sW+QavsG72XTjpAHthXT6hoGTRJcNhDOmDeLLwc1gOXSDPZ1P31l7fxosk5WLpUfGYZcERoosoXh99Y9UzLYWkEjmI9wh0S7FPNwBwrhOVGEBYHkm86bpm8Z82C8kGfBysg3guVtGktmdSgkzWbsRucN97bPT1MtuufZ8wY5SSOa23UMURaFnhbxRBrmI/GMgLOJOQpXR5rgwVfuBdhn2MsM9XVTbei+eSbzkkq8P/DnLltPGIBL0QNcjvjwQww7Ml5SEvXcrQu9wrwB6SAJgzopxBxsEabcU9L+ipCjorcm53Yxpzr+0yy/6WbiCx8Dm4xkC/Wml0AeCDUxBwQX4Y58T+JKLMZD2Pyn34Oc6XvCLMlzFq0j3nzgH8Etx7jLCSoPXxOYh2M5OAmfFF6OCYaKKsNS2DSmFQcXHGJ6KNd8xJpayNIigck+vXaIZ7EvrUnJxft6xz/8/P+O3yCOvKO8Y6kdxSmPGkIYhFljpvtKc3P4ZVVLkbJ4RieYmkmLccjlgFaq6w9ilEnPiRaDgDtMS7NOiGtLcYltlXvCt5sSu/jbgPV8Qdiy4BWi3Epr/9HWYBvD1xRFQI= 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:(13230040)(7416014)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 23:02:35.8787 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a91919c2-a281-41aa-33ee-08dd5c39d1cd 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: MN1PEPF0000F0DF.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4353 Extend sev_smoke_test to also run a minimal SEV-SNP smoke test that initializes and sets up private memory regions required to run a simple SEV-SNP guest. Similar to its SEV-ES smoke test counterpart, this also does not support GHCB and ucall yet and uses the GHCB MSR protocol to trigger an exit of the type KVM_EXIT_SYSTEM_EVENT. Signed-off-by: Pratik R. Sampat --- .../selftests/kvm/x86/sev_smoke_test.c | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/x86/sev_smoke_test.c b/tools/testing/selftests/kvm/x86/sev_smoke_test.c index 620aa7c41f7a..0505cde77358 100644 --- a/tools/testing/selftests/kvm/x86/sev_smoke_test.c +++ b/tools/testing/selftests/kvm/x86/sev_smoke_test.c @@ -16,6 +16,18 @@ #define XFEATURE_MASK_X87_AVX (XFEATURE_MASK_FP | XFEATURE_MASK_SSE | XFEATURE_MASK_YMM) +static void guest_snp_code(void) +{ + uint64_t sev_msr = rdmsr(MSR_AMD64_SEV); + + GUEST_ASSERT(sev_msr & MSR_AMD64_SEV_ENABLED); + GUEST_ASSERT(sev_msr & MSR_AMD64_SEV_ES_ENABLED); + GUEST_ASSERT(sev_msr & MSR_AMD64_SEV_SNP_ENABLED); + + wrmsr(MSR_AMD64_SEV_ES_GHCB, GHCB_MSR_TERM_REQ); + vmgexit(); +} + static void guest_sev_es_code(void) { /* TODO: Check CPUID after GHCB-based hypercall support is added. */ @@ -179,7 +191,10 @@ static void test_sev_smoke(void *guest, uint32_t type, uint64_t policy) { const u64 xf_mask = XFEATURE_MASK_X87_AVX; - test_sev(guest, type, policy | SEV_POLICY_NO_DBG); + if (type == KVM_X86_SNP_VM) + test_sev(guest, type, policy | SNP_POLICY_DBG); + else + test_sev(guest, type, policy | SEV_POLICY_NO_DBG); test_sev(guest, type, policy); if (type == KVM_X86_SEV_VM) @@ -190,7 +205,10 @@ static void test_sev_smoke(void *guest, uint32_t type, uint64_t policy) if (kvm_has_cap(KVM_CAP_XCRS) && (xgetbv(0) & kvm_cpu_supported_xcr0() & xf_mask) == xf_mask) { test_sync_vmsa(type, policy); - test_sync_vmsa(type, policy | SEV_POLICY_NO_DBG); + if (type == KVM_X86_SNP_VM) + test_sync_vmsa(type, policy | SNP_POLICY_DBG); + else + test_sync_vmsa(type, policy | SEV_POLICY_NO_DBG); } } @@ -203,5 +221,8 @@ int main(int argc, char *argv[]) if (kvm_cpu_has(X86_FEATURE_SEV_ES)) test_sev_smoke(guest_sev_es_code, KVM_X86_SEV_ES_VM, SEV_POLICY_ES); + if (kvm_cpu_has(X86_FEATURE_SEV_SNP)) + test_sev_smoke(guest_snp_code, KVM_X86_SNP_VM, snp_default_policy()); + return 0; }