From patchwork Fri Oct 4 05:33:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manali Shukla X-Patchwork-Id: 832867 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2081.outbound.protection.outlook.com [40.107.96.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 30DD14E1CA; Fri, 4 Oct 2024 05:34:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.96.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728020045; cv=fail; b=DaqV+gf9UoprxXgArub+US2xtWcLUh4/EUcLb4c/sKxrL4h7Cnh75NAiuXL3Syc9vSPT1uvRvJHmQCgi0e8tB4muuEl5Hv9ftoARocMLQQvixR70TSzbu8uWKMmS7tQJ/gWV1FxAL8mIeoOYGH0BcNuR0W9zwqMqKejA91nHsxA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728020045; c=relaxed/simple; bh=U/0lebVjAjz79Hw7TjaWHRrqUQorfxR5LNHqMorAQf0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=agnMbZ87pydDuWjt/GGxarslT2RM1u6kE4mqrEJ+R5nYYW1jj8GV3jVpq8uYjTW6bDlwGNi1CryRyRRrNbP7MCzRbDrZwETTM0TzgNIcQD+1VZwDvqnBvyS+Msd2l+icTAMqG2uk6CQRbPBJ7mfdkBVjdqUxuMOlWFvEsbY8Bq8= 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=eR8ZYsXr; arc=fail smtp.client-ip=40.107.96.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="eR8ZYsXr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vGOmbdtw8uFEw85V4UVoJ9ZxptlgCmC47BgC347knKSyHDPqYCC5ZEI5Q3Me5bI9wm7W53JoBRPq6bm01bSiyWZmkgKv+gM1TYA4monzNmzqenyc3WIHVz4bcGzx8Cn7L25xQYd0ar7wGW2WXg/QQXNq4wAdIOX+rQiwV+az0LsZtxiE6MyKBIpS42A+tOevR1lRMx5DfJwt+0TVXbHviCMNc4OICshoU8u3QlXmGggt1lVldJWNQAB6lgMXSqC2wd5lbT+2ZH0cDstQoVHb0NWxN4mCU5AnHpZW+/bRnsaMSJRksL8rK9ZgBhyGxEGq0n8toOYMwy8Z2W8QQBOF1Q== 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=2M9YC83vxgd6T7gTLadVOM+41jTMkhcVG0xXzj1Il14=; b=JaqmvQBv+2cwDKlc7fxyBJN3htZbEtGqpw1JJ903xTc//dphwb87dBDnmVsohAw7bq6Y/nR8GSzTUdyZ03lNkTIN51Q+hgHy/JhnEvYeg9TMUYRz0hGhWoKhJFGPPpW2sIQVL66SaTapNN7Ya33MeniIX2Q2hBOffVgz7g7RBPdshRvn5dXow4CUl+F3843jhZuhJP+vZZ/LYuUB/SksgVtcCjGBa+E6uXuwazoMLxhVnV8bgSI4T+HW6QNim4fWEFwB6myuyhmTnE4DC3xW3uirAnByycoWhvts53tap/b+H6hIDZk4XvyxPyOp+elZ0GFpCzb4k6GdXzMIw2yKLQ== 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=2M9YC83vxgd6T7gTLadVOM+41jTMkhcVG0xXzj1Il14=; b=eR8ZYsXrFpTD0bd6GqxZP0n+fJxKqducQOwkAaXTS85NaGfL013VOGs49uFLzxOnCV3NzSKFq5TLq4vEWctcSM4EK1M8FcWXtS1CS7mxjvfxu8tvezuqqkx9vZ5+hWptiocO27ne9lvYySgIrhmiOdlKBu8pxmnLWGdBsTuFqh0= Received: from BN8PR04CA0010.namprd04.prod.outlook.com (2603:10b6:408:70::23) by DS0PR12MB8453.namprd12.prod.outlook.com (2603:10b6:8:157::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18; Fri, 4 Oct 2024 05:34:01 +0000 Received: from BL6PEPF0001AB59.namprd02.prod.outlook.com (2603:10b6:408:70:cafe::fb) by BN8PR04CA0010.outlook.office365.com (2603:10b6:408:70::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18 via Frontend Transport; Fri, 4 Oct 2024 05:34:00 +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 BL6PEPF0001AB59.mail.protection.outlook.com (10.167.241.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8026.11 via Frontend Transport; Fri, 4 Oct 2024 05:34:00 +0000 Received: from chalupa-d178host.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, 4 Oct 2024 00:33:59 -0500 From: Manali Shukla To: , CC: , , , , , , , , Subject: [PATCH v3 1/4] x86/cpufeatures: Add CPUID feature bit for the Bus Lock Threshold Date: Fri, 4 Oct 2024 05:33:38 +0000 Message-ID: <20241004053341.5726-2-manali.shukla@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241004053341.5726-1-manali.shukla@amd.com> References: <20241004053341.5726-1-manali.shukla@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: BL6PEPF0001AB59:EE_|DS0PR12MB8453:EE_ X-MS-Office365-Filtering-Correlation-Id: 64ea5b6f-5905-4a8a-2192-08dce43626bd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: s7bGW7aSqHzOZv+K0myHocWQtdWgHKKciEyaFBpSugfbxjse2dnroKLeZm1cVYMcEe/hV6vwWOlJAZ2wecG3iZ0AfXYbY4rD1NXFwZuXoeuOhd/gqlkSXYkkAgKBltmUPgq64GU7aBDAeinTtrOenD2RCShjN2XpRYoB/rzzW9RHWIPXy2Rme/KvepwNuZLBlkcjeplaKyDB7cr/hEHUQhLCCt4Ow+RPMd7KxawzoMOZGVPpvMsxsXHGg70OzriSYLNd7cdaxSaTu+JTx/yTXqe50fNMJtUw5eTjEMnOc8T7PHCKjN74016ksT9ih2dchsand0wKCeATw6VAv6f1gxuHML/KweiMQLMMpEjS9tIVEJafKKRhsHXIOHl5+5fUTDu0Lsy1PEKs3KXDdum+FUCGBRyLEmCS6RMWX4SSTijDeNE7Fm0NMrkyC20f9Ry4xkw39dlglZcFnFDT7OU8ZsYx1uCqMdfPEySFHMoy62xFllmHlrVdvgw2WTgOZgoQDeXMmNyfs4uT2x8eIAqNBqI45v+a79aqBkUsCg1ydPZU3gi7+MiOb8/mIgTLyoadfxk8l/JlnwG82ZC1XzDWzPtipBz93hyYT1BpbOvJT/Y63rLREAtNHASTRfOh9/AMz36DRVBOfjiJE/PRE/RWXkXsKrqi4KIkDVBxqdGVK28ec5t23e9sP0VJhRzYn9Az5Wh0lWsOEd1U8GgNVlVoE8slz9/Vg3cs4mc28Rmd+xxqdTabBAhWN4lTrHoKnHXidpfyK9l0QF/N/RXnK8NzbWwdSgdLTuiXjrVCk9vBMWXJz79SWYeYJUriulSpjPnIm4fhWKHDIb3UJU2bRyWP2M0esEsaFkWBX4Tr8D30T4dZIElVOHcQv7R9s0mOn2/IJ3A/ivXHV6xflVeDmnEyID6MicJT9hz2KbIprcIqBQcuSf1h2NCJ9IAUS7pP6JmM3+XhuBcyL5QFVaNXbW+aPhaX5LUVCyz3rShYMnCVTfXkJjMRKnKd2D9UDaotGA4lxWddjn2CJAqBiNmdaBLvHRNF7JmY5xj+Oq2M1p07XAIiRlDvFghBbCgvPlvGQ8/O238lVe8uxeRyPFsUpseakYZxyCIfBCx2kTs2vu+4FX4/Al7jHmj6ZXy/ufjysKVcROoOZktFl6o+DN0IE00lGWjkyqcXbgjkgwIr3GxfN4ahyDUpRxGqAlRjYDGOLhMCK3S/DYRa0dry+wIYwCxX1LPjp3/8gmWxTrhliV9idYghQVUth7VJae//HONdm8JBgMQX6zuGLIqU4rJpRXv+Hf3hpK59sY78QIwVrpKEE/N+bZ/VfJhMK2Xz2bXD8sd474dia8kysV4usrKcRK2JrjcPQkfq5TpqWqY8WOcZH668Mm6yhSOFqwQ4OaHi5/U1 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)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 05:34:00.8438 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 64ea5b6f-5905-4a8a-2192-08dce43626bd 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: BL6PEPF0001AB59.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8453 Misbehaving guests can cause bus locks to degrade the performance of the system. The Bus Lock Threshold feature can be used to address this issue by providing capability to the hypervisor to limit guest's ability to generate bus lock, thereby preventing system slowdown due to performance penalities. When the Bus Lock Threshold feature is enabled, the processor checks the bus lock threshold count before executing the buslock and decides whether to trigger bus lock exit or not. The value of the bus lock threshold count '0' generates bus lock exits, and if the value is greater than '0', the bus lock is executed successfully and the bus lock threshold count is decremented. Presence of the Bus Lock threshold feature is indicated via CPUID function 0x8000000A_EDX[29]. Signed-off-by: Manali Shukla --- arch/x86/include/asm/cpufeatures.h | 1 + 1 file changed, 1 insertion(+) base-commit: efbc6bd090f48ccf64f7a8dd5daea775821d57ec diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index dd4682857c12..77fa8e743ccc 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -382,6 +382,7 @@ #define X86_FEATURE_V_SPEC_CTRL (15*32+20) /* "v_spec_ctrl" Virtual SPEC_CTRL */ #define X86_FEATURE_VNMI (15*32+25) /* "vnmi" Virtual NMI */ #define X86_FEATURE_SVME_ADDR_CHK (15*32+28) /* SVME addr check */ +#define X86_FEATURE_BUS_LOCK_THRESHOLD (15*32+29) /* "buslock" Bus lock threshold */ /* Intel-defined CPU features, CPUID level 0x00000007:0 (ECX), word 16 */ #define X86_FEATURE_AVX512VBMI (16*32+ 1) /* "avx512vbmi" AVX512 Vector Bit Manipulation instructions*/ From patchwork Fri Oct 4 05:33:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manali Shukla X-Patchwork-Id: 832866 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2087.outbound.protection.outlook.com [40.107.93.87]) (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 D302B49641; Fri, 4 Oct 2024 05:34:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.87 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728020050; cv=fail; b=Ir59Pu/6SDOSsS3eW1D/HknN3ZrXTr4sA7TSqskKQy1yiiB6SGQa2Lmc7dgtFgsLZQBAkIsF/apHUi839PNXpnyVzNGK9DQNcWOpnG+4h+xOAkZd/4wIuuiu3bygeFEJRefPSHZVHh6s5Zqe/JofVZZRoP3LjPQu8GqQIEc/5UQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728020050; c=relaxed/simple; bh=WMFGWVCBHGBpWbFgCoh88dfSM9EKYB05SRTAg12ss6w=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=iEvHquXboxxiV+8DKCMPW+ntk1huYZGRBd+0b4Z22Cj3SalKlQS8BYo1hTEVAYeGjSig0r3y0yZBY0CmgobEiq7MrA80ymWULXNkf3MR6PBAGIR62Ukio5fJXODBYuEBj0qa1+8P85GgJtGEdMqRxCuDCEI24nCt2IBMyb2oWHI= 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=fkjjHuhz; arc=fail smtp.client-ip=40.107.93.87 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="fkjjHuhz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yATHFTXPt52UnLqd2wV1KxChbM1Ee98Mco7OA8ra7lbXcfb4RZueIjK385ECoiMgzv6e+g1RKiOS8bvzJzmsMV5Ze/XoPPMnDAfqhqJwWI2IjHnOKIJNCpiuSWHG15u2VuGmQs5uINPmoFXdSoD/j0d9zgbpP6Ae9+wrMSAkWUKZ2i+Yhm0BV/kti0WSu2T+N9t7uianXfIhGy3MqQrJUdFhEe1DXRFbiugKaxyfEQJK3T/zcCtmW5ka5puyZwgIyRcjf1XgEVRCcKjvk1xP9y7w0CVAAj8FJ56DEILIJePGObY1rNgkGJdEgigk2VLddllj5975/RgtwGsXXX7eIQ== 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=48G6kVzdy45V/GMMuPJxWW4ES58XK0QgrU1F5AATAcw=; b=g4+G4bIqvOI50+cm7Jj5EjLdx/UYjjqHCQqaQFoQJQbwQ1MAQf1dZ4luaxCfRqNkWiaJ+v3tntGE0MOXd/cwvWJRVD1Vwjb+mmXxQBAOOn2jeZlFNa/090phANtvW/YoYr4gN2E2Vgnr8yz24+b1KaYf16xs7nah7cxsgctg1f1KZYyS8NcSRLKgz57/b4wF6tMxaYolstlM6Wqtk2ELgn3HquKIwlVVoid0z17Wgu1DeLuWGTp6Gx07Fc07i2WHGsUmM3VcC3GhyFE/frX6ghOsf/yCG55g3Uz5QvOCZSsuKBZIO7O39UOZr8RyH93Wc5wo49qufSfGwhbbTcRLTg== 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=48G6kVzdy45V/GMMuPJxWW4ES58XK0QgrU1F5AATAcw=; b=fkjjHuhzhmUlUb6kQOQGAJNog3Otjr1nd0BsyWl1m5wl/pU90VtpL4UOqySuAjMiO90m6vlh3WbkB7ZjMzD363ylL3q7Lz6YoCNWS5jj1BD/NQPefGGN1nZj5PHoBZH1LscBMHJPdUy9YUU2WHUN4DWp5HXwR31BQwvdpY04G4M= Received: from BN8PR04CA0018.namprd04.prod.outlook.com (2603:10b6:408:70::31) by SJ2PR12MB7961.namprd12.prod.outlook.com (2603:10b6:a03:4c0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18; Fri, 4 Oct 2024 05:34:03 +0000 Received: from BL6PEPF0001AB59.namprd02.prod.outlook.com (2603:10b6:408:70:cafe::cc) by BN8PR04CA0018.outlook.office365.com (2603:10b6:408:70::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18 via Frontend Transport; Fri, 4 Oct 2024 05:34:03 +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 BL6PEPF0001AB59.mail.protection.outlook.com (10.167.241.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8026.11 via Frontend Transport; Fri, 4 Oct 2024 05:34:02 +0000 Received: from chalupa-d178host.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, 4 Oct 2024 00:34:00 -0500 From: Manali Shukla To: , CC: , , , , , , , , Subject: [PATCH v3 2/4] KVM: SVM: Enable Bus lock threshold exit Date: Fri, 4 Oct 2024 05:33:39 +0000 Message-ID: <20241004053341.5726-3-manali.shukla@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241004053341.5726-1-manali.shukla@amd.com> References: <20241004053341.5726-1-manali.shukla@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: BL6PEPF0001AB59:EE_|SJ2PR12MB7961:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e5ce7a4-cc5c-4398-c540-08dce4362803 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: 3QeRPqNKrKeFbsJlcRmNMvaXxZ104Tnrs9gvJR76L/MRrOUBGUABg/vgEh9+JwscfF0VUUf8B7K6B+d0PkAl0KHnvGnxjT7fHlLBh69/wRlZSyE18+cWFGcGLf7gdd5fhSrqUMKLJfyj+aC1CtpB8ygvHP7WcE4tbtTDMik2DeG9iDc68VZIboHjDCv3wGbK6nWpKYDlaHX1GtFqh5ulm0hLuYg55GySwPhbacNIN/nzcFzhwyKu7TgafhuC2MjWPt4eDtOZKVH3ifl6taPbAm77R3iiYaWZJyWws2QqnCMuhT2QEqgmcJjsQX7FEMJm4Z4CJtfEzs/xhR0LYE8D9BSwJf45tLVjCxYW5f0GStorOpkTo/42pRxLE6Rj+15BrEdayhzTDnU1ZJAGwV2d7VvquY9b+diLtGyInF7s7nixNLzWBrWsecA6MUUuCD7BVXiANUfmcY9AtYR8caX6MF6nA/i9H9vtUxQZaKnkbAnbgKFKe+yx4FrKJCtHH+ipcG2QkifdZ6hHC0o3QBeEY4xusKxPq5WwrN4BK/VTAU0T/d4geSnjSvhgAvpoKTmQhSIOFkJuOcJsjxPZ5ZhB0CBT1QYir1YXTgk6fG3+Uzb/AcAFqF6KRfLs8GFqPCZwH4V1PvV7N7Bbbp4WvOw1ACfCBBYUT03dUl46dc/h3+xzbTSD9bBQzwURRtBrKs466O9qKowTJ6/axnTY4IAFDhk6nesjoQsWW05z6SgD36SvCETM5euoKtVPtKUpm1SOqWGwceKctLgZwhlMZKsZeUS6NjrCT5chuPf2+BX6/OgcglU8fDMGsShw0TvkL5a4QkqwYy8dAdxfD/Jt0iQJecgPjYzdLEiWzhtQxech2xu+qAJZtQQ1KV7Hz+ytBsvFWRZDAaQy722P7JxIAueTWVRpwBJoX1QnxYfzGaDS7dtOqks6efORp0DYvovfNU1/PeMmEPOh1X3Glb0n4gmdLLNiYlhlwkxjeieqHxexPYrsXV8TsLE2o2DTmVd5Psnz4yYOn8aH4+gUEt4Db1TIvvLjIIFDKsUaTyyt2KmopgGNjZDSpM+Eyg1OM6R2mbDaSJJAU7PfY/Vbh9sLCKJW6HtJAMj9IQ5VOd1Xt4q1E7goQmjkcdFVkCJCoUUE5h+W5vYHy1xdc9aRebAUTT00swFi4/I1Lzxs7Hr0V5nRP+dAbR8wQLi8QEjBaXE/UeuTb29H6xwt+IVGD05DGovp6VAc0IbTGr9sMp6nMBzehwnzeCucNc/eSNHLHGSnpsclgKL4l4GbRA3dQ5O1FH+EqihFfoLgVS3TG4DZtkEM0bY8F9JQ35KUNXra7mtoxbNpe8RrBh7ahos5JN0bemQe829Uj3eq02G/qMOMW4IODJQhtAjMFpOdtCNFi8g0GQjF 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)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 05:34:02.9689 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7e5ce7a4-cc5c-4398-c540-08dce4362803 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: BL6PEPF0001AB59.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7961 From: Nikunj A Dadhania Virtual machines can exploit bus locks to degrade the performance of the system. Bus locks can be caused by Non-WB(Write back) and misaligned locked RMW (Read-modify-Write) instructions and require systemwide synchronization among all processors which can result into significant performance penalties. To address this issue, the Bus Lock Threshold feature is introduced to provide ability to hypervisor to restrict guests' capability of initiating mulitple buslocks, thereby preventing system slowdowns. Support for the buslock threshold is indicated via CPUID function 0x8000000A_EDX[29]. On the processors that support the Bus Lock Threshold feature, the VMCB provides a Bus Lock Threshold enable bit and an unsigned 16-bit Bus Lock threshold count. VMCB intercept bit VMCB Offset Bits Function 14h 5 Intercept bus lock operations Bus lock threshold count VMCB Offset Bits Function 120h 15:0 Bus lock counter When a VMRUN instruction is executed, the bus lock threshold count is loaded into an internal count register. Before the processor executes a bus lock in the guest, it checks the value of this register: - If the value is greater than '0', the processor successfully executes the bus lock and decrements the count. - If the value is '0', the bus lock is not executed, and a #VMEXIT to the VMM is taken. The bus lock threshold #VMEXIT is reported to the VMM with the VMEXIT code A5h, SVM_EXIT_BUS_LOCK. This implementation is set up to intercept every guest bus lock. The initial value of the Bus Lock Threshold counter is '0' in the VMCB, so the very first bus lock will exit, set the Bus Lock Threshold counter to '1' (so that the offending instruction can make forward progress) but then the value is at '0' again so the next bus lock will exit. The generated SVM_EXIT_BUS_LOCK in kvm will exit to user space by setting the KVM_RUN_BUS_LOCK flag in vcpu->run->flags, indicating to the user space that a bus lock has been detected in the guest. Use the already available KVM capability KVM_CAP_X86_BUS_LOCK_EXIT to enable the feature. This feature is disabled by default, it can be enabled explicitly from user space. More details about the Bus Lock Threshold feature can be found in AMD APM [1]. [1]: AMD64 Architecture Programmer's Manual Pub. 24593, April 2024, Vol 2, 15.14.5 Bus Lock Threshold. https://bugzilla.kernel.org/attachment.cgi?id=306250 Signed-off-by: Nikunj A Dadhania Co-developed-by: Manali Shukla Signed-off-by: Manali Shukla --- arch/x86/include/asm/svm.h | 5 ++++- arch/x86/include/uapi/asm/svm.h | 2 ++ arch/x86/kvm/svm/nested.c | 10 ++++++++++ arch/x86/kvm/svm/svm.c | 27 +++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index 2b59b9951c90..d1819c564b1c 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -116,6 +116,7 @@ enum { INTERCEPT_INVPCID, INTERCEPT_MCOMMIT, INTERCEPT_TLBSYNC, + INTERCEPT_BUSLOCK, }; @@ -158,7 +159,9 @@ struct __attribute__ ((__packed__)) vmcb_control_area { u64 avic_physical_id; /* Offset 0xf8 */ u8 reserved_7[8]; u64 vmsa_pa; /* Used for an SEV-ES guest */ - u8 reserved_8[720]; + u8 reserved_8[16]; + u16 bus_lock_counter; /* Offset 0x120 */ + u8 reserved_9[702]; /* * Offset 0x3e0, 32 bytes reserved * for use by hypervisor/software. diff --git a/arch/x86/include/uapi/asm/svm.h b/arch/x86/include/uapi/asm/svm.h index 1814b413fd57..abf6aed88cee 100644 --- a/arch/x86/include/uapi/asm/svm.h +++ b/arch/x86/include/uapi/asm/svm.h @@ -95,6 +95,7 @@ #define SVM_EXIT_CR14_WRITE_TRAP 0x09e #define SVM_EXIT_CR15_WRITE_TRAP 0x09f #define SVM_EXIT_INVPCID 0x0a2 +#define SVM_EXIT_BUS_LOCK 0x0a5 #define SVM_EXIT_NPF 0x400 #define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401 #define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402 @@ -224,6 +225,7 @@ { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, \ { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, \ { SVM_EXIT_INVPCID, "invpcid" }, \ + { SVM_EXIT_BUS_LOCK, "buslock" }, \ { SVM_EXIT_NPF, "npf" }, \ { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, \ { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, \ diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index d5314cb7dff4..ca1c42201894 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -669,6 +669,11 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm, vmcb02->control.iopm_base_pa = vmcb01->control.iopm_base_pa; vmcb02->control.msrpm_base_pa = vmcb01->control.msrpm_base_pa; + /* + * The bus lock threshold count should keep running across nested + * transitions. Copy the buslock threshold count from vmcb01 to vmcb02. + */ + vmcb02->control.bus_lock_counter = vmcb01->control.bus_lock_counter; /* Done at vmrun: asid. */ /* Also overwritten later if necessary. */ @@ -1035,6 +1040,11 @@ int nested_svm_vmexit(struct vcpu_svm *svm) } + /* + * The bus lock threshold count should keep running across nested + * transitions. Copy the buslock threshold count from vmcb02 to vmcb01. + */ + vmcb01->control.bus_lock_counter = vmcb02->control.bus_lock_counter; nested_svm_copy_common_state(svm->nested.vmcb02.ptr, svm->vmcb01.ptr); svm_switch_vmcb(svm, &svm->vmcb01); diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 9df3e1e5ae81..0d0407f1ee6a 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -1372,6 +1372,9 @@ static void init_vmcb(struct kvm_vcpu *vcpu) svm->vmcb->control.int_ctl |= V_GIF_ENABLE_MASK; } + if (vcpu->kvm->arch.bus_lock_detection_enabled) + svm_set_intercept(svm, INTERCEPT_BUSLOCK); + if (sev_guest(vcpu->kvm)) sev_init_vmcb(svm); @@ -3286,6 +3289,24 @@ static int invpcid_interception(struct kvm_vcpu *vcpu) return kvm_handle_invpcid(vcpu, type, gva); } +static int bus_lock_exit(struct kvm_vcpu *vcpu) +{ + struct vcpu_svm *svm = to_svm(vcpu); + + vcpu->run->exit_reason = KVM_EXIT_X86_BUS_LOCK; + vcpu->run->flags |= KVM_RUN_X86_BUS_LOCK; + + /* + * Reload the counter with value greater than '0'. + * The bus lock exit on SVM happens with RIP pointing to the guilty + * instruction. So, reloading the value of bus_lock_counter to '0' + * results into generating continuous bus lock exits. + */ + svm->vmcb->control.bus_lock_counter = 1; + + return 0; +} + static int (*const svm_exit_handlers[])(struct kvm_vcpu *vcpu) = { [SVM_EXIT_READ_CR0] = cr_interception, [SVM_EXIT_READ_CR3] = cr_interception, @@ -3353,6 +3374,7 @@ static int (*const svm_exit_handlers[])(struct kvm_vcpu *vcpu) = { [SVM_EXIT_CR4_WRITE_TRAP] = cr_trap, [SVM_EXIT_CR8_WRITE_TRAP] = cr_trap, [SVM_EXIT_INVPCID] = invpcid_interception, + [SVM_EXIT_BUS_LOCK] = bus_lock_exit, [SVM_EXIT_NPF] = npf_interception, [SVM_EXIT_RSM] = rsm_interception, [SVM_EXIT_AVIC_INCOMPLETE_IPI] = avic_incomplete_ipi_interception, @@ -5227,6 +5249,11 @@ static __init void svm_set_cpu_caps(void) kvm_cpu_cap_set(X86_FEATURE_SVME_ADDR_CHK); } + if (cpu_feature_enabled(X86_FEATURE_BUS_LOCK_THRESHOLD)) { + pr_info("Bus Lock Threashold supported\n"); + kvm_caps.has_bus_lock_exit = true; + } + /* CPUID 0x80000008 */ if (boot_cpu_has(X86_FEATURE_LS_CFG_SSBD) || boot_cpu_has(X86_FEATURE_AMD_SSBD)) From patchwork Fri Oct 4 05:33:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manali Shukla X-Patchwork-Id: 833143 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2067.outbound.protection.outlook.com [40.107.100.67]) (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 0AC4A4E1CA; Fri, 4 Oct 2024 05:34:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728020050; cv=fail; b=jRSVqIp9z7Pqt6tJxkuuse8cQeLX+OCnwxwTGQLIxJrBRwk/AH4hNqhPG+Ry0O0XTNUFGfFSe/q/iZIibAhZ6ps9HDrw+eAAvzK6Nb7z0argBQcQUOeys6qf3gcNhiWFebDpaJBTfD7g6uEfn4jo6WLlJdkDouFbsvtoTehSg9g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728020050; c=relaxed/simple; bh=OswI/hEF8eFzEhj0t5ju8ib/RdAClRd9j48wGTeArCk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YMds6wZX6lgR6Q7FdKa69eqaq7oPKGe9qrjujaFCS/LDSNlrtTrYdYa3lyzHOc2N+AxhPBIaVtVZrDUmJAjnRmLKCFTW8xmq3FUiuU42TU1U94onzZgm8lNC/BE3C1tigvn78lL3WEeDEvGvRvLCoHIZM5QAarcHUJowO/VlNtc= 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=wMaeVq/2; arc=fail smtp.client-ip=40.107.100.67 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="wMaeVq/2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MbzEGMnVgea45/LmXbRG5W74Ldvmvr9Q57iyjtnIdd1waa5gG7rTfDtuVFBXBVeOuiq1Ubl9zT4zfcR1wPq+/cRyzbsmi4MDbjJEu8lZr4RBPStV+CLikWUp0Ui2gzZlsJnEFNphuOuWMlnAWtpOjQjiIXCzR4hwLugYIWUXPMnYieUVchnlr6UXsps4mGqsVtJa35gT/zkzNpteazSVhSVZPQT1B6T9TxUJ2X1hWh6gjN+EOVYLgWSJA3DoAVZ2SsbA7sIbtZmNqCUmskoXk9qW6maU8olYE4x0VgU3Wx6dkfTVeiJlMo6bRCUYU79UjanEbGPz7qKsVYuJXjo16Q== 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=c/Lm0mCfn1GVpAXQ4WMcHLi7/LD9RQcYLhewAIPAPX8=; b=PJdtjtqc3QcyzaG8RG8M1oe8K34/va8xAoDiBm6OtEQXWxB6UCHLoi9czlX4V2iaDuYnE0AyDTKH5H0x+dpxPoA/wYaMnmt8gl8i3shY2E2cAZsl1iQBclMIuN/TrqlwbarpQr3/DEhsB6P4xP+iDhBxphI/jJRIW0/4l8/koKCg0cXTdmyDa+xQhk91WU0ILEBtw2VToKesqEAbEAtF3E26n/wxA6GQikslkyRNm1tjAFXxSFr5GV8OQ/Mot83WgZTTf8Dm+8T4D7PbPM799UZ1nPeMSqR1A6/phjqc0A/Exv+kzaHnQGgLluaeHkcY/ZlDSE83igEhbqk8sKRZkg== 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=c/Lm0mCfn1GVpAXQ4WMcHLi7/LD9RQcYLhewAIPAPX8=; b=wMaeVq/2yjjlnCnQsl3SKPLBALxvBrpr+xlvyoAqT2xAMsRnWNE2klMyp8tBwU2gBauKth5i6PqLucWBPlAe+a9O659a1wuU8T6pYcLoG9/LS3ToAQMEredccY579cU3wJ2XWk6c7ZU2vHDeIGozrH/kpLEA8Y7whGXnofbOUP0= Received: from BN8PR04CA0019.namprd04.prod.outlook.com (2603:10b6:408:70::32) by BY5PR12MB4051.namprd12.prod.outlook.com (2603:10b6:a03:20c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16; Fri, 4 Oct 2024 05:34:05 +0000 Received: from BL6PEPF0001AB59.namprd02.prod.outlook.com (2603:10b6:408:70:cafe::d0) by BN8PR04CA0019.outlook.office365.com (2603:10b6:408:70::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18 via Frontend Transport; Fri, 4 Oct 2024 05:34:04 +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 BL6PEPF0001AB59.mail.protection.outlook.com (10.167.241.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8026.11 via Frontend Transport; Fri, 4 Oct 2024 05:34:04 +0000 Received: from chalupa-d178host.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, 4 Oct 2024 00:34:01 -0500 From: Manali Shukla To: , CC: , , , , , , , , Subject: [PATCH v3 3/4] KVM: X86: Add documentation about behavioral difference for KVM_EXIT_BUS_LOCK Date: Fri, 4 Oct 2024 05:33:40 +0000 Message-ID: <20241004053341.5726-4-manali.shukla@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241004053341.5726-1-manali.shukla@amd.com> References: <20241004053341.5726-1-manali.shukla@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: BL6PEPF0001AB59:EE_|BY5PR12MB4051:EE_ X-MS-Office365-Filtering-Correlation-Id: 55aa22ec-0f07-402f-56ea-08dce4362918 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700013|1800799024|82310400026|30052699003; X-Microsoft-Antispam-Message-Info: KnEruY5VZxr5iDAFpeo4PNrKKFtllSI4EjZ7mIaDUMfwhdcwj1IwSpftrG2LB8gwdotMizJqrtZA3LesiVH9YOMVzdCCwYMui+qyTBx6WxmFkt55MK/nkC2ojaFL1imXlagiivCn5clYycgGmf7+gExcHLZnljZHZDONpMACTAKGey6je5i5kg6/CQzjEClOiNnrxUBybbkmIDhZHkYmngy8bf1lsO0anvTT1npoI8vFxy9QHGC/BGraThmpFQsR8Yu9cojQ1ItKOUG8AoWkkNUfYORyzu4WLB8BTTyhxJAR/nwW3JDoBxcug+MqBFH1VfnrbaIOiAO6ONTf6n3nDDZBQDe8h32xrNM9oy2WC2vwWtYadF12gJ1WSFS8xETEEIoKoLtCImpzLOi+EfupE+I8JrRzYujWgP/LPIImEXFJyMJLe9AkLpD/ZbG85vrW0WgghSR+FspGMOD3FPHE2mjSd2VJDvUzZRcuWa0VU0pgsdJL4ww/+rmeIdvi36WBSzfFttbWGC7kA/SaSVRcFLFXuT2pcTL7Jk9DemYS5Z40/v2LFSJrWnB7U35Cjy/+mQMQfkZ8EczoKwHHQper9+AHDXNBKX5afGNM152lzzCQN/wLi1jEBNWd71PKIlioGkURbnRdiidCQEVwn2kQXh/Wj2o634keaBBf85Z4dizYGuKtl+vLLbDVRlFM4ocyh+aXWjGuGqNfIZysEJmdp3s7k7PTiv6+iEjkP++VjxdpvlmSDhPPQN/G4XaYrCJNZh6gR+fo3G1cUBxRGnu4HHrQnHxrIOtQwI/AaCmun2o7W8DqWi1BQTz9q5SmMTywPZQKKISCARWCFNWDbiNozZVq5Xp2ATZ10I7ugEDlORqgJZL5tLbrVpdneUlm3Ik1ZXH2TG2RotC1tLcQ2u0q48Vw6qI25awE0HJU452cBYnBC2ztmnwOfWk4cZLgLb6ZIUGVafs5YSvMLcEm+8cAonHMtcHvXlWf4cLjAMTjjHF/EDitqP5CUN2mNbJ9AX+PYoQCk8rr6sYM9NeNJ/Z24lO59YdE7vRzNMlM7+l5NCpYJlCQmVkET6MvIpfgMaCTJ1UJwp44KiKcIeyQ18jIEsR9tGb8p6nRUczSvuJ/KFIb51DqBOQQ4BduJuKnBW7Ynrj0/umEwuM8EODlFvUIDghxtbeqz67oSVbxRNXcpoLGaKpK/WKUwD5ByuN/OY+A2uxa2/20lkFoYkRs0nlVcDaDuOHKq7cu1zY7LA6mWvQ/OoNgYPOuAQZ55UB4vnWgpEneUSzMCZa1vMRQhe0P3yGVDzy8kuc1u5wu9w3ZnTK5Aby4r1hnEZI3umomy6DBaGB3gy71sgzdleI2l0ua1kD8Mw0UZ+6jaWPGCgJhgEzEAa0Z60Fb8CKwR/FqW+Qu 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)(36860700013)(1800799024)(82310400026)(30052699003); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 05:34:04.7970 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 55aa22ec-0f07-402f-56ea-08dce4362918 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: BL6PEPF0001AB59.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4051 Add a note about behavioral difference for KVM_EXIT_X86_BUS_LOCK between AMD CPUs and Intel CPUs in KVM_CAP_X86_BUS_LOCK_EXIT capability documentation. Signed-off-by: Manali Shukla --- Documentation/virt/kvm/api.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst index e32471977d0a..49465323dc62 100644 --- a/Documentation/virt/kvm/api.rst +++ b/Documentation/virt/kvm/api.rst @@ -7884,6 +7884,10 @@ Note! Detected bus locks may be coincident with other exits to userspace, i.e. KVM_RUN_X86_BUS_LOCK should be checked regardless of the primary exit reason if userspace wants to take action on all detected bus locks. +Note! On AMD CPUs, the bus lock exit to user space occurs with RIP pointing at +the offending instruction. In contrast, on Intel CPUs, the RIP points to the +instruction right after the guilty one after the bus lock exit to user space. + 7.23 KVM_CAP_PPC_DAWR1 ---------------------- From patchwork Fri Oct 4 05:33:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manali Shukla X-Patchwork-Id: 832865 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2068.outbound.protection.outlook.com [40.107.92.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 4CFB681AD2; Fri, 4 Oct 2024 05:34:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728020051; cv=fail; b=qcES7+d5ov/dgZxEI4r3oMSCnTrNbnPdkRQpd6BBbx8F8eqCSW+3MBq+CevIVIZm07Gq0X7VENTjQpZ9yGV9MIIHe7gOK57HfpgDi1LjOT3v5PixEOJCNTr4u5tB0MUq7/UW06zV+cyTR9E8Qafak8wmmaVV/cXC1NV9DbkX+i8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728020051; c=relaxed/simple; bh=c3FIEmH00FB6mke84fG3HnOgDShjeVfwQcN5BUyOqQc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MD8Wq+zs0E3BhgJx6Lpixpxi+/3FOHk/A8RASbtv6HRlKxePJRLyoIJaTkkgVpSuCvU6YmDWqOuPdtnRes6gKfb3vYMlAhQ9LzqOpNuCxGL7kD1gz0pyDz12J5LS8HWgFCL8PrP+HzdLuAT73ZgLupIJVIhg5STFWYjx4MSKXZM= 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=IpssXoyl; arc=fail smtp.client-ip=40.107.92.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="IpssXoyl" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Itmht8ey/3WBqnaDR5GuCtBEHfvXzYE0lCcJzgKWhusFMZlEZd3cNUtsTWVyQF7M1AWEoOQ2zcmfVwSVC5zT44MLDz3lKw330aQ3I6vwwtdbbTqVDfeI5DpE2M86Y33bm8aWIoDk9/LNUxWYXtJNz+KebGdkHDXaDjfasG+XJhO1oVF3A2EumIvpfROwf9ooJLuP8PPtrB9ls2pc8VqBsRWN2UzwgXTz8SfWkgHBtB2uIFcIOig5ddCh0g62d0zzzOLBupaFiiXqaHHOrDn5JZ8xag30tA8sMPF57g41ZzLgbzyWT7ee3n3MFHUwTHGUMcWFjliQWrR5ikgRr6fMkw== 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=nU58zmn+ptaJ66wihrajBbVUfn1aZFZ6/ryClZ4tg2A=; b=D4906dA3BIu37IOg3M3ffPAbesSoKj5ejUeNsdYvnq4Drt2FbK7HHwTQtfXz4PW5xj1d3dpuyKJ3kM7WlYP61DGQdt9Hft9ZMlFv3gSbXnj0RECH5nhKNbzB5GqP64UMrnuXn+Rtu5r29GJWJL1wfHq6OjvPLwEBpgpq4gZrcFJMT5kQwy6k7GL1G1L7xtTZe7NnJA/aRjtWfOTUPgM+Uap/9hn0IxNFBoCx0/xm6Gbhvgl3Q/+yJGe+o8qY0p6x77VIezmHe/EEpcCWFnuCtasrES609EQu6fIExAvNatJMAMX13kdT+2pMtQN1w+6yQ0/pRUlT4qLrTuIxl7fSgA== 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=nU58zmn+ptaJ66wihrajBbVUfn1aZFZ6/ryClZ4tg2A=; b=IpssXoylNHHDI646GRPa/BB27NXBqJNpnH9TaaJA2uuR3KH3/mcPmgqRio45fJ7xYXStjyrGSX0NmzohtknkJSnM4DUbZPZi7PW06EmfDParA660bYxXokYxhSvOcfLb/t6Y+f4qpK/sRj+hpEdVVGfXDvO9B3pRo1O3Vf4Sc5A= Received: from BN8PR04CA0002.namprd04.prod.outlook.com (2603:10b6:408:70::15) by IA1PR12MB6434.namprd12.prod.outlook.com (2603:10b6:208:3ae::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.15; Fri, 4 Oct 2024 05:34:06 +0000 Received: from BL6PEPF0001AB59.namprd02.prod.outlook.com (2603:10b6:408:70:cafe::d7) by BN8PR04CA0002.outlook.office365.com (2603:10b6:408:70::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18 via Frontend Transport; Fri, 4 Oct 2024 05:34:05 +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 BL6PEPF0001AB59.mail.protection.outlook.com (10.167.241.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8026.11 via Frontend Transport; Fri, 4 Oct 2024 05:34:05 +0000 Received: from chalupa-d178host.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, 4 Oct 2024 00:34:02 -0500 From: Manali Shukla To: , CC: , , , , , , , , Subject: [PATCH v3 4/4] KVM: selftests: Add bus lock exit test Date: Fri, 4 Oct 2024 05:33:41 +0000 Message-ID: <20241004053341.5726-5-manali.shukla@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241004053341.5726-1-manali.shukla@amd.com> References: <20241004053341.5726-1-manali.shukla@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: BL6PEPF0001AB59:EE_|IA1PR12MB6434:EE_ X-MS-Office365-Filtering-Correlation-Id: d52c536f-d707-419f-3c1f-08dce43629bf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: KntMIWeA8NESraMroCiQL/A6/1ZJKDVSrOiByCEn2+SwfRKPu12fY1ae16CNiSUqgOyj4qJhFTss+zWPpDQwVVdk97lW6X57eTWZK8eohnQjbZNJT95jFAj8mcPHYCXNW8upzvlh43zz/xeaNgqKXx234/lshik+iYcmdSlMTRn+wy9g5jY3vtaVHK1gLimqHHSUbB2fQp+dAs62gyYUe0waT18DaIxd3d4rf3mvUBvgdcVM5kM1bv38zFG3AyDwZTxI97B8UkdN5HfKd5160VXvJUfZxY8qOth3p6v8DnWJaSdPinqw7u4dKiE52edu3yl+u/LioDpgNczD0KqTXBCHPgaBlp4cEmPNqtQuHZS7AgETRoShkax/6RUKecT82Y3p2jpMpupJEDqBaPxBa3yaK83LYt5zHuec2+sPMOMC2p+b/3RQTA1vyH/7TdIsAYLu4C6gFarGFP+ah0cOZiw0tUsNTfymii2EnL0yh4gjQRupHYo5rUWcK1JOLmHi9nQ1yRfIRU1NFMR9UmUAZOM+aZypfZu1GVOoUs7OkPOGNr//GV9J+29duoHsaNVqr2zztw0qzFNR7UKPhoMJtcPiWDXmSO1hozvTpDYZinwJF7gJIoS1t90LmEz8XDJENNlKcgFXw1LPmjt5KUkb0PE45SRldDDHfentj25RwD8Y3fzqCJLP9mAQR63aBzgBAqmnn2opB4os2wBcy3Dc3044PJLFeDDRw1IACHeeGoTY7NCXx42ywjRZLhcqr8BHQJYxOa8sQewwIWwZ1E6u6wJTTDVBMmxfIxPa59xzTotwxVWP5pNwqSKxbTUUMzRcfQp/FRN+XD1bWpSNtUAOKAVN7BsGS/lZx/NUe9jUfaj+C0sVAhE+zzp0efQXGEXHzuMNtf6i0EulvZ0ynJjnuq5e9Frd3sLET1MRNTAWxKGGuFTaHdiliB5w7xCyQYd9L3xcJ3UWpmkV0hHnCj5QRZoE7lHBzfRi8H31NhbH+GT9YInkBC2kTcYA331hjvU5ZFCnNKm2ZcbT++FgbIs3JqTkcVjkPadqIXbsjhLfEAWWQTokUmVOSBZHlfO1R7Wh1MU79cWUifvTMoIaBQEtm9lFkjlnafml7ImekWaTvPjpfGAqRQLeL8TlQsIJz7cMgfT3JwXBUTxHgn/YkKYgLAZawtAz0Cs1Vt59ODO2J1McXsoKYMTeRUHtuPQUnH3SO0NMQeKtOmvbjwenLPeGi22+TYC0SeN/RSepo9kiKn7+YdQhQwl3/Oy88RKl+xQ3Q4wnMHJS/0Ut5IqHkATbOIBYGfFiLsvdXFqWVVbeHle+mLxzvRIZ7x2mKTmS8mUG6oP/qylSZW2pkhU6oOthP64LvW+uSzLIRxLGV907tOs= 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)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 05:34:05.8908 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d52c536f-d707-419f-3c1f-08dce43629bf 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: BL6PEPF0001AB59.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6434 From: Nikunj A Dadhania Add a test case to verify the Bus Lock exit feature The main thing that the selftest verifies is that when a Buslock is generated in the guest context, the KVM_EXIT_X86_BUS_LOCK is triggered for SVM or VMX when the KVM capability KVM_CAP_X86_BUS_LOCK_EXIT is enabled. This test case also verifies the Bus Lock exit in nested scenario. Signed-off-by: Nikunj A Dadhania Co-developed-by: Manali Shukla Signed-off-by: Manali Shukla --- tools/testing/selftests/kvm/Makefile | 1 + .../selftests/kvm/x86_64/kvm_buslock_test.c | 130 ++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 tools/testing/selftests/kvm/x86_64/kvm_buslock_test.c diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile index 960cf6a77198..b2de61e4a213 100644 --- a/tools/testing/selftests/kvm/Makefile +++ b/tools/testing/selftests/kvm/Makefile @@ -81,6 +81,7 @@ TEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test TEST_GEN_PROGS_x86_64 += x86_64/hyperv_tlb_flush TEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test TEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test +TEST_GEN_PROGS_x86_64 += x86_64/kvm_buslock_test TEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test TEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test TEST_GEN_PROGS_x86_64 += x86_64/platform_info_test diff --git a/tools/testing/selftests/kvm/x86_64/kvm_buslock_test.c b/tools/testing/selftests/kvm/x86_64/kvm_buslock_test.c new file mode 100644 index 000000000000..82693520485c --- /dev/null +++ b/tools/testing/selftests/kvm/x86_64/kvm_buslock_test.c @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2024 Advanced Micro Devices, Inc. + */ + +#include "test_util.h" +#include "kvm_util.h" +#include "processor.h" +#include "svm_util.h" +#include "vmx.h" + +#define NR_ITERATIONS 100 +#define L2_GUEST_STACK_SIZE 64 + +struct buslock_test { + unsigned char pad[PAGE_SIZE - 2]; + atomic_long_t val; +} __packed; + +struct buslock_test test __aligned(PAGE_SIZE); + +static __always_inline void buslock_atomic_add(int i, atomic_long_t *v) +{ + asm volatile(LOCK_PREFIX "addl %1,%0" + : "+m" (v->counter) + : "ir" (i) : "memory"); +} + +static void buslock_add(void) +{ + /* + * Increment a page unaligned variable atomically. + * This should generate a bus lock exit. + */ + for (int i = 0; i < NR_ITERATIONS; i++) + buslock_atomic_add(2, &test.val); +} + +static void l2_guest_code(void) +{ + buslock_add(); + GUEST_DONE(); +} + +static void l1_svm_code(struct svm_test_data *svm) +{ + unsigned long l2_guest_stack[L2_GUEST_STACK_SIZE]; + struct vmcb *vmcb = svm->vmcb; + + generic_svm_setup(svm, l2_guest_code, + &l2_guest_stack[L2_GUEST_STACK_SIZE]); + run_guest(vmcb, svm->vmcb_gpa); + GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); + GUEST_DONE(); +} + +static void l1_vmx_code(struct vmx_pages *vmx) +{ + unsigned long l2_guest_stack[L2_GUEST_STACK_SIZE]; + + GUEST_ASSERT_EQ(prepare_for_vmx_operation(vmx), true); + GUEST_ASSERT_EQ(load_vmcs(vmx), true); + + prepare_vmcs(vmx, NULL, &l2_guest_stack[L2_GUEST_STACK_SIZE]); + + GUEST_ASSERT(!vmwrite(GUEST_RIP, (u64)l2_guest_code)); + GUEST_ASSERT(!vmlaunch()); + + GUEST_ASSERT_EQ(vmreadz(VM_EXIT_REASON), EXIT_REASON_VMCALL); + GUEST_DONE(); +} + +static void guest_code(void *test_data) +{ + buslock_add(); + + if (this_cpu_has(X86_FEATURE_SVM)) + l1_svm_code(test_data); + else + l1_vmx_code(test_data); +} + +int main(int argc, char *argv[]) +{ + struct kvm_vcpu *vcpu; + struct kvm_run *run; + struct kvm_vm *vm; + vm_vaddr_t nested_test_data_gva; + + TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_SVM) || kvm_cpu_has(X86_FEATURE_VMX)); + TEST_REQUIRE(kvm_has_cap(KVM_CAP_X86_BUS_LOCK_EXIT)); + + vm = vm_create(1); + vm_enable_cap(vm, KVM_CAP_X86_BUS_LOCK_EXIT, KVM_BUS_LOCK_DETECTION_EXIT); + vcpu = vm_vcpu_add(vm, 0, guest_code); + + if (kvm_cpu_has(X86_FEATURE_SVM)) + vcpu_alloc_svm(vm, &nested_test_data_gva); + else + vcpu_alloc_vmx(vm, &nested_test_data_gva); + + vcpu_args_set(vcpu, 1, nested_test_data_gva); + + run = vcpu->run; + + for (;;) { + struct ucall uc; + + vcpu_run(vcpu); + + if (run->exit_reason == KVM_EXIT_IO) { + switch (get_ucall(vcpu, &uc)) { + case UCALL_ABORT: + REPORT_GUEST_ASSERT(uc); + /* NOT REACHED */ + case UCALL_SYNC: + continue; + case UCALL_DONE: + goto done; + default: + TEST_FAIL("Unknown ucall 0x%lx.", uc.cmd); + } + } + + TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_X86_BUS_LOCK); + } +done: + kvm_vm_free(vm); + return 0; +}