From nobody Thu Sep 24 20:23:56 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1789118011; cv=pass; d=zohomail.com; s=zohoarc; b=WUWMcc/Rulce/JR2r4MrvQQugEqPp9A9wLMWKVSMzo2QPTvYKgu+5V9stFeWzNUwtn7Ygg3AilX/8+VssZ6jzo6YKRqlboFkxqLmsa47mb5ftO9YmZqugFiizBU7MxeVoRRbtWdvA0fnNfQei4h01MDtprLukyBvBODUiO/pT8M= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789118011; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9Rjk4k8h1rfgiImUL7T5cXwA3eXNjbzwo7Aqi8JVKb0=; b=LGD/rizQI6A4/Qam3/karTrlZLVodqE2txSm9Ohcclh9gplh/EXVQqW+vWml9s0u7OMCN1Qxcs7LekgBCFTxiJrKJzl5biZvQrkwBKNf6mBqtDofJJzq5kPGpJThB6Kld5+TDlQpcv5riyvl1M9uGeDrTL4MQr7hH/KmqP+1h/E= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1789118011697904.0291266490908; Fri, 11 Sep 2026 02:13:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1416067.1645232 (Exim 4.92) (envelope-from ) id 1x4xJt-0007vU-MQ; Fri, 11 Sep 2026 09:13:17 +0000 Received: by outflank-mailman (output) from mailman id 1416067.1645232; Fri, 11 Sep 2026 09:13:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4xJt-0007vK-J7; Fri, 11 Sep 2026 09:13:17 +0000 Received: by outflank-mailman (input) for mailman id 1416067; Fri, 11 Sep 2026 09:13:17 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4xJs-0007ur-RW for xen-devel@lists.xenproject.org; Fri, 11 Sep 2026 09:13:16 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4xJs-003Czl-7x for xen-devel@lists.xenproject.org; Fri, 11 Sep 2026 11:13:16 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa3c625-e002-0a2a0a5209dd-0a2a4504d4e8-26 for ; Fri, 11 Sep 2026 11:13:16 +0200 Received: from [40.93.195.5] (helo=SN4PR2101CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa3c62a-b57f-0a2a45040019-285dc305190c-3 for ; Fri, 11 Sep 2026 11:13:16 +0200 Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5) by SA0PR03MB5548.namprd03.prod.outlook.com (2603:10b6:806:c3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Fri, 11 Sep 2026 09:13:10 +0000 Received: from CH8PR03MB8274.namprd03.prod.outlook.com ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com ([fe80::ebe2:32c1:d2be:a096%4]) with mapi id 15.21.0406.007; Fri, 11 Sep 2026 09:13:10 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=txQCcSt2vcU3K4xCxS9Zzk+MGmCClGtsurhiICpTtSKXZRcSb0rkAXqzBQtlsI6VNwT1uBKT3igFGd54pj63la65UH34KeRufe2jeOWY6Xb4fP6jr1CMLuO2qdwdfzGsQQcCakryiBXiJlC9hi6lQNsAQhNz4q+ePheSpT7Qag3j6MFuTsO59qGUJnwAK1DosKtkmr6VkGrLxr+BB/dxtHVSG/dqRzITLLPisMp8E+n5YmOCOC8DBU3pOiI9cAXFij3qvxATqClZiTdYpygYALO4W2YKJYS3Cfp2nWFjNkGDk37o6LE4v5cWPo40USsx5IOHyZhwagqC8JkMCWRVqQ== 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=9Rjk4k8h1rfgiImUL7T5cXwA3eXNjbzwo7Aqi8JVKb0=; b=AL7UoW23+wOmBuBmMSnP3tIowxdRjpBCTAD034uX0Cd9qBr6WurogVEj+PkmmwK92AVsjcmEH7WnvogsO9na1DALL5AZs3uHi9uATDrj83yvtJpRc+DvNwO+nY2dpWWTLG2eNWnwzZrnIejRzP4/sueqZv/1UYOF7eYsa0E/Wcxe9K5BB2uUpv2xnbDZ0WWN8F55UXlcrVhts2KjAU2njZvMJMMgG4R0VvDvuEwyJkwJ47pURJ8TrCN92uBfrgJ8pUCwl4NaDbU+LJHWEb6CqsaBFf8kluGQfsWrTBW3l2/CeeQO806zJcuPc+iLlzlCPtB4W9l1JGtTSpDEALwKgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9Rjk4k8h1rfgiImUL7T5cXwA3eXNjbzwo7Aqi8JVKb0=; b=RBa+Q/+IM6nW/l6ZN4NT65ojAFtgcGT/U2ozy2j+0kbqYSEVYPz1x9Wh9fvQYBJ3umYsNlu0kpAIKOhI+ibSBbJG0einx+Bm8W2AEioaWfWekmyzfudStfmUk9eWxPTfvuDJ8UYwsXR1wZ44lDkpk1H/gKkvtDRAK9+FdaQq+AA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Ross Lagerwall To: xen-devel@lists.xenproject.org Cc: Ross Lagerwall , Paul Durrant , Jan Beulich , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Teddy Astie Subject: [PATCH v3 1/3] x86/viridian: Workaround Hyper-V GP fault writing to MSR Date: Fri, 11 Sep 2026 10:12:42 +0100 Message-ID: <20260911091244.1165516-2-ross.lagerwall@citrix.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260911091244.1165516-1-ross.lagerwall@citrix.com> References: <20260911091244.1165516-1-ross.lagerwall@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: DUZPR01CA0286.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::12) To CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|SA0PR03MB5548:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b45d66c-8366-4fbf-fb2f-08df0fe4e68a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|23010399003|366016|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: pAw2KakVZTGTv091XGb9SEdAbInv6CY6mD1UoNXU+FUQ/7C5ywURDwORZmoj5b0ljzrI607AcIipm3FC19F+Q7V3891BZFKZEL4IHFOAecHZFecSgDYituQFYLdEnFYOHOXsD2U1p+jb35aOs+8PMnDFPOZbnddg88wUP90CgfztyigB09mmdkmlY4azcpbFkvezDk64ux0cF4+6wPejA658LOFgdlCYKyD/8EDt9MzAxeALY3oan6BpIrU1ReyU6c/syIg1gg10WGJ/UKKwcreQRgC+OEbnIyjg/drDVgxDVkz+APTyfC/ZEt4wXujfIK/PJyXOEH8q/riVMU5WbBZ8/IU+99ig+4zijfVcIT6ZfvXuCr7mRWY2bZlBCYbjWowO9kwS0+68+npwFJucbyh0/gyv4BTxKl/cf6TWSEGqjzi+jTxGi4vqErxIBD+60kaue2RNiI8dxP209DcQznK/YM0vpN7DgMT1QoWSodyN8WzhqPWFaHq/V7jhR6kD1tL6L1D5EZj1vG7EkgdNoxAyb43mwKuQ9CegI1HBzuXeSIOILD2kdwHFgy+g36URtiy5gCs+x9IyBu2FLxjbL/NmZw9E5sCks6cGssLcPK1eztw6iwDATx+ZSRKYJu5eejcPmVV9DoDs8BlQY0ip5xdOu3T8oGg/HfvLepPfs2I= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(366016)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vZIyZM1RCIOtP7DV33e78OuNH9NV07RbLTrwyxj1gdFz2vugrejTz7yQfHwl?= =?us-ascii?Q?5KqPruR1VNG3s15b1OPT68m6sEkZ5aO3Lwh0VmF5qx5shb/bQue+i/2wWyMQ?= =?us-ascii?Q?jrSvSlDfrCPonnSWWxTv75BnnPpSlpyvOfErAquRTJSXQQ4LVdZwRuw8MsMR?= =?us-ascii?Q?NVPhdJJGxTDYGFNsgy9O0H5JoUuMrPK3aKDjLrsEDHn5y7cMuNgfqJxPq2Zm?= =?us-ascii?Q?igljRKSEay4zj4PClo27a+Apd/iks1e5MaIbdMt6XD/rkKo/o3ubaW5m1mar?= =?us-ascii?Q?VHk8nyXIfoMlqzLZxo7y0TSeWQ147ifMWDRwVkQfZ41j3eG64PIIQJSHIELM?= =?us-ascii?Q?3ziOOnKVL7muGjbABivTie/t5bcmqXiFzLPuoZW+0Y53fTaSWWv85J8el1X/?= =?us-ascii?Q?WDILAzfMRJ7BRHJ4u4x+oYSt9K3ejgAyk32BhFQ+5VS2lCZs6F0LqMFy8vx5?= =?us-ascii?Q?653a+VjuxUn7uRyeOkBUA3/cPzAsKaHsGjADHoz3te4rrgi1g/1jJ5ui+dvp?= =?us-ascii?Q?LaD1Su26WSBi2/v1XwuhYyZE1IirxgEcicT07ZrMihxaBgYdaHHcHgq58/7D?= =?us-ascii?Q?Icx30VN8tXEAGuNYFXBa7wLKn2uwKKFfm4D+gBu1LZ29HdoyU1cXDhWplZil?= =?us-ascii?Q?CHkRMcOrW8M1cgckdCUNH0tAGE3vIldIF5YAzBRlkMTb4m+ffHuN93Dd6Kzy?= =?us-ascii?Q?AIBZHtEeRRo+l/c6PmnYh37qEQ8Qa+WW42sMGEawwJ9Y4gcjuXA2bch7oRoh?= =?us-ascii?Q?HZVPLZ/ZG6mECGxg+QnNQHEcgmeqrBh0jbU1EX7La9ErKwO+QrZ49s5584W8?= =?us-ascii?Q?DHpKPssOqv06KEc1l4PErwZy9+mo9X3DpKeXxzQKppQ739t6+0bEX8O0MoLv?= =?us-ascii?Q?wY7bNWyjPfZ6e7J0eeXA1SF40v1+p+cflTIgEUMfndrcrRSlr/sugLlUt7Pb?= =?us-ascii?Q?D9R/gD6kF5sUQ/ASmU4CmmhQcYWxv/jctVRa68d1aER+mhYwiHbAYRWwJ/kb?= =?us-ascii?Q?v7qdcB9ljJzLvdSdMPmzZmbjHThoDcl+mQLY9iGn+oPn8zMwa6uOmkDZpqpS?= =?us-ascii?Q?yUAxYPQlv3eFShM3uJP1hevAKmlCqLkovz9sJ0bLx+sGHyl9ODy924OHlWqg?= =?us-ascii?Q?hF0qJw79DO7qbzv8XmDCXSssJGeQ64uiYRbi2PFInTRmv+bYclCyDOklEYea?= =?us-ascii?Q?+fT+dMaLxeQEQ1ft6L/OUEyKDUi7wC85RoYDekGuV3GVzj/B7iwFQ6v3YEEy?= =?us-ascii?Q?sF6o7iMI/nnChWPvAx7rtpCZuHrLG5Y/WDAzA4ktu12DaSo4GJwxHo9mzxD5?= =?us-ascii?Q?CvGDjOgMQvu4++jvoPY9hd9f/GtcKbI+z4GZuQILLnNz+Lt2ctcsp9ld9AL8?= =?us-ascii?Q?BH4MClxs8Ic4rVNYCn0NZ0Eb7y7mDnZsOi3iPy36yqdDVLkM7Kb2RPXM/H6/?= =?us-ascii?Q?zqmT/KXX6juh3xNuBdJwOviOulZ34h8dWN2IHpfnoQcdOFpn4SVgF1XnsaDh?= =?us-ascii?Q?9zc0/1kWvll5qYGObOhmWbR1FCFYC4O/i1ApCgKBgkZq8OxfjxRch1N/ZF+J?= =?us-ascii?Q?yfo2SAwpuhqceCyHWvYyQQb7tO3ZvsZRKHog8pj85tT7kpU1I7xDyPJDi890?= =?us-ascii?Q?2LCeP1c4v6QB4mS8eybhX88v7P1+i8HbrY16b4t85LFhv+8dvY8x8int4NgV?= =?us-ascii?Q?ZDqtDrTpO/XZkeK1LeDTGFqBwwbeTCUMzCuMrdDdZO9xctdTkHTipdXbuTB8?= =?us-ascii?Q?AZlF8uR0/ycI6CrV16XGkLwGln4T4vc=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b45d66c-8366-4fbf-fb2f-08df0fe4e68a X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2026 09:13:10.5367 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4d/J10pSzopCLeKP/GvBHxeHjTmSLd9wHVJo3huPO+shJX2LopUsDD6GEg5wHOVoMSe7P75bJITft0buvlxAXJ8r5WDgW7mlXmIeAMDVINg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR03MB5548 X-purgate-ID: tlsNG-ebf023/1789117996-526CAB50-D50BB38F/0/0 X-purgate-type: clean X-purgate-size: 1584 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789118014469158500 Content-Type: text/plain; charset="utf-8" The Viridian spec requires the vector to be >=3D 0x10 when writing to the SINTx MSR, otherwise it should #GP fault. The spec-defined initial value is 0x10000, i.e. the vector is 0. On startup, for some reason Windows 11 Hyper-V tries to set the MSR to the spec-defined initial value and since the vector is 0, it GP faults. Fix this by doing as Hyper-V does and only fault if the SINT is unmasked. Signed-off-by: Ross Lagerwall Reviewed-by: Jan Beulich --- In v3: Copy Hyper-V behaviour - only check the vector if not masked. xen/arch/x86/hvm/viridian/synic.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/viridian/synic.c b/xen/arch/x86/hvm/viridian/= synic.c index e6cba7548f1b..3125ccca0dcd 100644 --- a/xen/arch/x86/hvm/viridian/synic.c +++ b/xen/arch/x86/hvm/viridian/synic.c @@ -157,9 +157,14 @@ int viridian_synic_wrmsr(struct vcpu *v, uint32_t idx,= uint64_t val) if ( !(viridian_feature_mask(d) & HVMPV_synic) ) return X86EMUL_EXCEPTION; =20 - /* Vectors must be in the range 0x10-0xff inclusive */ + /* + * Vectors must be in the range 0x10-0xff inclusive unless the vec= tor + * is masked since Windows 11 Hyper-V (26H1) has been seen to write + * this MSR to its default value, despite not being a spec complia= nt + * value. + */ new.as_uint64 =3D val; - if ( new.vector < 0x10 ) + if ( new.vector < 0x10 && !new.masked ) return X86EMUL_EXCEPTION; =20 /* --=20 2.53.0 From nobody Thu Sep 24 20:23:56 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1789118022; cv=pass; d=zohomail.com; s=zohoarc; b=G72IdAYzf7O55qZTzG3W3ZjUZjr4t6VRtN88fc3vhH5M/ok+5hhaTjjsAHiszwXlNz73c9UM7AOAol06vpfCacQHHi0b38I72t0zRbB8/0Oxn7kadzLetMB3TKLmy4l44ntTCdDDi+o4ROzABYx5r9BWHTtjGPMRfJgE9uujeeY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789118022; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tYKIlUdhkoJoNa0kISGZ4/ZymHnUZqUNnA5Zqk/4p2s=; b=b5VggfT6GQvjqOWeSQsCkGidkyUfOnN4iCD4kQ9c8PB9QtUtRs2OOYepGCdQNUDPrG/bqCwgrYCfiZVUkY999XCPrNCANTkW/+5tMH/cMzUMAtBIGlx2yEX2c+Mq7ov4qIQZF56RkMmF7LWyvzsO2UcDX4ac3qbDcw+cZvgwcxg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 178911802252280.48520356176277; Fri, 11 Sep 2026 02:13:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1416068.1645241 (Exim 4.92) (envelope-from ) id 1x4xJw-00089s-TC; Fri, 11 Sep 2026 09:13:20 +0000 Received: by outflank-mailman (output) from mailman id 1416068.1645241; Fri, 11 Sep 2026 09:13:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4xJw-00089l-QM; Fri, 11 Sep 2026 09:13:20 +0000 Received: by outflank-mailman (input) for mailman id 1416068; Fri, 11 Sep 2026 09:13:20 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4xJv-00088z-Rf for xen-devel@lists.xenproject.org; Fri, 11 Sep 2026 09:13:19 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4xJv-00AssA-7x for xen-devel@lists.xenproject.org; Fri, 11 Sep 2026 11:13:19 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa3c62a-bab6-0a2a0a5309dd-0a2a450ba2d8-18 for ; Fri, 11 Sep 2026 11:13:19 +0200 Received: from [40.93.195.12] (helo=SN4PR2101CU001.outbound.protection.outlook.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa3c62d-b7e8-0a2a450b0019-285dc30cfd72-3 for ; Fri, 11 Sep 2026 11:13:19 +0200 Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5) by SA0PR03MB5548.namprd03.prod.outlook.com (2603:10b6:806:c3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Fri, 11 Sep 2026 09:13:16 +0000 Received: from CH8PR03MB8274.namprd03.prod.outlook.com ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com ([fe80::ebe2:32c1:d2be:a096%4]) with mapi id 15.21.0406.007; Fri, 11 Sep 2026 09:13:16 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S9hJJF7rGVqZ9JjUrTGIAeQCaSpL1EZAtzj0IxN8T4o2YDk/TOxXBvbzlciStAfk1AvsYR6YiEKDc/tBBJZ1i37CcYjI4ud+0AzkftWcSc09lekAs44rO3hsUBjhEqgu9uoGji5RqB32d+/scVsS+pXzrHeyh636Xhfuux2eqq265yXTDCoBfgmXofuwyJ/Q3Q6NF0wYmrBpZy21Z1EBI9B1j+U93ccLp/6Jiv9QZ6NT3hZQdZpZjH87tJxzJLHNl6BSgjDrNGDUhiyjd1o+z39RHVfMfSlpdZac71QMQgRIViBartdF/N1jA/syg5lCqiZkNqyDEgTyOXtwS30OsA== 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=tYKIlUdhkoJoNa0kISGZ4/ZymHnUZqUNnA5Zqk/4p2s=; b=gSnlytOKqzoOaLmj/Q/ik2y2VFCw8skCSrdqKRIwbqPMXDO550NTXbOU4YCtZY1dQIvjnW21OQmCWw58T7QuKRCUVmyFGzy881H7+SLTIWnMjEUDwOZqaON4rrDAKKODrJa0U0x4aaWdsah+rdDoKpfG/DHmGXIQXxPoxqQcK/A8rzYU0J5/8gL6kcCr0WtW1MNj/mAMf6tFKbVgWu65xravKX09Uas9Yd4KtGry1OqXXsOfhUgidS5wCs00VnWmz6FTmCIQeM0tGy5r6IdBGwJNQ24+YJWdFAXiz1tXx2p77HXE+4sSh1RdrzjZ1pQmdHbNSMkhGK7l5PviDPyxCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tYKIlUdhkoJoNa0kISGZ4/ZymHnUZqUNnA5Zqk/4p2s=; b=wW2lFbQFv5JLzSns61xc29i4G3QgAGCtx02IkadLTO5nYvqZ6njat7xpkWPyhx2KwgA17WcFcTCq7f5cdutYD3D2dWcKRjNKgMo5EyuGExY5PAOx4AoNaq4q7iwdFSmc/MqkWKahXUsZ7eivb/Gi7DWPV/f6eneGUijtac0T0+Q= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Ross Lagerwall To: xen-devel@lists.xenproject.org Cc: Ross Lagerwall , Paul Durrant , Jan Beulich , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Teddy Astie , Anthony PERARD , Michal Orzel , Julien Grall , Stefano Stabellini Subject: [PATCH v3 2/3] x86/viridian: Implement synthetic timer direct mode Date: Fri, 11 Sep 2026 10:12:43 +0100 Message-ID: <20260911091244.1165516-3-ross.lagerwall@citrix.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260911091244.1165516-1-ross.lagerwall@citrix.com> References: <20260911091244.1165516-1-ross.lagerwall@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: DUZPR01CA0284.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::22) To CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|SA0PR03MB5548:EE_ X-MS-Office365-Filtering-Correlation-Id: 2d33197b-9631-4823-359e-08df0fe4ea16 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|23010399003|366016|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: BiPyTTITRFDepBqf/ARiPHDOfPg5WTuNDtrwyTAP8lxw6Et5tz53nLhsagHfGs+CuqfsPwE0hIe510ThhovwesOOY0DHEnlun1IZuRmcaJIB9N51DABM8ecuFUQw2cITLcFj1xsz3nZ3NtGZfoPqtV2tAyg3v8ysBCi3g/G0bZc9JJ1j1ABGMzYJmBmoFxMWCHSHVaVe/xIwEiZgN00E5h+9+1Suv1qRFx5MRzziQ+xRSKlUP5u0v3foMpPvQIpbn5Zc5PR1fsFxB8vNnSwio9CtwslyUugXW2g8AFJRdBJWAB5SBPJY8ozAt+od/OxGaIw3CCHCU9HI2ZhGadfQVhtq+CE2kJWV8dpiXkJwJr6uw7dW4D+q7yy91UZbGc53H7U2w35md0Yy5FTeeUFW8F7pDK3YUj+104IV3zbt+RfMYeLP52x2bkrPiD9hrPgeMqEfxHzK95A/Mdaooyvy1H/nA/nDbq//MQh8o/0xhAFhjYEm8Lea1GrhM+gC0/oW+BFrx66i0hM6s5uE2ycO4k4B02SAVaQfJAxBM9yzFCE0agf2zq39KOySvN9TkmeUBFZ4YIKO/2iaiGbsnKzc2Y6L8ANT2wKGzmIz6OsKU7DTxGz+dfQabFMA4IPxvxYw3ygW3/ZIeeYbqp8oEdIz0gSl0KEdjLGTGxG6bbDsZnE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(366016)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hc1RMrP9UHzqUAHp05fnUhOS2clpRPOOmleKmBSwkW0U2DGzOOynkWUg3Nml?= =?us-ascii?Q?IzazbaSq0E5C0UbzSu0qQhX2Xpwz3KssxK3CgaEHr5EKnyTiwXhTnTFqHO/y?= =?us-ascii?Q?NQhY0OhVtsWwDF5cEd5ozpzWyx71TYVyhoHs7a2PGift8096WwMnamqEBST5?= =?us-ascii?Q?MfMprcedZN3JvaKMw7vxJvQFmtQ1MWg7BVKNk6ktl/+uPUPt94UikwC/84Eb?= =?us-ascii?Q?913GA1IvQzM0FxqNmdNTk/Rh1GRWuZgIDQgsCExxOs/Qfp7hpPJ9mJrbdPlk?= =?us-ascii?Q?lreRrz2W3loABDpwnl7k/RyOMwxdiVfJkl1NlupEQJngUNOlsPoy7ovr1yEq?= =?us-ascii?Q?KNJwssmREJSCmZKfV3K3oQYXpfyDQc+Y7Mq6vyu+7ny6u74k0pPasl1fldtm?= =?us-ascii?Q?VlFM/e2yBeFnJ6X65rfzcExp80dTlOBS1EtW3nKAbFRAACez+xFf2MExpXx6?= =?us-ascii?Q?T/4pG1DDZWIpdNFqiAdf5EJVkXL4s5AZ6Ug5omsRxYYRcMbFX3a5rtc6iceT?= =?us-ascii?Q?oqJ6evHwzs3lDwTWkPAHIASkur5lVYQMtoXTBo5iWNsJGx1OM1fqhZ39z8IQ?= =?us-ascii?Q?Mo/mcv2NrZS2wcFSrF1QWOxciGiT7mWZQIqJ2iujjnK53859FWTwvJFKOTsC?= =?us-ascii?Q?0WXQaT/vgUmrhaS7G/ZCTFRZuyeTAi/T7TJoWw2z/Olb8ajK72gzw/qceLGA?= =?us-ascii?Q?N5G2nWBQxTU+r7TU8NQxfEPYQIGtsTHXthEhh8r0DP3BWIYEgPcxAiqw+qU3?= =?us-ascii?Q?RpiwoPK0k/zcLlSw2fF/dnDmzjv0DTJCf3gl7rSB/KSzOa4Whzuz8Ig36MtS?= =?us-ascii?Q?QBD4lvoJ91ynOxHSpTWbAgDLIQv9ZTs6eSJf6Ord6yLFXrVwdQq0fYTa9dS5?= =?us-ascii?Q?JXQFxmqmhH0dqbnH9a/Z1yrdO4Xcixek0Fy7HcCc7aJhd1ipVpsKXGNCkwZF?= =?us-ascii?Q?PsyVsapEwrVgLAK1LHV81qMDgUVF6KX5xFFLcVkkLEUvFjrhCAvHktgyK16O?= =?us-ascii?Q?T8nD5oJZGn32ExuNJcO+0VeQrltVqnxYfB1jHbjmMmfNVVOF8ufaUJad+pj+?= =?us-ascii?Q?DNrxIC6uUdDKH+ZFjz3ntLZI9Ksbc4NQVnkkXUiXPWfZdgHZFfGLRE8/QAJg?= =?us-ascii?Q?7yNFmC21AFFs804Hf9KZR/7AFMLIogyR/lsuUkat2s2XlgOt6d9bsrXZ7Q/t?= =?us-ascii?Q?1VBJfFuprxDe/L5Zg85EQeZIJyzI1oMAsrDaF2oAsL4svUejhmeaGd/1R4Qe?= =?us-ascii?Q?eh1/BUixYNzmX4y7PJ+NJ0hjpJ+oftgDTAG4kvzFwi4BBy4IyAP15WUBiJYL?= =?us-ascii?Q?kRREmd+qHkxuqafNpPQEsYr7lRmiGgiY4wgWRWfYglXAc3Ar61qF38R/VS2m?= =?us-ascii?Q?cSQ7aWN/aVOsuDVO4Wrx65hBLCO1Ftl9dguPqaJhjYQ5xwoYJZLKUcmit7Dj?= =?us-ascii?Q?OuIa8yBKncVnb9DKCvYenUXJ7zTglz4mjFI3xzV5UCXdl2j8W4eGzEz2qy44?= =?us-ascii?Q?5eZ50+elT80BKIfbyhfo0+fBZ9oH9m2BibNK6qt6u5HcwyZ1wSyp4u1w6MeU?= =?us-ascii?Q?pEl1lTz3mTGXjalJ5EKxFQXUXhi+/dqg31ewI9VRCxdvRzyMNJSdn5ld2mpf?= =?us-ascii?Q?M6bZY3XEFQCdKZh04tN4mhXCKZGRObbWb3AIviDGbEk8uLQYk1kZNQ15W4XT?= =?us-ascii?Q?9CxGfFSnJ3NSRYkbKro3fpUdskxvmgflc3soU/gcLrkeZbPYx/jM4+hXXj8I?= =?us-ascii?Q?j2PbEdbLiJksSQdnGq+eKf7Q73uTBh0=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2d33197b-9631-4823-359e-08df0fe4ea16 X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2026 09:13:16.5681 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nONw5+Ls/F9MF1j6SdZSJej5ozcT5ujkUWA99qaQ/C/+t3zTtwPGSFOs+MCPQEi6qwmw1FKCKp5QlMyPec/o+1mn1WyrJ7pnhwMHqZxex4s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR03MB5548 X-purgate-ID: tlsNG-42698a/1789117999-1ACDF9EA-E379AD41/0/0 X-purgate-type: clean X-purgate-size: 6181 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789118024439158500 Content-Type: text/plain; charset="utf-8" In direct mode, the timer asserts an interrupt on expiration rather than using a SynIC message. It is useful to implement this since Windows 11's Hyper-V can only use synthetic timers in direct mode. To avoid changing behaviour in existing guests, add a new Viridian flag, stimer_direct, to control whether this feature is visible and usable. At the same time, check that the reserved bits are zero and the APIC vector is only set when using direct mode since this is enforced by Hyper-V (although not mentioned in the spec). Signed-off-by: Ross Lagerwall Reviewed-by: Jan Beulich --- In v3: * For compatibility, keep the existing behaviour when the feature flag is not enabled. * GP fault if reserved bits are set. * GP fault if APIC vector is set when !direct. xen/arch/x86/hvm/viridian/time.c | 44 ++++++++++++++++++++++++---- xen/arch/x86/hvm/viridian/viridian.c | 3 ++ xen/include/public/hvm/params.h | 7 ++++- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/hvm/viridian/time.c b/xen/arch/x86/hvm/viridian/t= ime.c index 082528dc9416..65654cf96937 100644 --- a/xen/arch/x86/hvm/viridian/time.c +++ b/xen/arch/x86/hvm/viridian/time.c @@ -223,6 +223,21 @@ static void start_stimer(struct viridian_stimer *vs) set_timer(&vs->timer, timeout + NOW()); } =20 +static bool stimer_direct_mode(const struct vcpu *v, + const union hv_stimer_config *config) +{ + return (viridian_feature_mask(v->domain) & HVMPV_stimer_direct) && + config->direct_mode; +} + +static void stimer_deliver_direct(struct vcpu *v, const struct viridian_st= imer *vs) +{ + struct vlapic *vlapic =3D vcpu_vlapic(v); + + if ( vlapic_enabled(vlapic) ) + vlapic_set_irq(vlapic, vs->config.apic_vector, 0); +} + static void poll_stimer(struct vcpu *v, unsigned int stimerx) { struct viridian_vcpu *vv =3D v->arch.hvm.viridian; @@ -242,9 +257,11 @@ static void poll_stimer(struct vcpu *v, unsigned int s= timerx) if ( !test_bit(stimerx, &vv->stimer_pending) ) return; =20 - if ( !viridian_synic_deliver_timer_msg(v, vs->config.sintx, - stimerx, vs->expiration, - time_ref_count(v->domain)) ) + if ( stimer_direct_mode(v, &vs->config) ) + stimer_deliver_direct(v, vs); + else if ( !viridian_synic_deliver_timer_msg(v, vs->config.sintx, + stimerx, vs->expiration, + time_ref_count(v->domain))= ) return; =20 clear_bit(stimerx, &vv->stimer_pending); @@ -361,6 +378,7 @@ int viridian_time_wrmsr(struct vcpu *v, uint32_t idx, u= int64_t val) case HV_X64_MSR_STIMER2_CONFIG: case HV_X64_MSR_STIMER3_CONFIG: { + union hv_stimer_config new; unsigned int stimerx =3D (idx - HV_X64_MSR_STIMER0_CONFIG) / 2; struct viridian_stimer *vs =3D &array_access_nospec(vv->stimer, stimerx); @@ -368,11 +386,21 @@ int viridian_time_wrmsr(struct vcpu *v, uint32_t idx,= uint64_t val) if ( !(viridian_feature_mask(d) & HVMPV_stimer) ) return X86EMUL_EXCEPTION; =20 + new.as_uint64 =3D val; + + if ( new.reserved_z0 || new.reserved_z1 ) + return X86EMUL_EXCEPTION; + + if ( stimer_direct_mode(v, &new) ? + new.apic_vector < 0x10 : new.apic_vector ) + return X86EMUL_EXCEPTION; + stop_stimer(vs); =20 vs->config.as_uint64 =3D val; =20 - if ( !vs->config.sintx || !vs->count ) + if ( (!stimer_direct_mode(v, &vs->config) && !vs->config.sintx) || + !vs->count ) vs->config.enable =3D 0; =20 if ( vs->config.enable ) @@ -583,8 +611,12 @@ void viridian_time_load_vcpu_ctxt( =20 vs->config.as_uint64 =3D ctxt->stimer_config_msr[i]; vs->count =3D ctxt->stimer_count_msr[i]; - if ( !vs->config.sintx || !vs->count ) - /* Reject enabling with a zero sintx or count fields. */ + if ( (!stimer_direct_mode(v, &vs->config) && !vs->config.sintx) || + !vs->count ) + /* + * Reject enabling with a zero sintx (if not using direct mode= ) or + * zero count field. + */ vs->config.enable =3D 0; } } diff --git a/xen/arch/x86/hvm/viridian/viridian.c b/xen/arch/x86/hvm/viridi= an/viridian.c index 90e749ceb581..90be5842b995 100644 --- a/xen/arch/x86/hvm/viridian/viridian.c +++ b/xen/arch/x86/hvm/viridian/viridian.c @@ -78,6 +78,7 @@ typedef union _HV_CRASH_CTL_REG_CONTENTS #define CPUID3D_CPU_DYNAMIC_PARTITIONING (1 << 3) #define CPUID3D_CRASH_MSRS (1 << 10) #define CPUID3D_SINT_POLLING (1 << 17) +#define CPUID3D_STIMER_DIRECT_MODE (1 << 19) =20 /* Viridian CPUID leaf 4: Implementation Recommendations. */ #define CPUID4A_HCALL_REMOTE_TLB_FLUSH (1 << 2) @@ -185,6 +186,8 @@ void cpuid_viridian_leaves(const struct vcpu *v, uint32= _t leaf, res->d |=3D CPUID3D_CRASH_MSRS; if ( viridian_feature_mask(d) & HVMPV_synic ) res->d |=3D CPUID3D_SINT_POLLING; + if ( viridian_feature_mask(d) & HVMPV_stimer_direct ) + res->d |=3D CPUID3D_STIMER_DIRECT_MODE; =20 break; } diff --git a/xen/include/public/hvm/params.h b/xen/include/public/hvm/param= s.h index 99c40b4287f1..4db5142970c2 100644 --- a/xen/include/public/hvm/params.h +++ b/xen/include/public/hvm/params.h @@ -159,6 +159,10 @@ #define _HVMPV_cpu_hotplug 12 #define HVMPV_cpu_hotplug (1 << _HVMPV_cpu_hotplug) =20 +/* Enable STIMER direct mode */ +#define _HVMPV_stimer_direct 13 +#define HVMPV_stimer_direct (1 << _HVMPV_stimer_direct) + #define HVMPV_feature_mask \ (HVMPV_base_freq | \ HVMPV_no_freq | \ @@ -172,7 +176,8 @@ HVMPV_hcall_ipi | \ HVMPV_ex_processor_masks | \ HVMPV_no_vp_limit | \ - HVMPV_cpu_hotplug) + HVMPV_cpu_hotplug | \ + HVMPV_stimer_direct) =20 #endif =20 --=20 2.53.0 From nobody Thu Sep 24 20:23:56 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1789118020; cv=pass; d=zohomail.com; s=zohoarc; b=h4LUuaLTTTEeYKn/NoyHKa6mLNXx/jHmFvgqDkovTl50ZeyiuV4uoTX4V585Oca+ul9dAckiCvQH1FZts2A7+Quq/CxFz2CffCZa6hbpCsnw+qTDZ4Hk6q/aXy/lrDJNYhkv4eXEmoisKlC8RroV4s6YyqSV1J7CBSs59fahlQg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789118020; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KEiaB5ZRgIvBm1/l1Np+Vw8BCS5ijucJq0EQQr6Ip8s=; b=S4wZByCIqfhCMqJm6uO6tBD3f0XD/Z4ihyTZUZ8mRGHHKkPr4oaL4qjBOvqHuFChG3TsTygAMzG67lWoyYL81WEcOlTAsT6iTcBOnZhEiZSOFj7b2orrmRJ2UjX8DZBxGYD1o3YDsWJKLI2kg4vDI5m5MWZmuDl+WPok2UPCor0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1789118020537887.9274234119396; Fri, 11 Sep 2026 02:13:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1416070.1645249 (Exim 4.92) (envelope-from ) id 1x4xK4-0008Vi-6r; Fri, 11 Sep 2026 09:13:28 +0000 Received: by outflank-mailman (output) from mailman id 1416070.1645249; Fri, 11 Sep 2026 09:13:28 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4xK4-0008Vb-3T; Fri, 11 Sep 2026 09:13:28 +0000 Received: by outflank-mailman (input) for mailman id 1416070; Fri, 11 Sep 2026 09:13:26 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4xK2-0008Sx-KD for xen-devel@lists.xenproject.org; Fri, 11 Sep 2026 09:13:26 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4xK2-008eKE-0d for xen-devel@lists.xenproject.org; Fri, 11 Sep 2026 11:13:26 +0200 Received: from [10.42.69.1] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa3c628-8faa-0a2a0a5109dd-0a2a4501c7c8-44 for ; Fri, 11 Sep 2026 11:13:26 +0200 Received: from [52.101.193.13] (helo=CH1PR05CU001.outbound.protection.outlook.com) by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa3c634-5984-0a2a45010019-3465c10daf7b-3 for ; Fri, 11 Sep 2026 11:13:25 +0200 Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5) by SA0PR03MB5548.namprd03.prod.outlook.com (2603:10b6:806:c3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Fri, 11 Sep 2026 09:13:23 +0000 Received: from CH8PR03MB8274.namprd03.prod.outlook.com ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com ([fe80::ebe2:32c1:d2be:a096%4]) with mapi id 15.21.0406.007; Fri, 11 Sep 2026 09:13:23 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gqdm9P1wzkv1DtYZ6Kk0OZTv7rKWdaSBsyos6Y29JQyqKuTKtDKGx5QTsBzvGPNpZ8qPwI17CoTM28Zq/YUCksBOjpptaVbwfp//5CQFId6Suit6bHr0/UjHhkUTyGMkUAntzieKg6NU6iLELmdn+bAMWctjihZwG6nMH5WKU1PWCZYZzCoW+NIH6F2wi8u2WkZSJ/OFG8b6qSoAxpAWNkhcWErUTIx5VnFn5qFmKwW9XNV2mcLXoyFTcHVpkvS534ETdkkeGhGmuBrunh/EvGVFOI3dqwXdy/HvzvSIXPwsYSTVwxeLIGKoGCOK/jouPsVpEWzcaksJuJB3wShAZQ== 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=KEiaB5ZRgIvBm1/l1Np+Vw8BCS5ijucJq0EQQr6Ip8s=; b=rOKcfTFXKyA1oyF5G15hczL6cAI6NYw4JrEZ/vjAUDCsxRkD6pDcJSrv5f/OieeCuxkrrNiZqddkdzR/oub6UupQljwdVWfFgsrY5v7anHLb4z2ZHFukXL/8baMx38JXOvhf5vWyk1hTp2POGaIca6Yt+MdDv04edTtDWtDNFJBaQ/w/WSD/k4g8uBiDI2hPBFFWAclgic0yMVbeOSaDhjpNsw0rdWAL7AK15jT35j27++3k3o3BTJ0w+O01dXVdqouiGY6MqCksz9IEqG72lau6hxjs6QQDIqiLSC+MfI3V2oc+GZhAL40D2FyY/xoiCNPcJz8H0pxlx5wD+cYWSw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KEiaB5ZRgIvBm1/l1Np+Vw8BCS5ijucJq0EQQr6Ip8s=; b=gJizNfonE+FJACvaz9ZM78GqQ6rDhaFl6C8hr9HRtrEsYQpBvRcx8iu/ZlM7CJRNml/YRM1xJiaFyrM3HAPoIdp0ZgXMk4UhPQKDU2adB/BlqF1GZ7nqowOJEKPG8r5Epp/xEIoaHiMxpvdqoBtkNdx2aHgRRjEDloiQVYWp9cw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Ross Lagerwall To: xen-devel@lists.xenproject.org Cc: Ross Lagerwall , Anthony PERARD , Juergen Gross Subject: [PATCH v3 3/3] tools/libxl: Add support for Viridian stimer direct mode Date: Fri, 11 Sep 2026 10:12:44 +0100 Message-ID: <20260911091244.1165516-4-ross.lagerwall@citrix.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260911091244.1165516-1-ross.lagerwall@citrix.com> References: <20260911091244.1165516-1-ross.lagerwall@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0421.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18b::12) To DS0PR03MB8272.namprd03.prod.outlook.com (2603:10b6:8:28f::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|SA0PR03MB5548:EE_ X-MS-Office365-Filtering-Correlation-Id: 517c9659-8162-43bc-91ec-08df0fe4ede4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|23010399003|366016|6133799003|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 6aJQioBvbO0Mf8e0EyK66hEPHm+KMLqanIxRzZ4T0W9vWRnyuhXbTx9sLziM5mIijcA3aQMRbOUuZrdoUZpAPUUgCK/MGjgsM8mkzw2rScbGwvFgxYJqo6oUBuRxcV1m0Gg7Y/vIkeGF0XLmoT3c5GCd+9HjGSQnSFgzH0VFkkYCiJzrT+lIbH61a20nJ4ey0ycp7VMIs3UQosxjD9DXCxWmkhY7Nb/XFOLEAI1LU0YybRZRv2PU2ipjKY2Ri0/03NYKf/JGCNwAX3LvEAgQG4rfRGPMjMsEA5gvdgd+Djz+DS3GgCueRUkwVIDp/DvMlF7LaOY+GyZ5NkvM6t3FP+Sm9l5NtIag7XwjSSpQIuJchGHYY05F8lhjSZ+nFZvYHlqaebveRvtInZWameHXfdIc/WiwmzL8CzVFbbpZKXdLLaPMqufxuA1FqyyfRw9/rq4vKDwoicrP7mIXKhdOjDXm/pK2a0t1h0rQXIGDEI9C/AIJBjAZ08vUx6lT/TjY81+sF/Z0yXnUfjO67bktCfnVxLbt9/8A1Oi8qWdbUmZxiKhOYItWw4IqeweTCoLbZWFfInFnVbbcf5GxHgVMBJ/dM1icBFytQEmYgC+rX1vUvYzCjKOfVkFtNGhI1AQMk7wVKGk7he7IFgnFaQIRq2xikT7DcAJm7ctouXpH+fs= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(366016)(6133799003)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?K32RK+2PmpFC9Pv8zgqgVF1eSfRDF0Kq12NgLajHXr4a6xW5xx+5512O+wZQ?= =?us-ascii?Q?Sm5fFueekNLIKP3XbJXblez4UxRKoqK0/Mopmn8nb5E19qRF81ngusc9vySl?= =?us-ascii?Q?SGMaFgR70ty2yJhXgj5F/4kQzONxmwh+RheMwuDdWbO2FA/8OVk9wj3upfv+?= =?us-ascii?Q?IEsRgo9mK3oI95y0frjWxk79Ba9Zdeu1u9GWfj2HPpsQVD2mUTwaMP7ZnU2g?= =?us-ascii?Q?HYOO/a/29nZ+65RZKErnSenlmwghn/FgtQfyKFZqRhQHTU8nNOaO/tnJWzgw?= =?us-ascii?Q?2BXJNOWhdfZTNckSUQEKsu3RlEd05BUYPgjm4WmKmVDMkXArMUVJS9AFnXeH?= =?us-ascii?Q?XQb9O0ktdbsEnHA7P5p6TdiChV/roU+Fbop5CANKTKlUwiotSBwTZuawG/dG?= =?us-ascii?Q?zMxAkRi6jmKyOoAGI80kk9nLDt45h5ACcVEC+3gtHLDm9Jwe1wSmwug/9nDW?= =?us-ascii?Q?qPzCjTS8ZnU1no+VeC+vqi7w7XjS4nwn8QAk9WNefbdEinhEYjrHXdkvu+TL?= =?us-ascii?Q?wEEESmNlGlZ3n9euB3cWhFxSywGBO51RUao4dmIjSTIj9F/SZS0ylR3FbrpL?= =?us-ascii?Q?qa53Cnby8ua2/S27jEHnc47UQHyp4XQHXEt/vSIl5HdxRIxqTsSYK8mVTUMc?= =?us-ascii?Q?xOGS7WFtK9aU6NnJEVfqtGhS4OU1Q2ijEWzE3RglPdtNmPf2W5MTk9U2dUhF?= =?us-ascii?Q?sI453GHojZGSRsMOIncin+vBs4rFIGoIycvhE0MUuV7HCoMafgwRWxsq2wYq?= =?us-ascii?Q?Cs4JhNsi+NYsCt0AuEqsGR4X2CKU/rDYdusnMNYVTJuyADqyUdRAmjxINtKC?= =?us-ascii?Q?89TsxtUVt+bvOE15aOIkOI3hc0INO6PcRGxGVLa/v1M9no9qU9kUuq58B93W?= =?us-ascii?Q?g9iDDl6J8QH5oPKfYiPVVyleXJqulA4KaMO9lXx8Lt+akSn1g5vfK1EkjNvQ?= =?us-ascii?Q?2OC9ug1/JZGYUWwk4CPfLOQTc7CKWA9hRT7h31fO3qPn/1ZsKas4KmC5RQff?= =?us-ascii?Q?mN2C+/LIrsp28QQ99ZCNGr2UffQSEZ3sN6Jgz8XNQLndaBdrXG27x1c/vYD4?= =?us-ascii?Q?/AVF5XbM8DvZsJS/uUIhl99drXTpToro9oLd7ZDtsjMhXyoSGRB42QTCh/xC?= =?us-ascii?Q?ZILSYSz72YAI1xwdt4SOxNtN59VYs+DKkgYyT1gSnAC6QrYegTZOuYa9Ekgi?= =?us-ascii?Q?lULHQ5vBhEHwvfUsjVjE4L/8DEfqREUiA1VZPhB7wzRzBs9FdQckraaVGLX3?= =?us-ascii?Q?WluYGCc0I7PXVTmkxhLGn2FOXrQQ1FNU0Jn9FMdr8mdwhwSJv4Epiq55asi2?= =?us-ascii?Q?lyKv5s4jQkulDdpUHT/G7sk5OibAh3JdpFzY5Xx3/sZnsEeAhPfA3QR5mEXm?= =?us-ascii?Q?iHLI5Nir8UtGJRh35eMd0XAZFji6n9z9+aacr1awmvf/l78pU93cRzVVvXH+?= =?us-ascii?Q?VeX0xSwkep38NMpEMLecskk8fFRd0EnJ1G5PXBwQG+5fLPpYcmyYSIAm/YdC?= =?us-ascii?Q?upymSUaujHkyOFcXcx2l7aUsby9Le2fkfRySWKBetP+vmE5VrRYqOAW7UTSE?= =?us-ascii?Q?IFyiaxXPbhdTNJLQQVQWSILkD2k1kLSXYvI4dYF5dwyE328gNS924R88ONPV?= =?us-ascii?Q?QvP+KtKgbCug9qq0F5y+RlYxU09jAjkt7lQxZguS6JinFXTpYizKhmQTze4h?= =?us-ascii?Q?Ka9/lJcu4+lqkrWFQynIvTxAPBJanqkvw/ZBHpPzRhvgp6u40l1/uf0Yx2l1?= =?us-ascii?Q?riF7JZj2HzEuHVoe5Ow8bL90ZhBvNss=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 517c9659-8162-43bc-91ec-08df0fe4ede4 X-MS-Exchange-CrossTenant-AuthSource: DS0PR03MB8272.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2026 09:13:23.2831 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Wc4/uyzeVu9owGBVPyscqOVLJg2Tg7CqePmh8ebwHy357vUJMejXt6ZrXJ7pFLNVqIGqoN3UnsAEN21N6xsL4VX6oefL6JLGvujw2mkSwdA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR03MB5548 X-purgate-ID: tlsNG-d62444/1789118005-BEC61757-1BEB8274/0/0 X-purgate-type: clean X-purgate-size: 2760 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789118022283158500 Content-Type: text/plain; charset="utf-8" Add support to libxl for using the stimer enlightenments in direct mode. Signed-off-by: Ross Lagerwall --- In v3: Fix typo in docs docs/man/xl.cfg.5.pod.in | 5 +++++ tools/include/libxl.h | 6 ++++++ tools/libs/light/libxl_types.idl | 1 + tools/libs/light/libxl_x86.c | 5 +++++ 4 files changed, 17 insertions(+) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index d34951edb98d..30c401588fef 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -2496,6 +2496,11 @@ ticks and hence enabling this group will ensure that= ticks will be consistent with use of an enlightened time source (B or B). =20 +=3Ditem B + +This set is the same as the B set but additionally supports +using synthetic timers in direct mode. + =3Ditem B =20 This set incorporates use of a hypercall for interprocessor interrupts. diff --git a/tools/include/libxl.h b/tools/include/libxl.h index 7c098edab663..5475530a5002 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -381,6 +381,12 @@ */ #define LIBXL_HAVE_VIRIDIAN_HCALL_IPI 1 =20 +/* + * LIBXL_HAVE_VIRIDIAN_STIMER_DIRECT indicates that the 'stimer_direct' va= lue + * is present in the viridian enlightenment enumeration. + */ +#define LIBXL_HAVE_VIRIDIAN_STIMER_DIRECT 1 + /* * LIBXL_HAVE_BUILDINFO_HVM_ACPI_LAPTOP_SLATE indicates that * libxl_domain_build_info has the u.hvm.acpi_laptop_slate field. diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_type= s.idl index a7893460f013..95075f04fe45 100644 --- a/tools/libs/light/libxl_types.idl +++ b/tools/libs/light/libxl_types.idl @@ -260,6 +260,7 @@ libxl_viridian_enlightenment =3D Enumeration("viridian_= enlightenment", [ (10, "ex_processor_masks"), (11, "no_vp_limit"), (12, "cpu_hotplug"), + (13, "stimer_direct"), ]) =20 libxl_hdtype =3D Enumeration("hdtype", [ diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c index 60d4e8661c93..9e8b48372d63 100644 --- a/tools/libs/light/libxl_x86.c +++ b/tools/libs/light/libxl_x86.c @@ -389,6 +389,11 @@ static int hvm_set_viridian_features(libxl__gc *gc, ui= nt32_t domid, if (libxl_bitmap_test(&enlightenments, LIBXL_VIRIDIAN_ENLIGHTENMENT_CP= U_HOTPLUG)) mask |=3D HVMPV_cpu_hotplug; =20 + if (libxl_bitmap_test(&enlightenments, + LIBXL_VIRIDIAN_ENLIGHTENMENT_STIMER_DIRECT)) + mask |=3D HVMPV_time_ref_count | HVMPV_synic | HVMPV_stimer | + HVMPV_stimer_direct; + if (mask !=3D 0 && xc_hvm_param_set(CTX->xch, domid, --=20 2.53.0