From patchwork Fri Feb 21 21:01: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: 867251 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2082.outbound.protection.outlook.com [40.107.95.82]) (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 48F9C253B7D; Fri, 21 Feb 2025 21:02:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.82 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171755; cv=fail; b=SE3MiVdgKYzbDpOT0n9NJrhFxKcYvBJYIi5Mk+zIpNRQHMVae/k9E/PxL+cG+5N4GfuDlo4S2udMvByzvEMOYh6gpzJRAxcvd97f3vqM9peoUcj3OBi/TAVS4D26HpZ1Gi8KjxnTuj5sI5/ZyvWpvWIfmNiZTd7R2FmT4lPo7zU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171755; c=relaxed/simple; bh=A6Ex4kXAt5vwR94gZ9EiRS/RwKr6itF8Jiyj9S9goKA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tzX1HR2E0LlIcWXfUhm3WmcJaB3C+WawgMSlnDCBbYjOASLyD9he+8dwjigbuadnTyOY6lThStlEBcsxUQbuaar8arKq/AA30ItazRlzQHKqYHLeyNFtR1W2e8wP2djK5t/hXG/CPO+WDeMU9BBEfBxv0P30bueqzXK8L6ofYg8= 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=ydF8IlXz; arc=fail smtp.client-ip=40.107.95.82 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="ydF8IlXz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EHbPBoAR7Jw1y3T9GlfkfJnDwPfNFVrhJqRVnKOEko2oj/Grv0LwujSA98YttwSNQ7w1QVbtIb5zv3PS9SI7s61hTaqspCL5mULFqhjZEyuvGkwH3JPr5CH7nteFYRlAFhwGnLZhIlvm7VcuPxmQxpFz9Yu4cQx21+yiBB9wcoRKYrt78I8j0K1cFcEGG5RBC9YlC1SiUaMLX/3yEUF6ZLhiw1/VGAC3crC8lfr99f5EVPdqnPmOz3jOVys9TrEfTDyZhLeqQlqGLjVgwARgi2xKW+CRfL4sxnA5aL025qdVQR6cLpmvveD/VjccxU0QK3umZhfmqBV00KeFb0FevQ== 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=+HLu+pTgiLakqtGsMaAZ2/hfYv7YYd6/E0yW0I8O61U=; b=HGDMxXZa8/f5jhxedqj5GWbW+te2YSHD8QsIY8ZwmxUlS8vSvMEaUputjeQ/cfQmC1edSajsPZPfr6UsLE5tq8+yLdtu6VcnYc83HFop6HFPHIzirBQ2eZ4LocqYzBJp9DInyNEvPh+OWmvnzH0FnsenRe5Q8W7INI/1e9XxlEnOx9LY11Rs2h+uz1zOD3YtDZeMZ5rzMMI01Is+WMGnwGBn1b9eOZdEsvGONl/cQyMxm1Cq50eUm37nrpUaV8F3F2vr+OzEMo9e0ia0qnzkCVEuk1By6HUZ03ZrcSsdZsi6DbOjOcJQChaXMfjbPsJe9HnjW9T+RMrG+FOJzhmJCg== 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=+HLu+pTgiLakqtGsMaAZ2/hfYv7YYd6/E0yW0I8O61U=; b=ydF8IlXzLBQKaBvGbKctnTkBaQuhiF8WSXcIEYAA+/PmmlduwPdGBErLmCqI4bTDEN+ilV4qivubvvRNH34VjC8EvNXRwpyxZsF/MvWWb69aqQp+j4HWWFxy77oGAJiyVExNLwvLDI6hjOzqzkvtHmsAWe50q49aG9onZqHzpTk= Received: from MN2PR02CA0001.namprd02.prod.outlook.com (2603:10b6:208:fc::14) by PH0PR12MB7470.namprd12.prod.outlook.com (2603:10b6:510:1e9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 21:02:27 +0000 Received: from BN3PEPF0000B072.namprd04.prod.outlook.com (2603:10b6:208:fc:cafe::2a) by MN2PR02CA0001.outlook.office365.com (2603:10b6:208:fc::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8466.15 via Frontend Transport; Fri, 21 Feb 2025 21:02: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 BN3PEPF0000B072.mail.protection.outlook.com (10.167.243.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8466.11 via Frontend Transport; Fri, 21 Feb 2025 21:02:26 +0000 Received: from sampat-dell.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; Fri, 21 Feb 2025 15:02:24 -0600 From: "Pratik R. Sampat" To: , , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v7 01/10] KVM: SEV: Disable SEV-SNP support on initialization failure Date: Fri, 21 Feb 2025 15:01:51 -0600 Message-ID: <20250221210200.244405-2-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221210200.244405-1-prsampat@amd.com> References: <20250221210200.244405-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: linux-kselftest@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: BN3PEPF0000B072:EE_|PH0PR12MB7470:EE_ X-MS-Office365-Filtering-Correlation-Id: 74079dfe-da3c-4585-68e8-08dd52bb0ba6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: /4Z4Jzwm2o8nq2oms1kY1ks9LdvEDHcOlz71i87YY0++zw3J4Ittm9hDsaZ+e+w9knZqhP3Qgqt8yiIKNqL68rpp89s2z6ZkgzBFSiYM8fySaHCzdsWYZExa54G/bzhJU2SZvGSOyICLjgNxP72F2ABlREkMvf/WJE5K6x1cawduLI1QwSICOZwX7Q/GDezRwAoZx7yB7WUJNM825WI014CDgQkUZL4Lm7SE7u+1j7GYxgENzIU2oQx2ZyBRTKzCf0sKzpYVw1ztnyDAf1ZA0hBPu6k4onClZB7UNeLHYdDKwi/LVJUgyHR6AjdEqmDyaVm1d4VHoLOpzW5Ol+1b4jcOKxZCRqkApMMK+xOSpAYXKkEFTTlPRpeAeh56mk7yUMDIiDVjPFBb9h9ZAcMObwqLJl90VQeYuRkC4S1Bg3v64S33fzKQ2K+nEK5ENCRC2zpDX+TVOJ0oaS2i9AEvRL5Zy3Ug34chN2gKwLciheTvD9AF3zsNi2hVhMoCXv+tBOcTTCmAUt/LBIWbFqNx3KxPr4Vtni1HUdRklYB0zLWghHOn2QIqQ8p79wHuVSMXuMMpghIs9GIk7xhUNaEFIIVYRr6Q6c7Qlmy56+IH0AVf27l3WUdRW7pgcuagR+V6rbuU3topmqCbRbosxaJt8nTG+ZOATCJLjgvm8NUrkYVDyQgOjWqDarQ21a1PB9TM+R7jS5c/JXM2clTTmDFyJVNvbncIRbpHzYKA0pTpqmfL5g4kgt5NYOQTVNYgDPqwOJ2jf9/t7gKaRD4v0V367wTSz32QJzuLn968qSBT7TeyzBmiSTda+xL0gIIUYZik1N6mPSSoLtCBcOJ75jvrcy4c2Z4tpqfRUqxOTlL+wcNVR/SsyYpSjuViKN6z7V4dYWtKEGZOqSiAq+ncsLg34gN4O92U2OTegHWOC/CbCxa7FMFYcvz/C8znzeglNuyhmz8iGOcxRafDvmSTbL/jjKmNjZjPIh91vhF8ejv0Q6Po9ibUgxIW+SaaiKI+AMXTGbrMc1EneGR/zJo1hp5M4TWURftJFcrEeh2Mgcd0qXGFcpgKXpVw44he5qaiEMZm33esSdMh+7qeetuuXz/l1Sk7+fw3h/77q/gQCAOEcYoAvBomjEdMqiG2pgxzs/ohyWHn4nZjtutJaGYpsmCzhhA67Hte+CwEGfl27BB1LAj5UfqWx4mJ5zmMr+IeTCOZiTVjtFQ8im1hAUKSbaHA/uEtL0Lx4ZeXO+xe2ee4ogTpIcJ+69PzOXaeaCuo8er2vXlGIX3dwS8oN0KMimSICdbm8upw59JsqS7LIu0D9NvI7flcfuZOP4laciSfjBT/+Qbt6izm/WXXpeI/cuyNhxytwlPPQznju/giMjnyG7mG+ocm9Cmg+SLeG9yqqQhrIq6toBsajSrcB+C+L436UOpy54YSABSb1qdXAZxUV/fnB9J0sK4jEHuHmPlUTC/5GoVbTqvRJmlnz7noF91iuit0Q2tbPSNoqRawjZO+BY4= 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)(82310400026)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2025 21:02:26.3358 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 74079dfe-da3c-4585-68e8-08dd52bb0ba6 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: BN3PEPF0000B072.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7470 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. Export this information to KVM and withdraw SEV-SNP support if has not been successfully initialized. Fixes: 1dfe571c12cf ("KVM: SEV: Add initial SEV-SNP support") Suggested-by: Sean Christopherson Signed-off-by: Pratik R. Sampat --- v6..v7: * Replace FW version check with sev->snp_initialized (Sean) --- arch/x86/kvm/svm/sev.c | 4 +++- drivers/crypto/ccp/sev-dev.c | 8 ++++++++ include/linux/psp-sev.h | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 0dbb25442ec1..87b5d63a5817 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -3050,7 +3050,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)) diff --git a/drivers/crypto/ccp/sev-dev.c b/drivers/crypto/ccp/sev-dev.c index 2e87ca0e292a..8d2cf8552bc2 100644 --- a/drivers/crypto/ccp/sev-dev.c +++ b/drivers/crypto/ccp/sev-dev.c @@ -1352,6 +1352,14 @@ int sev_platform_init(struct sev_platform_init_args *args) } EXPORT_SYMBOL_GPL(sev_platform_init); +bool snp_initialized(void) +{ + struct sev_device *sev = psp_master->sev_data; + + return sev->snp_initialized; +} +EXPORT_SYMBOL_GPL(snp_initialized); + static int __sev_platform_shutdown_locked(int *error) { struct psp_device *psp = psp_master; diff --git a/include/linux/psp-sev.h b/include/linux/psp-sev.h index f3cad182d4ef..d34068c87a28 100644 --- a/include/linux/psp-sev.h +++ b/include/linux/psp-sev.h @@ -954,6 +954,7 @@ int sev_do_cmd(int cmd, void *data, int *psp_ret); void *psp_copy_user_blob(u64 uaddr, u32 len); void *snp_alloc_firmware_page(gfp_t mask); void snp_free_firmware_page(void *addr); +bool snp_initialized(void); #else /* !CONFIG_CRYPTO_DEV_SP_PSP */ @@ -988,6 +989,8 @@ static inline void *snp_alloc_firmware_page(gfp_t mask) static inline void snp_free_firmware_page(void *addr) { } +static inline bool snp_initialized(void) { return false; } + #endif /* CONFIG_CRYPTO_DEV_SP_PSP */ #endif /* __PSP_SEV_H__ */ From patchwork Fri Feb 21 21:01: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: 867250 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2061.outbound.protection.outlook.com [40.107.237.61]) (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 3F29A2528EB; Fri, 21 Feb 2025 21:02:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171779; cv=fail; b=VLF7wrzUtYCBx4IP+NINEHdBnwa4iHiTrLZB3VvCoCJr6tSSxQEzy3i/phwrO5XyxcnbR8elbY/kU388+o55gSvsvfrn5J9PFDZ+0ykBuxA76uTRVLj0ydZ3/+ujJGNqw1mm5deekLY5VFwynrH4ZfbzrChpnL64yphgVZLvvgs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171779; c=relaxed/simple; bh=pRP3F3YeFCpn3qqIbKS+hQMhC7fJO6anzPahcl1cn7c=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=aURpZKD6yvF86U5WBTHp4+QKGOiJlfphL4SDKx7qufaPq6R7eGCfieo10RJHAMtuTY9GOous3VUS2Mjdb6MFiq5RzyEqnPZXZ5DCST3qPkSK32AzZ9hMMWJKUt5KcpPlR0KUbm0TC+4/pX5h03lTj9bBmZb/f6a9DX3qlUDSZ5Q= 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=GOyS1UUY; arc=fail smtp.client-ip=40.107.237.61 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="GOyS1UUY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NSpvgMU+/avS9u61zA+RmcXmrb6qwVy5BstHvGfNAPAa5TelI0XMS/7C3rIKE6xgxJSxpIZWW2p3kElGkm5qG0Pjwf0aFFfW4CQgkzcQK09q5NOB5du2rjKBh8nldWl5hWV0KNPGnNrJjATdzvLaUcTXLN/qoOPv9FGQwa5Wu8xbI4L90hIzjXp0cX7vbpCIB/0+kHvLF/Sq/PYJJIqRbH76t60Wpy1ypLr0xVETFGGNDTrKbrS12rRh2FxSK/OXfPk999a/7vFzqGwaaurHy3Q+LxtmLJgFjuGPw+Iog7uAK6hERGoDOYAFRI7H99iXqWt6znAuDsQN6VgZCPLMdg== 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=/pYZD+3R5NjnhheMHS0S0uLU2q7EAY1JOU3YB1yjzPs=; b=oF+ZZ+jWp/ex2fd+bxIRXNFw+L3umAXE/GFkyVlSPjYC9ckW8se8UgmuAWBhthqKXE/VBgYoWIR4ZC3wOWa/qSn20R+c1Ak4tS5YddbXegSmYs99GyX5q6uF5FGMK/y+kawBBJhMCvfcM+dEIyUy1Wg7Y/doEY/wMLv8aj9cXYtR3C/YkJf4M+wYsnWjvsp4o+wWP3G1Nu3j4a+jUPNa2Prqtc1lzSTqTHs8OU9Hjh9hQUJ8uiPVrIb/XZ+kf1onm0Muvkv6qz7oDgbil0/8MaqWmjDsK6APeq2FW2ikriffLOOt5thvv/lBGSK6DU1A73cchdOHUe17LnOuP+/aVA== 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=/pYZD+3R5NjnhheMHS0S0uLU2q7EAY1JOU3YB1yjzPs=; b=GOyS1UUYWkYV5MRLXLJKRMg0kX3s8/BzEHfbyF0BVln1ZsQ33LfU0OHgcO+qEUR60R8PmzaZI04ttyfzvH0vo6GL07sN1MsOiNTT5XTVCmTO5Va/UL9RnRKZwX+XRgNRS3+FPACxOiGwLQGMn66OuRKbJTuf4g1szb/hHUKxMnY= Received: from MN2PR02CA0006.namprd02.prod.outlook.com (2603:10b6:208:fc::19) by CY5PR12MB6456.namprd12.prod.outlook.com (2603:10b6:930:34::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 21:02:53 +0000 Received: from BN3PEPF0000B072.namprd04.prod.outlook.com (2603:10b6:208:fc:cafe::9f) by MN2PR02CA0006.outlook.office365.com (2603:10b6:208:fc::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8466.16 via Frontend Transport; Fri, 21 Feb 2025 21:02:53 +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 BN3PEPF0000B072.mail.protection.outlook.com (10.167.243.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8466.11 via Frontend Transport; Fri, 21 Feb 2025 21:02:52 +0000 Received: from sampat-dell.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; Fri, 21 Feb 2025 15:02:48 -0600 From: "Pratik R. Sampat" To: , , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v7 03/10] KVM: selftests: Add vmgexit helper Date: Fri, 21 Feb 2025 15:01:53 -0600 Message-ID: <20250221210200.244405-4-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221210200.244405-1-prsampat@amd.com> References: <20250221210200.244405-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: linux-kselftest@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: BN3PEPF0000B072:EE_|CY5PR12MB6456:EE_ X-MS-Office365-Filtering-Correlation-Id: d974136e-432e-45e7-0d23-08dd52bb1b85 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|1800799024|7416014|82310400026; X-Microsoft-Antispam-Message-Info: L7/ygGRdeBkbB0MyqlyqHmz9DXBuJVOgmPO0KpP1QVjWHs/kn3cFXqE3z0G1fI7DX5BZ5DT3XuMnB5OTwwDZSRjtDj7cqnN6M2RksehzsIhpc2YY+R0WmfRjBp1NTQscIa3WbpJyC3TlEYoI+7RkTxtLNRXDq6bpzysLIx9ZwXq5dYj+7X1ODEdB/vvzZsHRW2Q0NqAcgOo+FWZFvRLu5td2SaX188e8I3GbnwyXehyQ4Z/Elde6y2z9BZ2bBFxmEqYm8E3gZ5FQ05Gl0TIjcPHz7uhobjYgsTvz0XHVzFsm3vRnF1jgFfJvy9QFTlXnSUeO33JthJa8/Ue7Wgqc3FLDck6q2iLfRlG3zZXd7gZd5nq3ZnOLOef1ZFnH2L3Ay1qE95x9dFkc/ycojudVKCK6QrNNgZsORQPxnzHbTfTwCmfUbq5NqQ3pxla/Xv68pEYXfmSBjN0DPaSueOunIQFCXbc9hx1GOCdz4xyvdik1rStEoopikLEcjb7kKiHxYmYEfQI0J2Wa88v9dJHB2R5entZbl2a6+f0Jy4NPM1PYgSnncJniPm1Y+qovZM5CR68gl7DggxziPEyCRqwjcoazEU0NulfcTwRLp18vJnlYF4YuzsJrkh0E+/YuzrrAMIsqQOi5ZcAuB4hByfKAGADJvVVHcSLpkArb8a7sG6OFnv6q+oJL1IADn/JWsreA52ZEcza95Go+QzOqYxR2N9c8L2v3K9YUZdTIRD4QQZo5E483OMwKKqyZbTg//rZQLNV3nnV/UAyeTaRygVtofl2odrbIOIhsNdVYipGcdLiIo71tE4QEiTzLLX2C7Uxhl4+/kXYOcPfv/EqpOzniqfjPOLcP0xu5LZCzC6o9a5HMWi3vcZxl1e8AF94MkCNEPONXe6nNFCE6tPEivuUzONTTRT0amC/t52evvN3m8pVCPd9U16n0MLn1ZYYgE+H8mR2KRdKOR5J4JhY2qhTYdtCdyTshY5uN6jfvr4dwxbD1qf9aOQuTGCU7aehOfhAmtNDL6dRpc0KD9ikqJVqPIBNrnbp6ZEhXrUt3WqYFd4jF7vrNy9QbPG4CoT8i8+jVBR4f6JYxGXvHhf+VPCqVfKjycUCv51tRQf8mMkftjCxS0M3SEhzRDNWgHuc+0ZvGHajxQRsaTT4VaMqCj00RvrZv6R4a7BXU/YK5QQeVh+nU12Ro2yJA+1kpnGb4hQw912SweotQM/eRzmNC1BEYACwqiPnaRlPbwXSDVLsS4VbMxwVsfKyHq7/yILIwPMFAMZky+FfrKzoWivowcusTUvHBcWP+hN5kmvhfBETd832W35ycqVW0UP0QxxwDLRPBGQflWuxw54Aek+ryBKycfwLbF0AvRIgS6ob2+0eFS7w9r8VIAhFKlIMMnaFvMS2saZee9jxK4a5vgCPIcDXMchSzOBgPOmC460NNgvkPkBphSXKPnS/NMohMV+JVhKUy3Rl2nSuylLbdwTYvkQtPnikJftFS8u2lpm15VvuuQpc= 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)(376014)(1800799024)(7416014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2025 21:02:52.9607 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d974136e-432e-45e7-0d23-08dd52bb1b85 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: BN3PEPF0000B072.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6456 Abstract rep vmmcall coded into the vmgexit helper for the sev library. No functional change intended. Signed-off-by: Pratik R. Sampat --- v6..v7: * Change vmgexit macro define to an inline function (Sean) --- 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 Fri Feb 21 21:01: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: 867249 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2052.outbound.protection.outlook.com [40.107.93.52]) (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 C91D4253F2C; Fri, 21 Feb 2025 21:03:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171807; cv=fail; b=jabf8dP5m8iSBV3EXNJia9+Kec0KmUY1jO5rGIRvgR0ERSyq04iXuYqmS754NkhsY4HY4xNlSDxXNYI2iWBiRdMpRNQH4sn3yBCnIlxwMHD9jb6X0m6K7TGPJGlZrMyNnfIDBLV5jHHBfQMXOynKPpWvA1WN41DyVLAjXvk/VKk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171807; c=relaxed/simple; bh=LlmjOTmb72wI+vr1JpTIOaU46ZLxDTHGtYfc/Bc6UlI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Qkc4ktg8Qio+RLaih3xNkzq6dN7eUxp62Z7rvp9kJlgJzMomkYiaJEQ21odDq7qGrIh/yIQbn7DSjW51wYNjg1frtY8N98kos108QaEYqqjzSGpyYkqLQqx2GLsyQHhQye1RcM6djNRpWdJ6ms8fDFzI1Hn3H32Gm8DYuxfPFmM= 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=zF/9tXdF; arc=fail smtp.client-ip=40.107.93.52 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="zF/9tXdF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ByDLhJcTYcArn7fVSWGxSOkYC9njzIciVRIpPDJl4Y9fB1EaDC1oCk4UZ3d1Hb7igSqVPycA99hR1fpoBCfz0ToUf66Ec/+UwaYIqqwIHK0IgYauCk8M0UIgB6wxb0PSm8KXwgwNhM/KJ0IfJqoooLDv5uDGsoPcZuTJXBJYvudYAL9xMaqa5MCzu010SmNT/5K+rRs30GrBErB52xKg+4cp5YnmfttZZka45VrkHWleHd3KsJMCg7gYTCVZ9Ek8hdMarpesVacurueIx5x/3Ctg2ARG7Hg0OUZckW6Ta5MmmPEDWtaOLWaQx5zfU4Y00HScAmExdMioYHBKXo1Glg== 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=Kk7O7rhB0qVXJqicRah8m1LCrb+2Mq19YudIWYPJZQk=; b=KQpDJWs12g5gni0DsFK7lGQ+LeOqMO2ak5SSrqJtxEuyWZ9o7cSJGah+lyrWXgwgtw/d+0WPqbKdYAtpmHLX618zLXSimx40uSn8sw7gDzcfa7TzxXOOlNngmU0pWL2bt9orJCnF0X8kQzQN4bCoAxc/mPjzQ0fyrSiT2yI9xJg79j3RErlQZYvTF2j+qm4hrGkh87tZiym3cRVqlfQgYN87/29P/Sa38gPDO4WZlUkeJ1Yu5wYmAzVYKULKNFVZ/mVJmObn4lntQy0CUSPbMAPsI0EjdO9VNnesrDSVUrGnZW7MkNJRiffcDiWmAdnBjvD4yjwa59mACUYEc20hoQ== 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=Kk7O7rhB0qVXJqicRah8m1LCrb+2Mq19YudIWYPJZQk=; b=zF/9tXdFA+9Z9uc7YZgcE9d+Q9XGCBNDY77/cdKeWLm53iltEqQnak688Kh9hX6FO+hvbVkmI0nBH75uI+oZlSe8P+KekqD5E1KeAZVrM7+HRzRCMxUeHM04uWnFdBNrSr8SjFAxwNb7jUvPYRnl4lMq0IVOK/D2feHho9S/xPc= Received: from BN9PR03CA0865.namprd03.prod.outlook.com (2603:10b6:408:13d::30) by PH7PR12MB9174.namprd12.prod.outlook.com (2603:10b6:510:2ed::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 21:03:21 +0000 Received: from BN3PEPF0000B074.namprd04.prod.outlook.com (2603:10b6:408:13d:cafe::5e) by BN9PR03CA0865.outlook.office365.com (2603:10b6:408:13d::30) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8466.15 via Frontend Transport; Fri, 21 Feb 2025 21:03:20 +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 BN3PEPF0000B074.mail.protection.outlook.com (10.167.243.119) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8466.11 via Frontend Transport; Fri, 21 Feb 2025 21:03:20 +0000 Received: from sampat-dell.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; Fri, 21 Feb 2025 15:03:18 -0600 From: "Pratik R. Sampat" To: , , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v7 05/10] KVM: selftests: Replace assert() with TEST_ASSERT_EQ() Date: Fri, 21 Feb 2025 15:01:55 -0600 Message-ID: <20250221210200.244405-6-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221210200.244405-1-prsampat@amd.com> References: <20250221210200.244405-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: linux-kselftest@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: BN3PEPF0000B074:EE_|PH7PR12MB9174:EE_ X-MS-Office365-Filtering-Correlation-Id: d39ba906-f35e-4ef1-36e5-08dd52bb2c0f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|7416014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: nMq2bxl3KRSm6WxFD1z6FVDT2nt0s5QhrY6GM8iQXZW9+sP6oACDoyZNRBbZYYwhLknA71JNWIoRP/s1Vy+xAc6zUdfc+UC4bIYeWSrQ0nQdiuRGuR0DoHp/Hbc0A+BHt1kMzuhNu96Dp2eMGZeofvbb25vxN5DGP9aaak5brs9DHd6iC17eog9X6DMwACNsqsQ0+v/nWJmHpDBNT6Ux+lI8d6AVbbRYwpkd7BEv21lFipgjylppTXGuc8NnNGPTXkioC2fN8mUOIbepZxHjwT7ediG6z8adqIVPCfw49mNiyDPRl9z17EwuAkVjYFZVJlSm8DQlrdQXfk5wTNt1QvhzBSGkE1sGfAhThYguRG7WgBFVvq+EBH9ve/ZQn5eaPwDZx7JRAB3wnnRotvyfdF4Y8XuAaqLN0lihveCecLimlNvJCPhKxVlUGRgOgb0SxEd4kaVBZkEOq88T+AUiDbMPZN9e+U68cyaJA2BM/EZOX1lBMLWCXtxU6FxE8o6SE/WbmlmV7ZzsRz135jJNiFrxwTl7j8i/bNzF5VOtpkeUEH7JNwpHCwnnmKMsnVRwZg7x0325pMIZ0XxVW8tafjfXCBHjz3uFz3uzZKOqI8trTYSApM55iqrWS9lgmtlB2yE48xVHxa6y63j4GOBQBfrgvah7Pqr+R6AUQyeaOAgEbatctLsordo8Czsse/zUAXT6osYWq3Pqevfge8QmZ+wWofll9sWqO2lMXDTYqdBe3oWJI6plImfioZZB4LLkU/D5WQMLxuDoV6UxZycUgGPM2E8sy3+4l0aZCt4/RvQ05W6d26SbVg/NoRTgrcnfervCFwAYZKg/0+V9q6pfIOaBYHXBeqsvpGWpLVB6eAeYUJWi191iwjbaV/r0781jVrmCe0PN4KXIvG0MHuILONe+Lkj8vz8fT+sDvnbfIdRu1S6TrDysVM8nay0Kcz34BL0ZMQs+8UxUJKQKbrS3aC5+XEOi4QpmrevzB4kGRkX6ih65h9/77e0b6SgG+Z8QJd4okj6/q0P27RiXleCuTlSI/rh6CZxbBu2L1LWpif2dG8sPrCiOQBu+F4vYFkRufh90EuA9DyVKH5YV7hKy5nqj0UpGSX/vSugudxuJYMz01hB66ka0P7a9o+lYNVO+WGl8PcDmqGOpGl7lxncVEkCl2n67fujLqXlshqNgt9B3aDCq0giXawzgHyL/ZJ5P1+SOiRUn4AmFOryge1p0HJn6PcOMRkCOtAbq92ievKip9yQNRjZ04jiGk/IVXb2sw1sauvCLJuvBlba3ZP3iofx8PWvmTZryPc2kwKNSCCxRfTc6jwIOu1tC9X2bgcPjgkyAY5ffLNQrTeL3tyc1tTRhTERDkjsWCAwgxMZCh3Zqtdi71x4/eGwDNglZi9FIN2SmurIvEemjgmN6Pl/mseKxUcSGBiV7kz9r2Mw/3fxUo0M6MwWjpujULZ4EHZndVXRRhDE/swLpT3GhXkbdBi8BzFNC1r2GRafhtDJYiq8= 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)(376014)(7416014)(1800799024)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2025 21:03:20.7253 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d39ba906-f35e-4ef1-36e5-08dd52bb2c0f 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: BN3PEPF0000B074.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB9174 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 --- v6..v7: * New - Replace older instances of assert with TEST_ASSERT for richer error reporing --- 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 Fri Feb 21 21:01: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: 867248 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2081.outbound.protection.outlook.com [40.107.236.81]) (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 8D37C254AEC; Fri, 21 Feb 2025 21:03:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171832; cv=fail; b=aSQtt3mfmXyNwtg6BzQ1omvsmb7hYexWME7+xKYiPW5b1u+JA0HRDh1mAAplgX+d7GwRz66yyk9pt6jd6Z50BAUk5qS+GRUsc5wRHvMojuZAZQu2zsaEBBIJUoMiUVPbpIIx4PZ09gw3gB69P40ogS0P4puA55yFnuEFOi9P39M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171832; c=relaxed/simple; bh=xGcpi5tbLFDS4wxp0mjwRAbkOwyGX0GxsaVvG2TeTRA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=s6NhjM6zwHbT76MPWff0OcBAurO68KzDg55nimRG9jVBeN454CILnQrFz165HC3FLP+lfU/s90G7I2aDLtbVTHBbVxT2p69LeLS5bJGp6zHEyYOgEdq7/8T9slDhgk7Wma8s01NgP5gfs//c5PE7FhhGhvE5EYYvuzNgXPHnQD0= 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=b+fjETR2; arc=fail smtp.client-ip=40.107.236.81 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="b+fjETR2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SO/uaIA5lLH5FhjHI8OmDp4HmX+CKl+oQh0dSKMsNhg54JC2EGgyG18c6UlVNf7QW5vBEmzWaePnxo854BLAu/t+mt/UDi5rm7IRvt3EJ4NzKwHOsEg43ojVuC6TB0MzjdnZYR4FmSDaufVqW40oPjfd5pyAVUq0yI0JBINyAW302kHVOcgR23lQf2T9QNMdQQp3I89bSSbqe4sll/8uEquQFCiJqtajmOZ6CzGcJJOdEGvefge+TndDtmtHbZbMi3kMpuUo2QCcDTX2ZT/AeDVDZIRokDxGee2qyxh95Q5fYtagIE3fzZLLCGJrg/JxOiGh2eKh8N4PtaCEFY8omA== 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=fQxc+7jdVdapNoCcckmAYhwqXgpkxLvFaO/j5Y9an0M=; b=dmHXiTPCgNmBqQaC86VyfqKjCKsqH/HsXu3+iMKIQByt9eQnK63xu3RWNP4o6qPyJi1dMmUnXJOUFD+CblwUBstM4ekQrKU0RcljFZFKGTHEQFj1RK33KHd/tgL4S9zv8NYFsc5OvvEsvRocuaykOg7kg+4WC9LOgvutxNK5DpN6PJFbInoxYRIkNVPgTeDZX1gyMlrFEO6QoXsw82aB1OHEg90Z6oQwMeH0kNMDlRaEMrD9DwfTcWxCMnAggKXVDGnloBJEhIihgKBjSL3uX6w3T22kQrwDpBzrm/2qoBmsz4CCokGkyQ4kiKud8YuVZ5OhZnvrYdP98J20kGB4wQ== 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=fQxc+7jdVdapNoCcckmAYhwqXgpkxLvFaO/j5Y9an0M=; b=b+fjETR2SaEAHYZOHyG47YNs5Qqnl+2+Y+BYMmJA+g9azqwhdD+8/nGSLQpIw2NFW5/mTaP1s/OYtXsvquxfwJw1MgguxT8zOHWYKYRDiPlFdGDVE/SGRBIZcOBbYapTDJCIWpGlRauV8M/7UJa0JSH4Y+Q27Djl7cBqL7l8e08= Received: from BN9PR03CA0841.namprd03.prod.outlook.com (2603:10b6:408:13d::6) by SJ1PR12MB6100.namprd12.prod.outlook.com (2603:10b6:a03:45d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 21:03:45 +0000 Received: from BN3PEPF0000B073.namprd04.prod.outlook.com (2603:10b6:408:13d:cafe::9c) by BN9PR03CA0841.outlook.office365.com (2603:10b6:408:13d::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8466.15 via Frontend Transport; Fri, 21 Feb 2025 21:03:45 +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 BN3PEPF0000B073.mail.protection.outlook.com (10.167.243.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8466.11 via Frontend Transport; Fri, 21 Feb 2025 21:03:45 +0000 Received: from sampat-dell.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; Fri, 21 Feb 2025 15:03:43 -0600 From: "Pratik R. Sampat" To: , , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v7 07/10] KVM: selftests: Add library support for interacting with SNP Date: Fri, 21 Feb 2025 15:01:57 -0600 Message-ID: <20250221210200.244405-8-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221210200.244405-1-prsampat@amd.com> References: <20250221210200.244405-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: linux-kselftest@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: BN3PEPF0000B073:EE_|SJ1PR12MB6100:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f489aba-b9b5-4232-e340-08dd52bb3acd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: xEE0ZYFOyx9LZu5toqI9qAFNJQP14jIkRQCnfU0cwmaETW/Zi2ztzOvcmZhLSzjds6uEzh/4cSnY7AiEiGL2BItVzgTeI7mvp4fzxfazELgrw4xqNm3rOkPccegi2gVnEKf4VZcmhifP88g0dAw+Ehead58PTE+v6uorwTtgvQ3on65xgK4JsCY5LTO6NfnIzhApNxUcnfp27br/kvmLiwBlP0VQQ8mRVlkTGQAOgcHXEYc4KSQSJWV7P6hApo/b28YtKzKU+Aa1lA2e5G2YIqfCuL9DtwAouFODIB3mrG9B9gLO73YSBXqQoSnsESfLdgqXNSbuWrCdYrwxgqNOuDWKRsC7DyhDYFIOJ7hCTUMfMttIOeiY3KOiA5kyleL1qddPhRnWG6/6Dy/MTD12pBsBFfpYwWhgJDM5Dl/sPTTxHnC3aBFLtJ2RpchDnY8uscFf9rHJICJm9JaNuoBLC4IRc+94YXQPgt7opjwQ+rH0WwRVVRYfriKj8cRjXbc7rALsqwp4R6RLDDuz0zBfHNHweYvHCQ+RqzRuguVBzkai1njWI4PCnI1klB0YrkgiA0aXKgZYM1eeEZX2gKwofJV/Ct+ny71mYiUhOCPJOduA9sE/pwBD31Q6ugr+CjLI0Vu1Yxj7utEdUWHKi1RV72N4LyxhRF9xFHgKEjYPpbgE/n5cQFFyDpZkJwdi2dMpLU3VaZwQqmlbCE5POpFgkSt/eKKuRIZbbS3extM+P/ZVc6HmUQXfcKnUcSnWb5rbVAIZR8iLBVUpkWzh4yh13oApW9wpbZhxt6Nkv7Na4ga7jwl1PbYTMwfE/A+RoHJ0KTdCbkE9vWXn0BrkkV1Q1LGhpH5riFBUXXgDzg7Ci3EYckfJP0kgEW63W8eHFNE1nuiZZJpxjMBAWoQNpel7aBxvuyKUqFp8D8bYMfgjMwfM4XJErMfAWbeP9as3FLsOta5d1LOTDgU0eFGi1gyZa01wiRNgHVuMBS6XLvwe3bgT763VcDjG29Qu55OziBlOC8Ezr654WYOVMFKKnl+7PtxRaEtLgb0XpURnRoOR9UY8HIxZf61MLkgGOC47ErcvwNgFaLeByymMVV72DdBF9GBNDiU2yZ3WtnLl6mdu2lYJ5dvcThkBs+vxarVQPXZzBk6eKWpjk3Ys37CGeiBpFtngq2lqhhlJAnj9GZdahjtOKOoZbpd7kLJEM7nxuJmwHG7N7QkM6Xw+z4VEBj+x4mYgAvvlX9eyCm5FJKziTCX+S+ZZERTr9gmh1pBnkS1o1uIRHb3A+LBaNjuN7TeYM8bu+6xhfrs2IfTF7lq/Eue2hGBbdi5AtaG65W98h/a1Uf9r0Mza5qpRLWpXlUYXsGGQ6xkTH5s7vk3ElzrkqzdxO0UrizS07ENfXpRTQ9BgxuVHsEK7O1JSTNp8nPMJfb+2J+NWUOZWbtzR/+ThGzPnoEhyQ7pcIb1K5bk+DsSNib3V7jK9CcHY5/LIsU44B+BrM4jVt682zxLF44PkTpg= 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)(1800799024)(36860700013)(7416014)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2025 21:03:45.4630 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8f489aba-b9b5-4232-e340-08dd52bb3acd 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: BN3PEPF0000B073.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6100 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 --- v6..v7: * Remove FW version macros (Sean) * Define a new type KVM_SEV_PAGE_TYPE_INVALID so that encrypt_region called using the SEV path does not have to pass a literal (Sean) * Replace assert() within snp_vm_init() to TEST_ASSERT_EQ() (Sean) * As SNP currently uses privatization and encryption of a region in tandem, remove privatize_region() and include it's functionality within encrypt_region() by adding a parameter (Sean) * Minor cleanup of code braces (Sean) --- 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 Fri Feb 21 21:01: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: 867247 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2076.outbound.protection.outlook.com [40.107.220.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 11E342566FE; Fri, 21 Feb 2025 21:04:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171855; cv=fail; b=Kuvli7gPjYoNdBdCaS2kfGhmxYxN2m23hGgq46KUCfXFbjKNVeUz5n15g2cu7Y6KKw7nGG6FJsg0gCpIPghMud0guT6ipXztqjBlXEJjBbo5R76y6y9eiYFiko1tYi8TMUO1JKS4snoktBujefqfzpkwiWAxMJCCayHKXdqRVMc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740171855; c=relaxed/simple; bh=ixJK/CP2k2A81zoZaeIc2hb5z3TbTa9HA77/twLMXNc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=SkQEj8sLHAdTYHnRS376WWVnUKqwqXQmrPlqh6F5jl8JVuvfWSe5BL9teKPntBW/a/EpQZ+xDqKTjVWgl8wWKFP0bLTzy1lnaFZYqT8In42D7287jg4ks4kgYihsVHseZwF8GYHxD2GAeSambrsTKiIcf5g+5zkwjasYh6qRqm8= 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=RzLUusTC; arc=fail smtp.client-ip=40.107.220.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="RzLUusTC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MFcZ9VeGQKxRLaJjDoTk4NnLzZH5oJgNp4WxevIZGgW0+57w7bymPctXqWDvZ87RV0dRSlQzSPMxYzCA8OLBj3oVcU9OiUgYnkIcIwQvz0JQYy0HxI3QyCdWZZC5fR7oOVGE00jjfU+DlBz2kRr9K2dNjUQNHHeD5LrIhVqME8ZJTavJRqQ+/MOtEqHrERFIIbXX2JGxPnfDtDGmMDUdjZOm6kyfZ+bClJ4Zns6jQOdxFgi3Cb6ASJ5wWmN6yxaBG9esxryAATu4Pe4ibvAAlOV+0ISVeFfxpJKdTnrf2HLxGiB7Ddv2N58xZTfatKKQLq2YrQo24DA7z/VWMTETZg== 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=Bj0g5jDg/+Rd3ezcsVtzEm1qZyuHkgSjTft0xKmnT9s=; b=fcwGLsO4KulgQfcbxGI3WAP2vPqOe0iJOt6atqHRkscm/qo2/SEYoxIcLWkB8wnl/0s/Xsz1CjPwvbf1qjaZOovb9sx2TkXXZXLrzyR/ute7Z+wCS/YG1SFdrfQxYK3Jr2MMpxApNP9BuTKARdnWwyLOBp1l+8rxPctgskmlWyKcUv1FvGEDFuNsQqx4MB7Olo9TxvwdsGd2qOlhNmgxwI/T7SPJe4+doQwpeWS9O5+NlHPMYPSNeBpFafCna20DTGXiPkDUdR30xTgs8+e78Vz20fpYTYbXU1gy/z3kI6WhnvB3xjOlvNh9mXy+QbaB01KFU3GvadFRUqARQaq7vg== 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=Bj0g5jDg/+Rd3ezcsVtzEm1qZyuHkgSjTft0xKmnT9s=; b=RzLUusTCBZYsh8coCB95BGRCvtYNmt/xbumFif9y2q17P7Hx4CBA/CBfUcMycxfPEEFqk11STzVrnzYwWRKRQ5H6NnLARUMKF7xg+jBjCX/FHTMi5Na18NwJC8a0JJlpa/mDBfFn4/vfMO25iS11GAaJI88TgD8OgqWwL4H9NHs= Received: from MN2PR18CA0003.namprd18.prod.outlook.com (2603:10b6:208:23c::8) by SJ0PR12MB6710.namprd12.prod.outlook.com (2603:10b6:a03:44c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.14; Fri, 21 Feb 2025 21:04:10 +0000 Received: from BL02EPF00021F68.namprd02.prod.outlook.com (2603:10b6:208:23c:cafe::86) by MN2PR18CA0003.outlook.office365.com (2603:10b6:208:23c::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8466.16 via Frontend Transport; Fri, 21 Feb 2025 21:04:10 +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 BL02EPF00021F68.mail.protection.outlook.com (10.167.249.4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8466.11 via Frontend Transport; Fri, 21 Feb 2025 21:04:10 +0000 Received: from sampat-dell.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; Fri, 21 Feb 2025 15:04:08 -0600 From: "Pratik R. Sampat" To: , , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v7 09/10] KVM: selftests: Abstractions for SEV to decouple policy from type Date: Fri, 21 Feb 2025 15:01:59 -0600 Message-ID: <20250221210200.244405-10-prsampat@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221210200.244405-1-prsampat@amd.com> References: <20250221210200.244405-1-prsampat@amd.com> Precedence: bulk X-Mailing-List: linux-kselftest@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: BL02EPF00021F68:EE_|SJ0PR12MB6710:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ead7977-6b1c-4590-885e-08dd52bb498c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|7416014|36860700013|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: QGAOC5iiQVYl+dQ0j6GcJXabyaMi2KAaZjp84yuVayxCBQtGgrR2EkI6neY7ADf/w03P/B+RGODYAQJsMbRCydBzcRe7kF2LDzHWXq/t1bE8T4HCT2O3Se6XbJMPGd05YeglqR8jIWuVLTsXpnkXelB//gXdMtT0PSv8IR+ZlLtZG8Tiuwt4yIbxo3qXcW9axMfpKcQpvcnRFuXS/pR0BONGG+EamlrtbfLjPpbCrsfufxYANYK7Ot2FNVhq6o8ra5+5Q3FGid58dFhNdK38TdN+BlSIlIP72NHvf+kbDNbaPWkcRiiBwG3kB/dmzNoyZN/zIfgpt8WvOZ9rNVEClUhQB5BvITXWL8KWBMR/ohOsrOxPZ1PQK/8HdfGt9JmocjzcBwgLtGiMX2PUYgnfI0EA3sXNfF79HPZ7LX84TNt1iTfQVSTHUZSOrJi+g+jw/BAep0+swEuPFlNVjdHxAihFqTvVKXC6aTnKOP3EhzIJFpSO8YTEBqwN9VworzLrJvhUH2dUsjwvP/EPxMfFd2lNt4CDBrti6dvGyLzudwQOWGyNE5hnNJU1M/yB3ra6ZtnnL7zhqwI2DHfhxQqqrK2ZWMWsXA89wKyHYrIW/ptJy4DHKVWPADUe9fmoelJDmqp3Qhqef2qTKGankbXienXAiaGmjErEyCTSS0ZX9wFZMan54B+PiBVVqpY0XBz//JLgloLshORBizGXmdhI6MDtU7QVJZmw+R/fbW0+VA+J0AT+2h/+WpZb3m5KtReiUffOPEmP4ZGcb/9OHvQ7IPqSYic0LjphiNqesQSejPPZuJij8//rasRxsAucqHPCJh0Zc/dP/yShnPy6YrXAFNJY2zTz1LWax5XYTDtvEX9OtcVdFxafOuFe/5aD/kwP5VkaSUBZzt8fk+YnQvcLJK1hjadYq5+s/HF77toBGRiA3TaWYaOZKcqTmoYsAedPHVyfbCRuSzLhjHPdf5//91sqoBaQbhlPnedvD5kSRf3AgbjqzsN5oEAID1C4nyloVRe1QkrkrXKovQCeB3cHpJMHGUK/77eA8sWRcISnAKzoortTvL3vsGbrZw+C/a0zR4hVXznZG73GSgUjR5mZMEoltCCaEGLAJo0NCka0G9d5ea4cXYISicnjniwIkDQt4VYCGXqVw+6kZyaKXvhDC6KnbFFweF2q0AYLTx1dv5zS+POd3TEKH5P9YgGimEiIdiMAcaTnnxuFIbU33znFv7d1brN4tNzHf0T0J5ZY5bx0+wASQrPWtfQBZFbdXAj9do1BsAEP2bD7y6fjCX5vKYzTq9C4r06UdWwLpErXyMS6V2VNlWWvcIoJUjViD5v6RhdCpYB1jND7NMITVNNk1pCUr1qOfvifeTh/ofdHOr8mB/D6u19CnxbNyk9aHU+o6zB2sznKX59PlFr/ucQk+ri8xgX77encYN8Zewu+80Udrklouj3+AGf7V0tWMDoJ0L7HH0TymEZn+KS7O/vQrZr6Mzl3NoVT8MgLngaZPk4RRuuX1CWcFhpHjq3ZnEYY 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)(36860700013)(82310400026)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2025 21:04:10.2005 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3ead7977-6b1c-4590-885e-08dd52bb498c 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: BL02EPF00021F68.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6710 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. [seanjc@google.com: deduplication of common SEV+ test calls] Link: https://lore.kernel.org/kvm/Z6wIDsbjt2ZaiX0I@google.com/ Signed-off-by: Pratik R. Sampat --- v6..v7: * Remove individual wrappers around sev and sev-es helpers * Combine common tests and deduplicate the SEV, SEV-ES calls from the main function (Sean) --- .../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; }