From nobody Thu Apr 2 22:24:08 2026 Received: from BN8PR05CU002.outbound.protection.outlook.com (mail-eastus2azon11011059.outbound.protection.outlook.com [52.101.57.59]) (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 C4201361678; Thu, 2 Apr 2026 18:43:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.57.59 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155413; cv=fail; b=SiKqly9wQ/bSVt8gR4g/PE+YTuCZikrbWEvREiOHVKl4i+tniHuShDEU52QjcYCeU+A8axqXdG6J3l53WFW1/ahsZBzZBEfTklFn6ldg+Qze2WABOS1YiOvm1xLsDUlOyXeTXfAa03z9VezF362LgTyP+hHSNuPWH2cxoGbeQDM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155413; c=relaxed/simple; bh=kixwIgpJ3n4s2pCwC1D7BRNAhSLvQ4vTAgrMKVQjjys=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VqD/Rr/gPSCotxWaUkALEvDHWCrClmQiu89S6N30Sq3phZehS+Mrz2jre7217jls9KHn6QQ2nOM+V5IA6JT1xi8pMLIHZWLdkj8va4NJuxAfjI84q0sPUrhUfKZF1BSYkFiSODt/pQKAm5vPppbFXJjVvlGG9wqlESY3WIlZRYA= 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=wpDm5pXU; arc=fail smtp.client-ip=52.101.57.59 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="wpDm5pXU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tXSwRIhkh73f0rLpQdvtcdEwaaXIyp1VPZOgdVa8/f/1DXie2Zwhii26rZ52XW/YtTgeqFQuw+D+EI1dQMrYhL8bjGsWetRHN3nLrOMCpEpRDw8WCHqZY0lwgkT2Wgdh6p49UiS4rXrx1Gdv/0NsqOYPca8c77Mg60Hy7aAnwrD6uXAFlQWVHf3waWSs4/wFVB0fhN54n1GWKQaHcA4xviEdryCI3AYB/9RyMvPUbWt2gtE4MKBI5s584IE1HfpQdlHJqjIsQH5zELCydmH9JdeiZkrGlEgtPdM860SCLE9+/naCgEUFk7/gOnosKIcudsqfMUG4JcTLG2bHDnP3ig== 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=4W6QnVUudsksppBJjDkGRl1u5wcvj8pwencc/0fprtw=; b=KGOUdibszlRvfuMl45xOz2j70y6n1DBqpFcFs3gI4ruLjBCs20NfIJcy8HukJ2yXeOvaXRPpIXMEKqFUaTbfpMD9o6hNl9+0jaWQg75fpHglvLtKgwh+uDuGr3tjRWz1k2Gg9++2VJNsw6MH4q5vna8Wz4PQQFNIvT2XcIABjl2+/2+j78K1dyTHXfuBPQTS/pyE/qwlxIEamSheYpHuSW12uSyFimkdPusV1hOVzmcokNv1/ItsK8qMpXa27UJTjFOR9Jo1rY7ol7nk8ncxBgJxAXcuTmJeub1LwPPSYZWA1F+qEJ3EoOQNsMhmAVlZZgorKYtUFpvYakYTBwsk+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=google.com 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=4W6QnVUudsksppBJjDkGRl1u5wcvj8pwencc/0fprtw=; b=wpDm5pXUz8T5OCp3YYFkWrfzwXRzNIL8YC8qbShr5+aAijIaad4hh297HTGawth7DXNb8SzspAVdcmBg1tur/E5r043RMzb585lI/D+6Utw+xw+CqMxFapDxquHZ3ZBQu0zvc28KxhE+vnI8XLY+F/PwR7Dto/J+8Y0OPGXjFI4= Received: from BN0PR02CA0023.namprd02.prod.outlook.com (2603:10b6:408:e4::28) by DS0PR12MB7745.namprd12.prod.outlook.com (2603:10b6:8:13c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 2 Apr 2026 18:43:16 +0000 Received: from BN2PEPF00004FC1.namprd04.prod.outlook.com (2603:10b6:408:e4:cafe::31) by BN0PR02CA0023.outlook.office365.com (2603:10b6:408:e4::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.18 via Frontend Transport; Thu, 2 Apr 2026 18:43:14 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN2PEPF00004FC1.mail.protection.outlook.com (10.167.243.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 18:43:14 +0000 Received: from purico-abeahost.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 2 Apr 2026 13:43:10 -0500 From: Shivansh Dhiman To: , , , CC: , , , , , , , , , Subject: [PATCH v2 1/7] KVM: SVM: Initialize FRED VMCB fields Date: Thu, 2 Apr 2026 18:42:34 +0000 Message-ID: <20260402184240.1939480-2-shivansh.dhiman@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260402184240.1939480-1-shivansh.dhiman@amd.com> References: <20260402184240.1939480-1-shivansh.dhiman@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FC1:EE_|DS0PR12MB7745:EE_ X-MS-Office365-Filtering-Correlation-Id: 688313fb-43e1-48aa-8582-08de90e7b2d7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|1800799024|36860700016|376014|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: lCFXGHfYgq4cLTlGLgGz+cpzqPSLfRhDduBVO4xeZK7ich8b6mA3W54ER6YhM9ef5KOixkwAHc/JUBfUqA6nVYNO8PvsCBtBMLEwY85IZ9gA5Qsk1IS6ydUoS8+wMntC6AN6JI/AM6Eyw+uCs+qNZmmCe93PDiwfw8GrebyLz2HU+KujT7IehXM7zHPiH1CX9LpbwJlp+pcI/A8lhgFW8S8+lmAkJDIe+tiklVrCp/z4GA3stk4r+glJ3pxZW07cVy3jzqeJ3f380XW68pq2Lq05WUt66zOJQyUisxR5+hekdEoh7bmYd5Jo/PhovL35GpGmdnsxcwAWYz2dSOwjRh6V4MUrAzqoAo7l669ZDICIa88criFFZZ7wvHh222OJ8ET08ggaGp0zoCfQjpToLDPDlKMp9gniAbnJ90yHldqixNMNTJfKvYpadiAyr0Css4SNXbpjSeV+QhiHnDOHS3/iRyjzV2JTBDZFz/MX7rBd7S2Imvqh6BuCtKg05KSlQEyzUASEJ8A8Ym8wqsq2+29Kt8TDp6EN3r61dOrtT1rfmjwtQIWhh4iJ3KvHObQCRSzfkm+EHrPQQwc3UTI33nG4tjBLrwQx46EV8EtdSZfBcKfMwP5ceFHHQjGAZUXJdn3xM74p0svLz3WsI5ggGeHmc6ORw8iykzoLvC2yxiIWC/wlb60378tw1oJa+Dk1sxJmNAu6RDHMKYnrayb12IM0UWDffAtxoFusjVXsXkeQP0XExsPr+pH9LJXxY48DloL3xK6aFu8aTXpX/k7SgQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(1800799024)(36860700016)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Va1HUggN9DXtQlZnm1PPaVuRLROeHCRtoLUQ59MoXZBFC/WHf+6XrmiPBGI6ODIuf+yd8lTSCCdSM1GuKyEmxv3hHkHrM4BTbBlMlDFzxQL2Hq0R3r0skMAMLfy1jYDs9GQ59NDF6xBh0GAwxu1DGkx2gEVlz46V4tQ85JB9KU9LJl//iu95GVkffg3K/tRZQ5kqnB/pRyCoZQgWXstk2e5YNouVHnWkH+EMF8ePiDoEzc+Afytod3/8gt4qahh3GVz3iqJKui+OaIOzApTC4Da3yQ9b5K5wznCf0riPl16sAat1nZKUE5shXtAdeWp/mTdRDbRVL6eOqyFN3MWjNE5gFP/Bcp2hG1ilF9PP/LaYMZNNT8yYjFsd9Ne2QJxxRPzSN31HEODFyX54B5GfU6WOBCsSqKbfU6LBZrEV6Fths5RdnhpwJl2nxZkAhMYz X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 18:43:14.5093 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 688313fb-43e1-48aa-8582-08de90e7b2d7 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FC1.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7745 Content-Type: text/plain; charset="utf-8" From: Neeraj Upadhyay The upcoming AMD FRED (Flexible Return and Event Delivery) feature introduces several new fields to the VMCB save area. These fields include FRED-specific stack pointers (fred_rsp[0-3], fred_ssp[1-3]), stack level tracking (fred_stklvls), and configuration (fred_config). All FRED MSRs are zeroed on RESET. Reproduce the HW behavior here to ensure that vCPU starts with a valid FRED state. Also update the size of save areas of VMCB. Signed-off-by: Neeraj Upadhyay Co-developed-by: Shivansh Dhiman Signed-off-by: Shivansh Dhiman Reviewed-by: Nikunj A Dadhania --- Changes in v2: - Modified the zeroing of FRED MSRs from INIT to RESET and updated the comm= it message (Sean Christopherson). --- arch/x86/include/asm/svm.h | 33 ++++++++++++++++++++++++++++++--- arch/x86/kvm/svm/svm.c | 12 ++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index 17f6c3fedeee..a42ed39aa8fb 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -165,7 +165,10 @@ struct __attribute__ ((__packed__)) vmcb_control_area { u8 reserved_9[22]; u64 allowed_sev_features; /* Offset 0x138 */ u64 guest_sev_features; /* Offset 0x140 */ - u8 reserved_10[664]; + u8 reserved_10[40]; + u64 exit_int_data; /* Offset 0x170 */ + u64 event_inj_data; + u8 reserved_11[608]; /* * Offset 0x3e0, 32 bytes reserved * for use by hypervisor/software. @@ -360,6 +363,18 @@ struct vmcb_save_area { u64 last_excp_to; u8 reserved_0x298[72]; u64 spec_ctrl; /* Guest version of SPEC_CTRL at 0x2E0 */ + u8 reserved_0x2e8[448]; + u64 guest_exit_int_data; /* GUEST_EXITINTDATA 0x4A8 */ + u64 guest_event_inj_data; + u64 fred_rsp0; + u64 fred_rsp1; + u64 fred_rsp2; + u64 fred_rsp3; + u64 fred_stklvls; + u64 fred_ssp1; + u64 fred_ssp2; + u64 fred_ssp3; + u64 fred_config; } __packed; =20 /* Save area definition for SEV-ES and SEV-SNP guests */ @@ -472,6 +487,18 @@ struct sev_es_save_area { u8 fpreg_x87[80]; u8 fpreg_xmm[256]; u8 fpreg_ymm[256]; + u8 reserved_0x670[568]; + u64 guest_exit_int_data; /* GUEST_EXITINTDATA 0x8A8 */ + u64 guest_event_inj_data; + u64 fred_rsp0; + u64 fred_rsp1; + u64 fred_rsp2; + u64 fred_rsp3; + u64 fred_stklvls; + u64 fred_ssp1; + u64 fred_ssp2; + u64 fred_ssp3; + u64 fred_config; } __packed; =20 struct ghcb_save_area { @@ -542,9 +569,9 @@ struct vmcb { }; } __packed; =20 -#define EXPECTED_VMCB_SAVE_AREA_SIZE 744 +#define EXPECTED_VMCB_SAVE_AREA_SIZE 1280 #define EXPECTED_GHCB_SAVE_AREA_SIZE 1032 -#define EXPECTED_SEV_ES_SAVE_AREA_SIZE 1648 +#define EXPECTED_SEV_ES_SAVE_AREA_SIZE 2304 #define EXPECTED_VMCB_CONTROL_AREA_SIZE 1024 #define EXPECTED_GHCB_SIZE PAGE_SIZE =20 diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index f4ccb3e66635..cf6ba59d6d1e 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -1110,6 +1110,18 @@ static void init_vmcb(struct kvm_vcpu *vcpu, bool in= it_event) save->idtr.base =3D 0; save->idtr.limit =3D 0xffff; =20 + if (!init_event) { + save->fred_rsp0 =3D 0; + save->fred_rsp1 =3D 0; + save->fred_rsp2 =3D 0; + save->fred_rsp3 =3D 0; + save->fred_stklvls =3D 0; + save->fred_ssp1 =3D 0; + save->fred_ssp2 =3D 0; + save->fred_ssp3 =3D 0; + save->fred_config =3D 0; + } + init_sys_seg(&save->ldtr, SEG_TYPE_LDT); init_sys_seg(&save->tr, SEG_TYPE_BUSY_TSS16); =20 --=20 2.43.0 From nobody Thu Apr 2 22:24:08 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012029.outbound.protection.outlook.com [52.101.43.29]) (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 6E37738423B; Thu, 2 Apr 2026 18:43:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.29 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155418; cv=fail; b=NCoPyBUTUe/2MxcF5bJV8msqxJBPQ+56SNoNDkS3gflAf+qFxdnrV++NC2qnp6liTWDEuCkD1Tf6hisk2Wfoc27VvTRSmz1oo65Bj76nij01mmMLLn7pyFJRZDgq0M3ycGYZI4Z7eQh3MUFhQ7TwmE4hLXfPheNZH+pN07TD/HU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155418; c=relaxed/simple; bh=xptJA6YCAOK05+KTXYIX3BPhFXBhIhld1/VGYRoahRU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=O/KLN3ydu+BTiFKESOluXKBEStLxpYpqRTmgZ21+q3oWPIpCJLKPLPhBzwdUxeUbXoichgWa8MGZiWX00opKdbhwJn/eowv+meLOXVxWS84SyGDB7jhQxp9qm/filDCEPfmtMsHAGosbBd2JLil40k4sH67WNRgihYRChrpiSI4= 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=SJjn/RuI; arc=fail smtp.client-ip=52.101.43.29 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="SJjn/RuI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T5KaxwdhPYNW/BW1zcgI3qGy77Jm7AFG9aqoUx0dFsfi11AR3pfXzaRaUptur9ftFI2ZKaGmH8QqO5h32bO2Vf2bg3zZcrjLnjcdeDGSPu3mCEn37E35ayWeZfPVtQZZ8ocnc0jxHNBdANluX3b0crva52r8O6d24NxEJaKfioPxRtdtESz5l+6M+Lq04y6NpNlBByyJNJgRPR4cGfk4/LqQMfFEIiMmAHFOFNguo2gbDUahXNJnUoJxlvvmTuTaOQ8JD9LxppmtvKm75Y3oWXPuDgobXYbwEyZb3LmNDEvINnWDFYZoTD98Z0nkoesUfqufrJzy379EBuCw5pvM3g== 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=0GEfblXECCoFQb/KyDYOhhZWb3lLUZXYUa6uTfKjWKE=; b=Lto9vEhOQcIzU4byZMgMESZvuctrYhuWmOM5TS3hAqkz297SzuhHNs4eZ5ukgpQtffqr1jK/PlPTLGUYatpJ1VHSrJRjS5exqhpOTWlYHabUBRRtR1tiKNN2pRa55k3mvZVCrXZkPNT3+KBw9CeHzl1NLpILpE4p2K4OFgJqZ92TCPKZAgsa0RknnXW0jv7kKyVfnW3NRsZuTGRyH1ZWV144Pbh9/1egffe79aMkyz+XcJx6NyPHKeaPqFNbWMcn+G2woreKsUaqyLB4EtgihmTPoLaEtyk+3aEKsId+zNx0gcBAG/isZu6+5LYFhdR7s3dPWqBPRjTX8X1X5F0GZw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=google.com 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=0GEfblXECCoFQb/KyDYOhhZWb3lLUZXYUa6uTfKjWKE=; b=SJjn/RuIkgqhd6LLhazkBxgZchDI71xcVxQPLjC8Ze34YUKCwV10Yps5FzX3iIrf/WFbEKc5kYZ6tgGvmsk++81d692riPyOfVsgGky6ovkAyLceBlPiiZZd7lT8Oh9BTeUR8jDz6U04HrBx7HIumjI3xPWgM69vDo06kBgcOu4= Received: from BN9PR03CA0683.namprd03.prod.outlook.com (2603:10b6:408:10e::28) by MN0PR12MB6222.namprd12.prod.outlook.com (2603:10b6:208:3c2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 2 Apr 2026 18:43:31 +0000 Received: from BN2PEPF00004FC0.namprd04.prod.outlook.com (2603:10b6:408:10e:cafe::e3) by BN9PR03CA0683.outlook.office365.com (2603:10b6:408:10e::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.29 via Frontend Transport; Thu, 2 Apr 2026 18:43:31 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN2PEPF00004FC0.mail.protection.outlook.com (10.167.243.186) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 18:43:30 +0000 Received: from purico-abeahost.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 2 Apr 2026 13:43:27 -0500 From: Shivansh Dhiman To: , , , CC: , , , , , , , , , Subject: [PATCH v2 2/7] KVM: SVM: Disable interception of FRED MSRs for FRED supported guests Date: Thu, 2 Apr 2026 18:42:35 +0000 Message-ID: <20260402184240.1939480-3-shivansh.dhiman@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260402184240.1939480-1-shivansh.dhiman@amd.com> References: <20260402184240.1939480-1-shivansh.dhiman@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FC0:EE_|MN0PR12MB6222:EE_ X-MS-Office365-Filtering-Correlation-Id: fead42bc-ac1e-49ae-31a7-08de90e7bcab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700016|7416014|376014|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: h0e3LhD1kUyGsPZnGLKEGM+RjPQrXlVQ28RaIRr1ZcCDucLM5zrGd3raoStRBKW3K0zGHpS88QWfnlyscfiRSE2BOJRldMkGiJSpDWRmOwdV1vYrKAt3PxncKUdY7duABSqM3wIIAOtWEEU3yLQ8xQWb6wdd5trnQi6G59a2XdAA5JIpt9VlzfNLrzCIHWJcBjhyXcGbD3LS6yR3ZNf/b1zkHkovTAOlDn6vJXEktkqxA0VfdiGeSd93XPEOCxZLmj9uyGoqEn9qBN2AvUdr7boywfDUWTtsbAYua7/QUHthw5XHhBFUU1+3OJ8SGSyobam1qJad9QHNKNS69Qc9eI0Sy4TdejmsnlodI57PMzkiTNKquU0jKjraLHWtPkn2e+VWXt2kAC6jCIE1fwuNtseYT/6J8oW1xs/TEwLvPVNgZrqQ7lWF9vTwaBb0HQXO+OFBQmUP3oMWjDjISx+GDM7veo2X5q35UxI7iHC19ElV45H1IVQfZI032Y9+UghMiJAbf3uFKMWjrY4q94GdKLNBXiHF/XMO+RIqr/28M1YCJMeTwRvoQVWFafT9PPnB6IGEbxL8SlQ+hNnLdEHhZpDXjvioRB/nH1YJ51vxJtYPcGXSuMIHxj73MZClOQtwXsQUDVx2J86UK8CmLbAaHBy1OorC5wQEbcIddNKGsBUOqDHXSBDlbhnP2wLgmy4eOdAaertHOpL4CB0a8ZxqyKynfT1T6x7DDrcdGr4MDjpXsiLxA1VU76eZaozgS4Gaufiq1v6HVi5Xf4ljeXly0g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700016)(7416014)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0iKWFcYBhcirQq9K1BZgtBNpPEn3Sc8NzbxlIhvjEA3lzvZAF0NDS31T9jDCJaamnvL8RsfNlz9xDfdmcOCy8l/S1V0tnzC38guW5682r/k9yzx19VFJ7YRri1dU8E7EbhnQm3aT0kSHEr2BVgN+T19khLvRloJQccnNIQwfa6MeYE3hJJF5aGzrfRl8kCB/33tGhG6xu0P+ncedyFuRXqpVA7D0wenwo9BUs1vFlX83aVm6I9YNSw9UUd+h1StvWIaewtwaB5KCNjuEc9Jjw8e4JcAjYq5lA/SPDPK5K8ulzR3GeIGhWA+9wxDJdbugaDFH3oreptHXi3cTw0AX1qjwLZkBDKVmLjCAjVG1MLCtxC3XFNCwdADVOifZ4GeZBf6Ct69bLteHPIBvLKqPRxphPFrkGUUyRzOrSgU+lW5vbaQ0EWjMKI6x4ecSIZY9 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 18:43:30.9940 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fead42bc-ac1e-49ae-31a7-08de90e7bcab 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FC0.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6222 Content-Type: text/plain; charset="utf-8" The FRED (Flexible Return and Event Delivery) feature introduces a new set of MSRs for managing its state, such as MSR_IA32_FRED_CONFIG and the various stack pointer MSRs. For a guest that has FRED enabled via its CPUID bits, the guest OS expects to be able to directly read and write these MSRs. Intercepting these accesses would cause unnecessary VM-Exits and performance overhead. In addition, the state of the MSRs at any point should always correspond to the context (host or guest) which is running. Otherwise, the event delivery could refer to wrong MSR values. Signed-off-by: Neeraj Upadhyay Co-developed-by: Shivansh Dhiman Signed-off-by: Shivansh Dhiman --- Changes in v2: - Used guest_cpu_cap_has() instead of checking VMCB bit (Sean Christopherso= n). - Variable rename from 'fred_enable' to 'intercept' (Sean Christopherson). --- arch/x86/kvm/svm/svm.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index cf6ba59d6d1e..5e85b2853ad6 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -727,6 +727,21 @@ void svm_vcpu_free_msrpm(void *msrpm) __free_pages(virt_to_page(msrpm), get_order(MSRPM_SIZE)); } =20 +static void svm_recalc_fred_msr_intercepts(struct kvm_vcpu *vcpu) +{ + bool intercept =3D guest_cpu_cap_has(vcpu, X86_FEATURE_FRED); + + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_RSP0, MSR_TYPE_RW, !interce= pt); + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_RSP1, MSR_TYPE_RW, !interce= pt); + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_RSP2, MSR_TYPE_RW, !interce= pt); + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_RSP3, MSR_TYPE_RW, !interce= pt); + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_STKLVLS, MSR_TYPE_RW, !inte= rcept); + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_SSP1, MSR_TYPE_RW, !interce= pt); + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_SSP2, MSR_TYPE_RW, !interce= pt); + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_SSP3, MSR_TYPE_RW, !interce= pt); + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_CONFIG, MSR_TYPE_RW, !inter= cept); +} + static void svm_recalc_msr_intercepts(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm =3D to_svm(vcpu); @@ -795,6 +810,8 @@ static void svm_recalc_msr_intercepts(struct kvm_vcpu *= vcpu) if (sev_es_guest(vcpu->kvm)) sev_es_recalc_msr_intercepts(vcpu); =20 + svm_recalc_fred_msr_intercepts(vcpu); + /* * x2APIC intercepts are modified on-demand and cannot be filtered by * userspace. --=20 2.43.0 From nobody Thu Apr 2 22:24:08 2026 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010039.outbound.protection.outlook.com [52.101.85.39]) (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 3CF093F0A86; Thu, 2 Apr 2026 18:43:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.39 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155440; cv=fail; b=HlLhI33zmjXbdmxH3pp47EULk0DTNMIJ1ULopy3e264GuGqIShrDcI/e7jSf1KODwQ2tuvqS9xATehDxv7gJzf2c4NmlhFZbl9niMfY77CufPUiujdN1QXtD0fD93bYTS+gz7hLfWAnH5hUsJUb3yNrO4TyxEwPlyiaiQBIEk/k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155440; c=relaxed/simple; bh=dl9pewzvvi3SEDxJOWRnmhvonnb+49tXUbN5ow7z1IA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=h9DRZMcIDINzN5xSgYmb6x7Fl1NPukTMi2h1PExoEpbOfterg4JCXgE0skm7YDZPl2FXC6NvB2yQqGzkHh9pK/0JgnUNzW67SWp2le3VJfWnRmvUmkL3QdX6gr17YE2FEwQxM/1nutBZggLfO0Vvfhn2IeY6hhvj7RZgHdjxvzI= 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=khSU9QNi; arc=fail smtp.client-ip=52.101.85.39 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="khSU9QNi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=INp2apaeA6ydXUuOLoRTwk3nPu2U2j56BFR8xWNwJgtNyFj395VsnQSY8h1S0w4/Wj4jO5qjfp/zU3RuKyXbH5xt0n8o7R8EheUzhgEuiBcZ24N6uSIJnnA7imIQjBXSgr6tQ1apAYfgcDq1rgXXY6qkqhEwC3cEJXB82qFRzYncVfh9pjmkb9wxC+0tMRmbPtcX+3svMwhXEvwRZp4lm1bhnVACFBFbzhx+ApDPCggCS2nITijUO7aCBKYGEjwa+/T3chm58cjrRS9AXeMhIuStZJJeLSao8rHjwCnZRrFSxHisE+wokWEO8xgsP6XsB2ExKVHCypi+ccTQek1LjQ== 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=V8fuVve8UsR25zwf/Gj7s8cmj7jyUYug6LV9+blx6zA=; b=jmSB/5Eiv25yHTenNOVFKhgY6esWI49H+bsdrLkwxB7N60VyN61WyJ/XTnYDVbrtl0+yL93PDDZZBFt2NkDdsvAI8VyW4wn8lq2UTgwK9DiMRxFgWbyuxfGOhR7M21zs9+cO9ZfzC7OXGRGV75zLUsdviSi6r+MbENx3ZxR4v9QepPpmbTciwbBFSVWVwJcmVS4tZcLQ423lsvFskthEzatJskbIZkb9LTKG8VXTrucFXtWn5gjKBAStAV66Krwyq7hFps0fTwcZu/Q77AhJX+fh5OCk8CRr6rImlguIr0zzdMA0bC1SNlVdnd8D5suiixJPaT9lgp+QQmevo0jmLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=google.com 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=V8fuVve8UsR25zwf/Gj7s8cmj7jyUYug6LV9+blx6zA=; b=khSU9QNiURPS6V9mSPBYcQLH4FrRzOjOeGhQ2PFVjckKpINRDZ0sOERL6VhEDO88kLpgiKKjJc2TfUrZjJZ7RqNjF+43ksNtpw8Pfn58FnWjL7T4tjuMc5JFa8q3//BLc34VCGRGUVeZ1rjdH9kmzVMmkkZWtheyfmTzIrIkPuk= Received: from BL0PR0102CA0050.prod.exchangelabs.com (2603:10b6:208:25::27) by SA5PPF8ECEC29A9.namprd12.prod.outlook.com (2603:10b6:80f:fc04::8d5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 2 Apr 2026 18:43:52 +0000 Received: from BN2PEPF00004FBD.namprd04.prod.outlook.com (2603:10b6:208:25:cafe::1d) by BL0PR0102CA0050.outlook.office365.com (2603:10b6:208:25::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.18 via Frontend Transport; Thu, 2 Apr 2026 18:43:52 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN2PEPF00004FBD.mail.protection.outlook.com (10.167.243.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 18:43:52 +0000 Received: from purico-abeahost.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 2 Apr 2026 13:43:48 -0500 From: Shivansh Dhiman To: , , , CC: , , , , , , , , , Subject: [PATCH v2 3/7] KVM: SVM: Save restore FRED_RSP0 for FRED supported guests Date: Thu, 2 Apr 2026 18:42:36 +0000 Message-ID: <20260402184240.1939480-4-shivansh.dhiman@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260402184240.1939480-1-shivansh.dhiman@amd.com> References: <20260402184240.1939480-1-shivansh.dhiman@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBD:EE_|SA5PPF8ECEC29A9:EE_ X-MS-Office365-Filtering-Correlation-Id: eb7e00a8-fbb0-4154-3e87-08de90e7c976 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|7416014|82310400026|1800799024|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: UJdHQlYMmZkmhTpmX6ai1NQeIS9sVsftbhcZjFmJu3zPHSFZjt4FYsQiqcxJkSLsdQTo7Yc9CbioVZvZVPP8Y4bzq3i58px5I7OOBX2sd1JVWLDMyKBnRTt9b3Otn9gRy5LQLkDLa518Ra7LLw2/LYEimFoWI4kUr32W8SbdMng7yuq7HcCSYGSSQMAu5F642GcIuQS1K9bDfRQ2ESnd/E0wYmNOly+nHfvv+lt5ZzZgUQDhcebexcoHpgF5do3ilxwechYdY7fkyznsbRh4gtUgZswelF1eqQizQl3WG4HEnfDJw6RZai6vORsWOxJBwv69H+FpzPe8aROXcZqYa2HcdZFZaiWCb21ud/lPRlQrRrmij1mk6tzX7ley0dLesi1xlhUXr9nyjhGVs+VuAQhESaE3tU7DiL+WBe3s/fnNG0/nqwb9L7xgO/0U9XIQ9CYhAwnY6CYPjTwquiHlLXRboLp6MmsMbfZLijmP88FMiI/TddyTJrnBwaV9iN+hzC+H/7D5/TfekAmfd+4Z649l9VY4Rn7HTLgER8o+ccM/4YmHiSw/fnU1aG1LOep8ye8NYQBLobjIZm47a9friGbeHG+/ThK40bQg3n2NuFO1/L76KYLl1wYH0mTeE6/ZyXLIV1+VuMvrjzpoCqiIcWjkFfQiHl/TjevvziKhzbHSHAT0r5BV3aMriE5zsLIqN/Z7C9nhQQGbSyfapofMzDq14bpXiVUpA+4QxgfzWkmeE1/3kj1/fYmk0MGetv3CncxhGZK/ZqSQSN5OFQvyHw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(7416014)(82310400026)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pqpR/Bpdm+b6UOnU82tSSK6uGU9VzyzM1J5615sI8EzruRs3FEMq9E3Ko+VOFtZXOsQh45jL9CykoiZ9zujd3Um+hmD4PmXAD8VTw0Xk7/OITeD9jvtE+p+dFR2krAuVqyDvQuyxIReAe3EH8U0FiWcdUFiG4gbHdTbcpalc68ohC9oVdVr4aD1pUimRQyNrBLiiQ6tmgHg+F+tmem2Lcha7LC+aUGoKsuD/ddt+efz62ksxNAm8+1e4BpblHIiwrd92XTKoZ2hGF2s9Z+wRW8Isn+1dI18ftE3+FwKREW1cOZtb6MMa6WwPNBDiaNKgfp/1c4REzMQT6l7TvPoHcHm7vSW69x+Vok8h4fduxC4kgQbwBzFoosLbMCfrLx2ZklXqDOdil4+DI2Y//qwAyiA2DNFFvHcr8Owsy8afoKaC1EZw7K0sdCgtoOAhAu5V X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 18:43:52.4569 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eb7e00a8-fbb0-4154-3e87-08de90e7c976 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBD.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA5PPF8ECEC29A9 Content-Type: text/plain; charset="utf-8" Hardware does not save/restore FRED_RSP0 for Non-SEV-ES guests. Save it in svm_prepare_host_switch() and restore it in svm_prepare_switch_to_guest() so that the correct physical CPU state is updated. Also, synchronize the current value of MSR_IA32_FRED_RSP0 in hardware to the kernel's local cache. Note that the desired host's RSP0 will be set when the CPU exits to userspace for servicing vCPU tasks. Co-developed-by: Neeraj Upadhyay Signed-off-by: Neeraj Upadhyay Signed-off-by: Shivansh Dhiman --- Changes in v2: - Moved FRED MSRs save/restore logic from svm_vcpu_enter_exit() to=20 svm_prepare_[host_switch/switch_to_guest]() to reduce some MSR accesses. - While switching to host, added a safety check on guest_state_loaded. --- arch/x86/kvm/svm/svm.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 5e85b2853ad6..3f7f8fb0dfac 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -1383,12 +1383,34 @@ static void svm_prepare_switch_to_guest(struct kvm_= vcpu *vcpu) sd->bp_spec_reduce_set =3D true; msr_set_bit(MSR_ZEN4_BP_CFG, MSR_ZEN4_BP_CFG_BP_SPEC_REDUCE_BIT); } + + /* + * Hardware does not save/restore FRED_RSP0 for Non-SEV-ES guests. + */ + if (!sev_es_guest(vcpu->kvm) && guest_cpu_cap_has(vcpu, X86_FEATURE_FRED)) + wrmsrq(MSR_IA32_FRED_RSP0, svm->vmcb->save.fred_rsp0); + svm->guest_state_loaded =3D true; } =20 static void svm_prepare_host_switch(struct kvm_vcpu *vcpu) { - to_svm(vcpu)->guest_state_loaded =3D false; + struct vcpu_svm *svm =3D to_svm(vcpu); + + if (!svm->guest_state_loaded) + return; + + /* + * Hardware does not save/restore FRED_RSP0 for Non-SEV-ES guests. + * Also, sync hardware MSR value to per-CPU cache. This helps in + * restoring Host RSP0 when exiting to userspace in fred_update_rsp0(). + */ + if (!sev_es_guest(vcpu->kvm) && guest_cpu_cap_has(vcpu, X86_FEATURE_FRED)= ) { + rdmsrq(MSR_IA32_FRED_RSP0, svm->vmcb->save.fred_rsp0); + fred_sync_rsp0(svm->vmcb->save.fred_rsp0); + } + + svm->guest_state_loaded =3D false; } =20 static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu) --=20 2.43.0 From nobody Thu Apr 2 22:24:08 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011003.outbound.protection.outlook.com [52.101.52.3]) (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 81F8338423B; Thu, 2 Apr 2026 18:44:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155461; cv=fail; b=bOw/CveSilB1puPTq6pX5CUGy/HujBI3yMvLiDNkDuqapv9NQbg3W8zCBrKya0aIm5aZgJSAwtSP85X+zhjzhtmB1XT2aGC8j11URUTW+2ZMvABB53LmbhkcR89M6X2Prgb4gwP9tM3W2c2IoSdqJp3Vdc0L+YT2UNc/f7rTWC4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155461; c=relaxed/simple; bh=ttlbXiz7Q9+Ofk4/b7x9ODSwZ+kRLnq64iF6+EDJRtI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mom1r0mBgS9og97JrVa638P5RrmuajtLZiOs3ZYXpoOvyCNwgsoaEuwsdSoE/sFbUvjU8Vmi520i0hs2tefnJJkOO0R9mZqJPm/PwD7cDHt799e+S46W/K/h3lov1DttyrnT2lfVxhQPCMj5BpLQ8DGyk2iRjvulr7caQ+D9Tdk= 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=XREWjcXa; arc=fail smtp.client-ip=52.101.52.3 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="XREWjcXa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qsz9YR4GSxnbaTxswqcaIngmVMoPML9Gl9LZlgacpsnDxa9lwurDeQJ6FTwBmr4+yDJqAFrBn+otUgI76odzgwH3SYebFQuXRuBbgv7zJR00tisphFP0pOJ01H1lhGjSjL1+vBXH6arhuG0iuxr385blXh9gOlUs5pRCAr8FXZCzecfWTzqok18G8mk29r/KZxPjTwS57oeVI4KAkBY+ZLfcTtZxTFwFQQeys++vmpF7v45DN24LFbRv+M40L466yGGHVnFOZOFM5J6hDKbr0Da1Cvx2jCojxb/T1QGt7EkkXAqFb8yFJznx9c4CLDFf5E7g2vvZoXocarseSLzvTw== 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=+pHAxWC+0/Smdk24hnBKFK9DeNMCRQLvkrTUASW3dqs=; b=VDZwkdcBDaxDDq7ZpcafNwAQl5j6+g5fhelEBTysQndtkZi/fZeiySn+I5490dHKpvt8KFPpOmy7Liy7+byc2ulL9XiWN9HEsSLdz0KVGZSF7D+z1DolGW5OxJCUaPCq/A4J3PBRCu1SE+0O1ubs/axtvb1Hi9/H1UZro2Zc9A+8voaOv0Ss3oC1C4GZc9gKAlDHp8NWj37hpOKrM7CEJPRZpQJ3Lsy/rzW5881zcrebT3Yl3/IiVpXP+SD4HuhDgoiQ8r2F9Bsr/H31jY3j5VNERaMScwYiRjSyLMkk/HX1VVVcQpv5AljZSIaD/DlXNJ4zLcmsEfDwOlw4lCPJpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=google.com 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=+pHAxWC+0/Smdk24hnBKFK9DeNMCRQLvkrTUASW3dqs=; b=XREWjcXaSCcKivl3aDYFq7B3GKulC17ld50qEyoo61atSbAJObjQZ2hea6Y0zF43Z/etDkS5qHcS0tLQ+vANy8f96uI21jqVImtCFfF9oAlGwmINH/QiM0FYqGQum33bWEUhUJhQE0I7/ckB4I1Gdo6vig9D4aN0h9GEqeSL3ps= Received: from BN0PR04CA0099.namprd04.prod.outlook.com (2603:10b6:408:ec::14) by SN7PR12MB7023.namprd12.prod.outlook.com (2603:10b6:806:260::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 2 Apr 2026 18:44:14 +0000 Received: from BN2PEPF00004FBA.namprd04.prod.outlook.com (2603:10b6:408:ec:cafe::78) by BN0PR04CA0099.outlook.office365.com (2603:10b6:408:ec::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.18 via Frontend Transport; Thu, 2 Apr 2026 18:44:13 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN2PEPF00004FBA.mail.protection.outlook.com (10.167.243.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 18:44:13 +0000 Received: from purico-abeahost.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 2 Apr 2026 13:44:10 -0500 From: Shivansh Dhiman To: , , , CC: , , , , , , , , , Subject: [PATCH v2 4/7] KVM: SVM: Populate FRED event data on event injection Date: Thu, 2 Apr 2026 18:42:37 +0000 Message-ID: <20260402184240.1939480-5-shivansh.dhiman@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260402184240.1939480-1-shivansh.dhiman@amd.com> References: <20260402184240.1939480-1-shivansh.dhiman@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBA:EE_|SN7PR12MB7023:EE_ X-MS-Office365-Filtering-Correlation-Id: f3965e08-7746-419d-91a2-08de90e7d63b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|7416014|82310400026|1800799024|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: z+aHkMkSMtraJvrn9RgP+BIrWaTdsvTbfsON9IukmdxgoJCxGd96qRY7BJ9e87zHUqZ6P059aGRwvxEV4RGIYlRqiBk8w61afEDyLXbDc2zL3jgxJjydhrjb/i5yltpOUicLRwdAyVto3f+oLqLWr6g7Arfw+rdZneh4Av7/omf1Mu+ASj0MOLZ2GTVF9nBHrquOKDhaMMiPZHlwo206t5llAyaLPU2yNodTFMQT9zVs3P1UBt4inlTOBXlaVMbpFWB1Buy7nK4hBHMHrrQqL3G3g3+88wJtTuH0NMt+YZi6Dii9VlF6/RIwyZSYBJeLKRAA2HV4pC0HRTX4NzWTgdyoe2TwMzbtvggJvl1DY09B/5FBI6HauXaiROp4m91LGkwvJsXoFi6fzZ8rX1msOZAXOSW5Modzvb+ijvY10xHGpIsVt2glqMtpdCNL1LpjUe0gzwv13L1itbU7s/U4+n//VUJcTAN/QG7MsYdrhtu/fnetxs15t7DYxDMmhoe1j8dQWkgFAlBQh1SbVioPvtiWA1maxTG9GT592Es9cZKsH2NuCVaw2ooyVRJSuAs7V0wGxLEP/dZ2Kqa5MmeMJSUnTA6LAf0X7LLudX7fe0fB9gYcuq+cU2NhIt95+p3Cl1jN3T1U4DZohhPT0EULzIMoiy0qBpNI+H7H3tLOjdSnLqRhizrco51hH8J6UjyWfVL0qD/Tk9RdOi/rqqwKxlMgBlmv/BHzOd5IV9E1xoS19Eq3KNa6VeszdKJmSX1e+hkvEyfwW0Rb4lLxnwXhWA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(7416014)(82310400026)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JkTr/E61nTNSZ4ObDvgaEBJxYfecaXicQWxO+AsfhT85DT7lF2yOopyWs2t1n8M3/JrC8si8zZ2kNSR/jgeHGqjoCT2NGu9mPaP+3T0iJO9tfCldeb4kmgKmEDWup/pt5dRwMNIwtuQdMpjvmzY6UR2d3Lbt/Ld35sIli6PJH5Gjtqlk1yUGVAzI+5CRuA/54o7r+WL2hMbn/WzLfnveBzYeRZhf8tziLC60/BJFxawnEONPHMw410FHz1eDOO7i9SdFP88gTtTUFmR3KIgLt1exQT/BjC6yVc6ITr5dLuV3dC3UIcswH3y16xntRpkyvG3zVzWVRp+E7sMXE2IsFY2f0kLRpELorekyAOf2txBHuV47x8GrsWgkU5qHzBNZ1+cELr14gAJ1Tssznip8ij/MXmj2bl+gzQGHImkgZf5sQYT0wafwpGVeLVAtAp1s X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 18:44:13.8823 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f3965e08-7746-419d-91a2-08de90e7d63b 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBA.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7023 Content-Type: text/plain; charset="utf-8" From: Neeraj Upadhyay Set injected-event data (in EVENTINJDATA) when injecting an event, use EXITINTDATA for populating the injected-event data during reinjection. Unlike IDT using some extra CPU register as part of an event context, e.g., %cr2 for #PF, FRED saves a complete event context in its stack frame, e.g., FRED saves the faulting linear address of a #PF into the event data field defined in its stack frame. Populate the EVENTINJDATA during event injection. The event data will be pushed into a FRED stack frame for VM entries that inject an event using FRED event delivery. Signed-off-by: Neeraj Upadhyay Co-developed-by: Shivansh Dhiman Signed-off-by: Shivansh Dhiman --- Changes in v2: - Removed the need for a new function parameter 'reinject_on_vmexit' in=20 svm_complete_interrupts() (Paolo Bonzini). --- arch/x86/kvm/svm/svm.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 3f7f8fb0dfac..2da493f9dd8b 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -374,6 +374,10 @@ static void svm_inject_exception(struct kvm_vcpu *vcpu) | SVM_EVTINJ_VALID | (ex->has_error_code ? SVM_EVTINJ_VALID_ERR : 0) | SVM_EVTINJ_TYPE_EXEPT; + + if (is_fred_enabled(vcpu)) + svm->vmcb->control.event_inj_data =3D ex->event_data; + svm->vmcb->control.event_inj_err =3D ex->error_code; } =20 @@ -4134,6 +4138,7 @@ static void svm_complete_interrupts(struct kvm_vcpu *= vcpu) break; case SVM_EXITINTINFO_TYPE_EXEPT: { u32 error_code =3D 0; + u64 event_data =3D 0; =20 /* * Never re-inject a #VC exception. @@ -4144,9 +4149,16 @@ static void svm_complete_interrupts(struct kvm_vcpu = *vcpu) if (exitintinfo & SVM_EXITINTINFO_VALID_ERR) error_code =3D svm->vmcb->control.exit_int_info_err; =20 + /* + * FRED requires an additional field to pass injected-event + * data to the guest. + */ + if (is_fred_enabled(vcpu) && (vector =3D=3D PF_VECTOR || vector =3D=3D D= B_VECTOR)) + event_data =3D svm->vmcb->control.exit_int_data; + kvm_requeue_exception(vcpu, vector, exitintinfo & SVM_EXITINTINFO_VALID_ERR, - error_code, false, 0); + error_code, false, event_data); break; } case SVM_EXITINTINFO_TYPE_INTR: @@ -4168,6 +4180,7 @@ static void svm_cancel_injection(struct kvm_vcpu *vcp= u) =20 control->exit_int_info =3D control->event_inj; control->exit_int_info_err =3D control->event_inj_err; + control->exit_int_data =3D control->event_inj_data; control->event_inj =3D 0; svm_complete_interrupts(vcpu); } --=20 2.43.0 From nobody Thu Apr 2 22:24:08 2026 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010032.outbound.protection.outlook.com [52.101.61.32]) (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 3780327E05F; Thu, 2 Apr 2026 18:44:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155481; cv=fail; b=G9h+QDx/YH1CWdnWu+vrG/q4E3sH0WXT8tRJcQGT8Tc8+I/HNt8qGktQhYsF1eMKKmqPGkiygxg2WMmpb3S5dUetI7SFeZcTcWf0v6y/ydjV4vK+0DXgnFDMRs3i9ondtu3ffc8SZl6qyhB9UQ1ZEo1Ohmp87xK7/2dWlKvDwJw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155481; c=relaxed/simple; bh=7YocVnoypeU+Wcr1Srj/BogJAXbzGJvx5ZYGmIcuu5Y=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=HZY9n3bIV1G3jHXggif+MtRMvc5j6gy7GgDW/36gSBi6p1CtsaJcgwlEywR8kkwLjLzpJUEpBDk3H5dVXoitPro1+aKcunAJtVAc83BGoE12w3tQhvpV4jrmv3505iUEiittN1xXAcU/CipSQojeXGx39ef4rhC0C7EmGTu9HrQ= 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=z6KkQJL0; arc=fail smtp.client-ip=52.101.61.32 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="z6KkQJL0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wBGsDHQf57ghpcMBOdUUWn6RedNsDLBY2N6mOoo9u2tSYVvZspN2NGa+fFOMtTNMLsyjAJUav6hFK/BbXas3MSn2/tNuz+Y2zY9i08yMfgvJ8i23quKMVg1pEQWcNHKrluMh6IvduYR+zknVfIiEKADjOAz7OCmrzOkdsTTZA7Jk6VSrXYHE4m1pPBbwNQ+o/zd3QmcMI//29fdYZ47KtwVnEHjuVxfSa1WCmcShKMenZEIJYyEom0p0Azd8Fl2YdPWWzQJD1ndx6LMyKVSUZZ066DdB/ypj41V9Sss8XyenqbWNQluIMC8mm/uA74K4bxKDVw0VhvW861gm3UXw2g== 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=UOtIeEr4lY22weknO02MJjYqICGa/Yd6cMWtQmCP45w=; b=BNJMV+1USOkhgL3R1gnMWEZf0dGxVZTAqYE1i/5x/9/DbnpIWC3RNqFvGlp+OiD+KxOM5GkVSyrBPgBEhV+gEP6q1cHcL5Ld3f7UJoW/kwrKRLnusX7h4FiILO8ZFCwNgl7WUuaj75xkyCxd+Rl7mQ4g1NgrGJvU0u5ZEkh8gJfNjEzXNEmeDCFl7PK3jocAfP+/VFQw1I4wb0KylMjR1VrgzBLBntcJj1vmcjTHGOVSwaGsIQ/NNa77ccPIAmNQTMIYqPNNCp1tYJZ1WYzb9IIev2mF7hAX/VffnJmEwILb7k5+8CP23DZvzEUKWqX+940mce0+YgK0sDq/HQ//vQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=google.com 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=UOtIeEr4lY22weknO02MJjYqICGa/Yd6cMWtQmCP45w=; b=z6KkQJL0zdsTPC/sFs1r5Uv/LkrESuzazxItS/WbkN/On6NbCFI6u3TvLfLTEKrEdD/WR0jmzvClIxos6IenmPrfNail8mqsT7zwQ6qaDB+gc5zJAV3AmNCPm4XLEV4uZpSJalwwVo/WZ0X+Al6vD6zCcgBwohvA9OMWPPqoUd4= Received: from BN0PR04CA0111.namprd04.prod.outlook.com (2603:10b6:408:ec::26) by SJ2PR12MB9212.namprd12.prod.outlook.com (2603:10b6:a03:563::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 2 Apr 2026 18:44:30 +0000 Received: from BN2PEPF00004FBA.namprd04.prod.outlook.com (2603:10b6:408:ec:cafe::c8) by BN0PR04CA0111.outlook.office365.com (2603:10b6:408:ec::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.18 via Frontend Transport; Thu, 2 Apr 2026 18:44:30 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN2PEPF00004FBA.mail.protection.outlook.com (10.167.243.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 18:44:30 +0000 Received: from purico-abeahost.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 2 Apr 2026 13:44:26 -0500 From: Shivansh Dhiman To: , , , CC: , , , , , , , , , Subject: [PATCH v2 5/7] KVM: SVM: Support FRED nested exception injection Date: Thu, 2 Apr 2026 18:42:38 +0000 Message-ID: <20260402184240.1939480-6-shivansh.dhiman@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260402184240.1939480-1-shivansh.dhiman@amd.com> References: <20260402184240.1939480-1-shivansh.dhiman@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBA:EE_|SJ2PR12MB9212:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ef5a07c-472a-4148-5a61-08de90e7dff8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|7416014|376014|36860700016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: xjbANF7fnvu9erkcqzLa9rQ13/zRE2rHM3re3+urPgw4L0dj2AhKauw2WjSH67shit2Pn1kDdt8rOvh/I0TGXovHIRErCwzdzML+RuBVaXAUFX9j+VGOZdO0+XlkQ8mY+GdgGa01MWfgmSrnrMigOhTqHOFDVrjTc11XsSw5+gDklJGR1tB1ZGGYT5G4lNboHkSaY/xGYn4ol0WqcwC+bwGlVhkX7KJf2VUMYJrsZ9cHPw0MuoTOCO7zfT6n9e+TL//nTRt4039QQuXpBJyUwrfMDpkS2Iyt/gsZa85k/DcPSg49nsK6A41KaqHovFlVf4Ii2N+fp+LiiiD8KdRJnnTQhUjsEv09gnGftcmoRgO/iyDvbHuTdpeDt1YgyVrxoZlbwqW9+mM01hQ50qq64FAYIZAvd/P0v2bYKBzJb0tpFOiZAlqMfr+CbVnkUXTHTa/xZXLbHHMUVe/2T9n0ljDX5UMbuzhNT09lEqAZRnSFpKRqDHPf3JubA9tut3HSQpFSaxll7O8sPnoN32Ol1j2qphLqI+eZs52PcSxxQV3og+5oL15Id/65FPwVVjvJhHaicc6F7VAbOm17pMfKG+zAluzXatBnuAGjBns5I/ZwWSXK11WFFpozZrFpZSUdrKFHy5LArFv+SDn0X3IopIl6Ir4nZjbq4sIrB8Iq9tJYeZgJIRMh59n0Cv02Uf/UkzMBa2/762hRIjRkgx+4vK9QOUdT5V/djELjPwMV58Juny613NdO4ejeA6x1vw+nForEQHNPycg62EoIU5TE2A== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(7416014)(376014)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rqdjO80Q+yvLCmeL6W95NRpcEDGXTpIC7Agj/o91WnaHYSFjQ+l1NyYQ8hcOpKUKLGCNY7JVBVnnFNdmDCwuJ1tE19E7DW7s5aRJJqbm5OLrj6nGM60DVqS8YFHoOSvrfG4zE2iEVofAzKgp/uTRrRu7B90FsZU6FRfi1wIDgT0IK5ULBvYLGiYeb/L4qe0rlM0HIXch3YMaxh0ZCaW5fo1wcBUauirsGC2EPhDFJ4nTYSIBN2FbMDPb7Detv663MuLR9BybHFZF+os1p9sOil9NGcoh9/O/l0a3gWTdwN6BMrN7OoW3iIpamiouc5eyGfs4rLIKTY1K0jImCv4qW9PQWgo+iYwZCj9iQFwMfnmIZ6EItWC1dvNVhk0nVJ9EL+vSCtQpu4YJhAjT3GdBfPH9lK+BrsUw3z9HfmSwxQjEwXdWxBFR++n7JsjjAS1L X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 18:44:30.2223 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ef5a07c-472a-4148-5a61-08de90e7dff8 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBA.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9212 Content-Type: text/plain; charset="utf-8" From: Neeraj Upadhyay Set the SVM nested exception bit in EVENT_INJECTION_CTL when injecting a nested exception using FRED event delivery to ensure: 1) A nested exception is injected on a correct stack level. 2) The nested bit defined in FRED stack frame is set. The event stack level used by FRED event delivery depends on whether the event was a nested exception encountered during delivery of an earlier event, because a nested exception is "regarded" as happening on ring 0. E.g., when #PF is configured to use stack level 1 in IA32_FRED_STKLVLS MSR: - nested #PF will be delivered on the stack pointed by FRED_RSP1 MSR when encountered in ring 3 and ring 0. - normal #PF will be delivered on the stack pointed by FRED_RSP0 MSR when encountered in ring 3. The SVM nested-exception support ensures a correct event stack level is chosen when a VM entry injects a nested exception. Signed-off-by: Neeraj Upadhyay Co-developed-by: Shivansh Dhiman Signed-off-by: Shivansh Dhiman Reviewed-by: Nikunj A Dadhania --- Changes in v2: - Replace variable 'nested' with 'is_nested' (Sean Christopherson). - Formatted variables in reverse fir-tree order (Sean Christopherson). --- arch/x86/include/asm/svm.h | 1 + arch/x86/kvm/svm/svm.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index a42ed39aa8fb..c0f6523e2b2d 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -656,6 +656,7 @@ static inline void __unused_size_checks(void) =20 #define SVM_EVTINJ_VALID (1 << 31) #define SVM_EVTINJ_VALID_ERR (1 << 11) +#define SVM_EVTINJ_NESTED_EXCEPTION (1 << 13) =20 #define SVM_EXITINTINFO_VEC_MASK SVM_EVTINJ_VEC_MASK #define SVM_EXITINTINFO_TYPE_MASK SVM_EVTINJ_TYPE_MASK diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 2da493f9dd8b..39d1177a24f0 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -362,6 +362,7 @@ static int svm_update_soft_interrupt_rip(struct kvm_vcp= u *vcpu) static void svm_inject_exception(struct kvm_vcpu *vcpu) { struct kvm_queued_exception *ex =3D &vcpu->arch.exception; + bool is_nested =3D is_fred_enabled(vcpu) && ex->nested; struct vcpu_svm *svm =3D to_svm(vcpu); =20 kvm_deliver_exception_payload(vcpu, ex); @@ -373,6 +374,7 @@ static void svm_inject_exception(struct kvm_vcpu *vcpu) svm->vmcb->control.event_inj =3D ex->vector | SVM_EVTINJ_VALID | (ex->has_error_code ? SVM_EVTINJ_VALID_ERR : 0) + | (is_nested ? SVM_EVTINJ_NESTED_EXCEPTION : 0) | SVM_EVTINJ_TYPE_EXEPT; =20 if (is_fred_enabled(vcpu)) @@ -4158,7 +4160,8 @@ static void svm_complete_interrupts(struct kvm_vcpu *= vcpu) =20 kvm_requeue_exception(vcpu, vector, exitintinfo & SVM_EXITINTINFO_VALID_ERR, - error_code, false, event_data); + error_code, exitintinfo & SVM_EVTINJ_NESTED_EXCEPTION, + event_data); break; } case SVM_EXITINTINFO_TYPE_INTR: --=20 2.43.0 From nobody Thu Apr 2 22:24:08 2026 Received: from CH4PR04CU002.outbound.protection.outlook.com (mail-northcentralusazon11013026.outbound.protection.outlook.com [40.107.201.26]) (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 52F2D3090D5; Thu, 2 Apr 2026 18:44:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.201.26 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155496; cv=fail; b=dTgXUvzl8PFZMhbTLOwuRK/Pt+eGTgQyfBGGhTXmCe5ELTHjcjiSdup3LK8uKqRVZMEOcOV1hx6TeWXsVX3UsIfwvsq+p233mbhUPSl/Z77Zz+zboBs1kY8QG2sunHvECZmnvt70SZ/UkVNtahDLPK6p6OYEuAr0AY/zL6IcWzE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155496; c=relaxed/simple; bh=pNN1e0Sx2Zar64oW/bmNsKVv1AEiDBqFIyLiAsTxjVM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=M4JGOVjsjYQzOgUTVcmznlnA+YazJNSBxe+/FOyXu92gB2CrYtb8yH/9T+G+uSQwyHknSboM968/gg+9Y3t14iIZvsfNfeEMnwHuH7vAorApQYC+vGbBbo4go0ySr6awC2N2rlDiaLdIl4soirNoXg3jyRP/B3c//dFzty5ClSA= 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=YNi/jDoi; arc=fail smtp.client-ip=40.107.201.26 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="YNi/jDoi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=he/+mAKbzNGtukX8fIpU5ApsHuDU/SVNIpCspqaT38PUu2FNQf/TaecHIO/n9OVXqNuUDK4ybkgo1ryXZ5s4MZC9BJMSkaOz+CoTyXhzXTSskZeeHVwe1EWvNK1UCzQr3ZcIEfF8ILWbm53eRZBIh/sVWdrwmTthLyT9awtNSCcSp5n8s+6QBKYp2ssDR8VCLMCy8gmhp2a6t6Z8i63l1VGEb6rHZ36dh/L8MqmNRnUrrz3E4Q9H5DgqI1HQdFbgjksORXrimxSSE7Hc67u7C4Mb0ATG0ZE7eFeQ+VRCi/7LU9ap762cP9tr4LImDCxeuW2BF4yOBMDDBDkHWKIRkw== 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=JGAB1FvkNDqsN+ePPcYqmnld2LbbrRnB8XkCZyIUjJQ=; b=PWot06zEU82e/jj3P4r6G2bpEf1x8i5iekMhqTIhue32DksuDCkdgg7Wk8Ni541Zer4lJzQlSqw6Lc8DWO8JuA6ISFfayAETc27u8Pc2uGwTyhtJYb4fKWhw2ms2ARZHCyucUJrNSFHX9q9YEUt2HXdkb505SZADoE4MstUtOA+5raIaPs4U/qoMq7hCFnc8L0hmntkXJrxm7acZOs2gesiF37FrUBDArkRad9u2EN5xjxKvGLyOy7Np36bgvr1tHX9EGhdg/4JTXJZ7YZONhGLrSEZdSNhfHpwy9VkWwKiY3zKLchr1T96QmbsamOxiTdlFcuWIaJJWdIqPLU84rg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=google.com 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=JGAB1FvkNDqsN+ePPcYqmnld2LbbrRnB8XkCZyIUjJQ=; b=YNi/jDoiDXhbCJsHuHFafIFVWsQuh3VEKo4tqHsv+84Dond7C5h1JY49ywwz42OOPt4fmhrIRgWyjADEBRBZS5rVaJZwh55T1ZKivu1Bo+p7sgNgJ+2H3Hjw94IlFiA9BvG9tHQO5Ea7ERaURtOtOQbZnU+PGiwvT6PP6k2xNUA= Received: from BN0PR04CA0095.namprd04.prod.outlook.com (2603:10b6:408:ec::10) by DS0PR12MB6390.namprd12.prod.outlook.com (2603:10b6:8:ce::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 2 Apr 2026 18:44:47 +0000 Received: from BN2PEPF00004FBA.namprd04.prod.outlook.com (2603:10b6:408:ec:cafe::17) by BN0PR04CA0095.outlook.office365.com (2603:10b6:408:ec::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.20 via Frontend Transport; Thu, 2 Apr 2026 18:44:47 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN2PEPF00004FBA.mail.protection.outlook.com (10.167.243.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 18:44:47 +0000 Received: from purico-abeahost.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 2 Apr 2026 13:44:42 -0500 From: Shivansh Dhiman To: , , , CC: , , , , , , , , , Subject: [PATCH v2 6/7] KVM: SVM: Dump FRED context in dump_vmcb() Date: Thu, 2 Apr 2026 18:42:39 +0000 Message-ID: <20260402184240.1939480-7-shivansh.dhiman@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260402184240.1939480-1-shivansh.dhiman@amd.com> References: <20260402184240.1939480-1-shivansh.dhiman@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBA:EE_|DS0PR12MB6390:EE_ X-MS-Office365-Filtering-Correlation-Id: 943c973c-69df-46bc-02a6-08de90e7e9fe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|1800799024|376014|7416014|82310400026|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 2ZGzD7iLGrIxxc8TCpnTS7QJasjQCI2Efc/xzT5RipxmxcppGrF0OkbfWNoUguYfXTNCQKTQsSi9VJY5Ut47v4tCdbP0pXVfOAtEiGTgkNiQjZm636KT4dpMHlLfEIU/f5SAVbHqDSExtuHyw3Pe6RLtLVPhZyNtT7lO2dvFKC83WXNmkd02+CZwq6PJzxooAiJU+fPlc334SeSvF1ocZXyL1KlxOFpAatTsmLbUSqBHfouviAikBY3qD91/Kjozzg1RnNmD9k0SflfPXKs8Cy1B08jJps0+PnY8+kapqSROpUyx6GxpJjjZlY0WI7OIcUQWvEJ4G8I2pCb7ZcfQSs+hsLs0kZjYP8X/jwuLfoM7RyPsv7qR5qstmQcyRmY1vSp5QnKTY86Wo2BdBoPDjBBtvwumfArPWscE3SbliQKHTP+c1K7oRRIltyVNC+6RfIc+h34cQXyESfvpgaHDFrdPS2Uw0HPf33+4TgGQWePn1TvYx3Nd/BWPeMrS1d04LMAlD46IOe29dIiJd4DP14Vp4cwQErWmtDkqG1RLhvhttYZp162N5H6RiH4VgohU/Y6ZqMxFfKCb5H+/pqzCQTIECkHsF0ctCftX5PeBYeYgHeJpOiyH/fHYaJr1nina8lPeqhkPmVIfUSc9tdf3mSLoTQCGNqUNPQbBvNRJ7AdZxEuSW82+6H3Qawr2tocQJTjHadfx/7g6irikS2X7oLS9Zd/xUdTlIyqFYMjSgCSYGTZGaJyUJ/jya3ADQpd4fXte4zXDEmE+xXJLkp5q/g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(7416014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: h0q8boJTyvU6OwNQYjwEmqhXVqCoe2UToUB01HuizsIBHHrPyp4CIVYo3wWBcYjF4HSNSrc7eoSZYn0OvGsQQdagi2WZQy87RT6QgNNl7A97nkACQ7VyqOoXx8SiotRCn7U11dXEraagkXkrjG5ldvqdiE/rtOK4EFc1GSYcPGifsIzIv4SXa+OSy5HLBJEwtBpc5+KDWcUJJRpp3uWLTUHcaj2mTjadkRH/6FghQbpEZ1s9oo8lUo8uqDTbPhGuU9GxJ5OmruGsAltnBWI1CwU35dZAQs6z0YNvMLNht8RnxNaDWFY65imAhS3uUZ6jRWr1/M95OKNxdd5+JLAjAHnnRNG9UWYJJuE2ezjYDHJ0EJBZdfY+QmIHS4jD9CSYz7MBB9NUme069wVRuNP9UXkVv+OpuPYbbIgVxO0NLuEjfb4PQKhIjS5UevuLX9Q0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 18:44:47.0332 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 943c973c-69df-46bc-02a6-08de90e7e9fe 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBA.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6390 Content-Type: text/plain; charset="utf-8" Add fields related to FRED to dump_vmcb() to dump FRED context. Signed-off-by: Shivansh Dhiman --- Changes in v2: - Gate all the FRED MSRs through guest_cpu_cap_has() (Sean Christopherson). --- arch/x86/kvm/svm/svm.c | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 39d1177a24f0..7d411df3dd78 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -3343,6 +3343,11 @@ static void dump_vmcb(struct kvm_vcpu *vcpu) pr_err("%-20s%016llx\n", "allowed_sev_features:", control->allowed_sev_fe= atures); pr_err("%-20s%016llx\n", "guest_sev_features:", control->guest_sev_featur= es); =20 + if (guest_cpu_cap_has(vcpu, X86_FEATURE_FRED)) { + pr_err("%-20s%016llx\n", "exit_int_data:", control->exit_int_data); + pr_err("%-20s%016llx\n", "event_inj_data:", control->event_inj_data); + } + if (sev_es_guest(vcpu->kvm)) { save =3D sev_decrypt_vmsa(vcpu); if (!save) @@ -3457,6 +3462,27 @@ static void dump_vmcb(struct kvm_vcpu *vcpu) "r14:", vmsa->r14, "r15:", vmsa->r15); pr_err("%-15s %016llx %-13s %016llx\n", "xcr0:", vmsa->xcr0, "xss:", vmsa->xss); + + if (guest_cpu_cap_has(vcpu, X86_FEATURE_FRED)) { + pr_err("%-27s %d %-18s%016llx\n", + "is_fred_enabled:", is_fred_enabled(vcpu), + "guest_evntinjdata:", vmsa->guest_event_inj_data); + pr_err("%-12s %016llx %-18s%016llx\n", + "fred_config:", vmsa->fred_config, + "guest_exitintdata:", vmsa->guest_exit_int_data); + pr_err("%-15s %016llx %-13s %016llx\n", + "fred_rsp0:", vmsa->fred_rsp0, + "fred_rsp1:", vmsa->fred_rsp1); + pr_err("%-15s %016llx %-13s %016llx\n", + "fred_rsp2:", vmsa->fred_rsp2, + "fred_rsp3:", vmsa->fred_rsp3); + pr_err("%-15s %016llx %-13s %016llx\n", + "fred_stklvls:", vmsa->fred_stklvls, + "fred_ssp1:", vmsa->fred_ssp1); + pr_err("%-15s %016llx %-13s %016llx\n", + "fred_ssp2:", vmsa->fred_ssp2, + "fred_ssp3:", vmsa->fred_ssp3); + } } else { pr_err("%-15s %016llx %-13s %016lx\n", "rax:", save->rax, "rbx:", @@ -3484,6 +3510,26 @@ static void dump_vmcb(struct kvm_vcpu *vcpu) "r14:", vcpu->arch.regs[VCPU_REGS_R14], "r15:", vcpu->arch.regs[VCPU_REGS_R15]); #endif + if (guest_cpu_cap_has(vcpu, X86_FEATURE_FRED)) { + pr_err("%-26s %d %-18s%016llx\n", + "is_fred_enabled:", is_fred_enabled(vcpu), + "guest_evntinjdata:", save->guest_event_inj_data); + pr_err("%-12s%016llx %-18s%016llx\n", + "fred_config:", save->fred_config, + "guest_exitintdata:", save->guest_exit_int_data); + pr_err("%-15s %016llx %-13s %016llx\n", + "fred_rsp0:", save->fred_rsp0, + "fred_rsp1:", save->fred_rsp1); + pr_err("%-15s %016llx %-13s %016llx\n", + "fred_rsp2:", save->fred_rsp2, + "fred_rsp3:", save->fred_rsp3); + pr_err("%-15s %016llx %-13s %016llx\n", + "fred_stklvls:", save->fred_stklvls, + "fred_ssp1:", save->fred_ssp1); + pr_err("%-15s %016llx %-13s %016llx\n", + "fred_ssp2:", save->fred_ssp2, + "fred_ssp3:", save->fred_ssp3); + } } =20 no_vmsa: --=20 2.43.0 From nobody Thu Apr 2 22:24:08 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012014.outbound.protection.outlook.com [52.101.53.14]) (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 A9465283CB1; Thu, 2 Apr 2026 18:45:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.14 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155510; cv=fail; b=giB+YK1D72j4oWWV7kp7iVsuiH3OzxewAedz4/9GL6GgSc7SZSDnSaXLX9wiPbYWMgemwiA8m+kZqcpaxH/l+aoFUco8yNSlr2zzeOoUrkAoSWTorDEIB7zVCOotYBltrVLc7PALczISQB9qsD1k4IZ4Q/RR5cMRFEuQ5FVcZoI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775155510; c=relaxed/simple; bh=xg4+NIWE9p7jc84SYtJY3vFdH39kccmNrLVXJaWTXJM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=jPVd3rB5430gamXJEL13wzmi6GgdzSHJfmXsL87/KR9lz8H2tmbwBK4IL0+S3tJvZXOEqtKpZSnxxx6GaxJRCs6AmxkvrKeGiYM14HiTqQ3kaPvgWFrIiUxkCLDI1pOMJ8blT/MiioXD+hXwHm/L8k9h3Jj2braAhQ+ArOH0C4g= 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=X4qE9/yj; arc=fail smtp.client-ip=52.101.53.14 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="X4qE9/yj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Mvmm3PNdgbXcb73QGbYdxYauQeNTlhI5t+bRnrQfCRouLZ23ex4URoe9TJkoUaVuTxjpshcLYfQ5aEjpXHpsz39Cje+yf87lLa8B6U5LL0fOMJC/oy1bd3gUOpSoKW0a+Ql0GzoYcd6sG8FoSJc3KX7CVgNt9fXJKapCsb63bANDn69LGw67g0bZuLGNq5y6/6C5IHmNRHhIg9pPT5QYPKbP06inVeHBO4soL8HH/xbLLNQVSkM1i9PkbYmesp75AU9lInciFMBa+UlR0a/F07WTtlGujwxRLpd1Kwz6yT3lICw/PzTnElFJwaaR0XKuGddt7KNn177/83Y9U2brrA== 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=thVQ29lz++egn7IjwArk6Vo+Eh2Z/cwBuUW+A/5RA3A=; b=f7qHKWfrAOa+SufYsJUfT0/UjWkQI0P5LcKwFsd2h3feopixIQlk+UNmQBbQV0UVYGOpyxSYbrax9aWuLxN4xBBbFZUZhAVbnKHHHguVz1jeklch23Qd0kFxNcwLgPsUkE9MOo0obRWA8To13R6v7UO5pTTWp2jj9Da9crHdhYyA2qSvqU5cjY0oAcqhc9J89Lz8o7N+YrCJ+Bia9fHPyr0YC7m/K9kuEnvFmqChvfQcuDcgfbWRfZTrlL7WsbgRmDIcNdFGF+x+SwI/0lX6PJjS6YsRJlQZfDhwgJfxiMvm8gSf++3qphPMxea/tYcUuyUUnkiQoBbP8C48AD/SJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=google.com 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=thVQ29lz++egn7IjwArk6Vo+Eh2Z/cwBuUW+A/5RA3A=; b=X4qE9/yjhqQUBVNpKUfcU61+WVcPcRQ1zwPQ4sgnDwCitdbRz6361teOjLmG+4mmOKWxGF5hh82daR++oq4DTl8jtMI/GYQMql1OuA086TzXn8QOkroNv3xgd42HsRoeYUAT1A9OkET1er1Q6a1viL55BiY42jTFDhYN5CzHUGM= Received: from BL1PR13CA0230.namprd13.prod.outlook.com (2603:10b6:208:2bf::25) by LV5PR12MB9826.namprd12.prod.outlook.com (2603:10b6:408:2fe::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.21; Thu, 2 Apr 2026 18:45:03 +0000 Received: from BN2PEPF00004FBD.namprd04.prod.outlook.com (2603:10b6:208:2bf:cafe::61) by BL1PR13CA0230.outlook.office365.com (2603:10b6:208:2bf::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.18 via Frontend Transport; Thu, 2 Apr 2026 18:45: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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN2PEPF00004FBD.mail.protection.outlook.com (10.167.243.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 18:45:03 +0000 Received: from purico-abeahost.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 2 Apr 2026 13:44:59 -0500 From: Shivansh Dhiman To: , , , CC: , , , , , , , , , Subject: [PATCH v2 7/7] KVM: SVM: Enable FRED virtualization Date: Thu, 2 Apr 2026 18:42:40 +0000 Message-ID: <20260402184240.1939480-8-shivansh.dhiman@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260402184240.1939480-1-shivansh.dhiman@amd.com> References: <20260402184240.1939480-1-shivansh.dhiman@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBD:EE_|LV5PR12MB9826:EE_ X-MS-Office365-Filtering-Correlation-Id: cf013d3a-7256-4acf-4d56-08de90e7f3c5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|82310400026|36860700016|1800799024|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: ls9G1zmnj5WJYlgH617ZkGXNFmR0i2lHz7InhKbE6ACimpXZB05G5suuDdvjykzvHFLh2mPc17zS/FstLL21ofaW9Q7ZZTFbstdyJpJKTcokIloEE0Qf2fh5DacOdEHj21F0IWP30vke91GDN66VwIcEKF0Wmn1x8hikqvC4PXU6yWa5ly0ZKMZRekRECLK1/SwZO46NM4q1wKm05UNvT5Pd/OqBTxvrQH3ssMOl60UKPMt6tkpW1oKCIAN0uc5HfjHDaGp0nw96riF6GU2zHHaqodvA6lto8uUWLPUC3o6HPmhJwKgP/q3EBWdWbdGQ3nkY9QHFVVFj2ZqswzSYE01HOE14AD5v8zeZeW++pDOJB0HNeSLyrIy5jzw0YG2kONaTwk4O/OCLT0yFz/I9BfAymVFa2+vu/O6HHD5ee0slEwsY3UcA2FG7b7EZHZygW8s3rorZdSUXQVy8hnqB7GEvfAo2RGGmhyvxoRzyBJRnAxUSsxkEep1rc4USaQ5XVoXJ2aWWR1XVJWWtTPRI6wb8dRRCnaXrpYqgtAxOaxCCiVjEQ8YODDKIr1xZmkdnyBLGwPdISKGCpZkgdUBX2vwXqqK45SFJvjpcgRqdr/MsWPyHLYNCasuw+yTO9OXTTfSZj31E+ns6L8fhgy6ga+Urwo/N7Yfkq9dqBQ+ZVJQ3xe+jam+t2pTFRif7g/KFZ8qsvdviNh5ozEFe0IUCE6QLymgLYP3Fr527MUNrhLU1TRUfwMvjeybERntEspEjNHBR4Wj026tkxg9OOCqYKQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(82310400026)(36860700016)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hIP0wA0Pw9uEWBcTj620stLU1ZarXzYE1SYFJwsuWi3G62urxExhYGpKGEcoJH2eiBR74+JMceCxftQJdTYK9omCNG73lEyo+vK0H49jGTe6yhzBwQlc0tfW1F7/P+qnA6FF5aW1rYDgr2xvNNDuU06vgzEehyNF8szI0ltW+4SYHwIf2GULmeH42cE6frCU0OAWwvMb2xe401H2NgjN2JH42iUaOew/l0mX55h1RHtuJnOyq22hQO6LjHGBe6TLtkn0ajlGHhVN6w1SvnheY9Z77OblEauuiKG1guqedFuu5o/vk4j/Pd4iaxIcBPD3DP/1mCN/f5VWHzXX3NctOpRtfy3+isd8l0ZM8tpqBKagwBlo+bJ508E1+62wuQLfJ3Tm0ZI3q7V5fU9SN/eCjvREWVFjANxyzPPOF5ZKsSgpiksZfc2VmwY6CD85WJ3w X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 18:45:03.4424 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cf013d3a-7256-4acf-4d56-08de90e7f3c5 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBD.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR12MB9826 Content-Type: text/plain; charset="utf-8" Set the FRED_VIRT_ENABLE bit (bit 4) in the VIRT_EXT field of VMCB to enable FRED Virtualization for the guest. This enables automatic save/restore of FRED MSRs. Signed-off-by: Shivansh Dhiman --- Changes in v2: - Confined the enabling of vFRED to svm_vcpu_after_set_cpuid() only (Sean Christopherson). --- arch/x86/include/asm/svm.h | 1 + arch/x86/kvm/svm/svm.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index c0f6523e2b2d..f4a9781c1d6c 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -224,6 +224,7 @@ struct __attribute__ ((__packed__)) vmcb_control_area { =20 #define LBR_CTL_ENABLE_MASK BIT_ULL(0) #define VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK BIT_ULL(1) +#define FRED_VIRT_ENABLE_MASK BIT_ULL(4) =20 #define SVM_INTERRUPT_SHADOW_MASK BIT_ULL(0) #define SVM_GUEST_INTERRUPT_MASK BIT_ULL(1) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 7d411df3dd78..4b270490b2fd 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4540,6 +4540,11 @@ static void svm_vcpu_after_set_cpuid(struct kvm_vcpu= *vcpu) if (guest_cpuid_is_intel_compatible(vcpu)) guest_cpu_cap_clear(vcpu, X86_FEATURE_V_VMSAVE_VMLOAD); + if (guest_cpu_cap_has(vcpu, X86_FEATURE_FRED)) + svm->vmcb->control.virt_ext |=3D FRED_VIRT_ENABLE_MASK; + else + svm->vmcb->control.virt_ext &=3D ~FRED_VIRT_ENABLE_MASK; + if (sev_guest(vcpu->kvm)) sev_vcpu_after_set_cpuid(svm); } --=20 2.43.0